本文讲解目前主流的Android Studio的基本使用(以1.4为例),以及简单使用Gradle构建、签名打包apk。本文针对刚接触Android Studio的同学,老鸟飞过。
阅读本文,首先得明白Android Studio中的基本概念:
1. Eclipse 的 Workspace == Android Studio 的Project
2. Eclipse 的 Project == Android Studio 的Module
由于之前一直用 Eclipse 开发,AS 的默认快捷键和Eclipse是完全不同的风格,为了更好的掌握 AS,建议熟悉 AS 的默认快捷键。而对于那些养成习惯,实在是不想改的快捷键,当然还是保持原样了(如:Ctrl+Y->重做,Ctrl+左键->查看定义)
设置Ctrl+左键,查看定义:Settings->Keymap->搜 declaration
设置Ctrl+Y,重做:Settings->Keymap->搜 redo
从外部拷贝的代码,最好能让IDE自动导包
Settings->Editor->General->Auto Import->Java面板->All、勾选下面三项
两种方式:
快捷键 | 作用 | 对比Eclipse |
---|---|---|
CTRL+ALT+V | 自动补全 | CTRL+2+L+Enter |
CTRL+ALT+L | 代码格式化 | CTRL+SHIFT+F |
CTRL+H | 显示类继承关系 | CTRL+T |
CTRL+ALT+O | 自动整理import | CTRL+SHIFT+O |
CTRL+R | 替换 | CTRL+H |
CTRL+P | 提示参数 | ALT+/ |
CTRL+SHIFT+A | 符号查找(针对代码) | —— |
DOUBLE SHIFT | 全局查找(针对设置) | CTRL+F |
ALT+ENTER | 智能提示 | ALT+/ |
ALT+Insert | Getter和Setter | 右键->Source |
ALT+ENTER | 智能提示 | ALT+/ |
F8 | Step over(调试) | F6 |
CTRL+F9 | 构建Gradle | Run->clean |
CTRL+E | 最近修改文件 | —— |
CTRL+SHIFT+E | 最近操作的辅助面板 | —— |
CTRL+ALT+T | 包裹代码块 | SHIFT+ALT+Z |
CTRL+ALT+M | 抽取方法 | 右键-Refactor-ExtractMethod |
待补充….
拷贝 Jar 包,粘贴到 Module/libs 下,右键 Module->Open Module Settings->dependencies->点击+号->选择File dependency->选择libs下的Jar包->ok
拷贝 Jar 包,粘贴到 Module/libs 下,点击工具栏的“Sync Project with Gradle Files”同步Gradle。
利用Gradle 导入Jar 包,不需要事先下载,直接输入Jar包名即可。
步骤:
右键 Module->Open Module Settings->dependencies->点击+号->选择Linrary dependency
输入关键字(如:”Gson”),选中后点击ok。
Gradle将自动从jcenter中央仓库下载(https://bintray.com/bintray/jcenter),该配置在project下的build.gradle。
allprojects { repositories { jcenter() }
}
AS提供了一种完美的插件安装模式,类似VS的NuGet,安装方法如下:
Settings->Plugins
三种安装方式:
1. Install JetBrains plugin (安装 JetBrains 插件)
2. Broswer repositories (在线安装)
3. Install plugin from disk (从硬盘安装)
详细步骤请看:这里
推荐几个高效的插件
安装下面的插件,只需要在上述 Broswer repositories 输入名称,然后install plugin
注解生成器,直接根据 XML 布局生成对应的注解。使用说明
自动化Selector选择器生成器,一键生成所需要的selector。使用说明
自动根据json字符串,按照Gson的规范生成JavaBean,解放码农。使用说明
快速生成Android Parcelable文件,大大提高了效率。使用说明
这是一款内存泄露检测工具,使用说明
这块插件能静态分析,找出可能的bug。使用说明
一款速度可以和真机媲美的模拟器。官网
运行时调试是指在程序运行时,将进程设置为”调试进程“,直接进入debug模式。是开发中最常用的方式。不必每次调试部署应用,减少等待时间。
在Eclipse运行时调试需要打开ddms透视图,选中进程,点击左上角的小虫子。
步骤:
1. 部署应用程序到模拟器
2. 点击工具栏“Attach debugger to android process”
3. 设置断点
Module也就是Eclipse中项目的概念,下面是使用Module需要注意的地方。
创建 Library Module 并关联工程Module
创建:File->New->New Module,选择Android Library->Finish
关联:工程Module上右键->Open Module Setting->dependencies->点”+”号->Module dependency->选择->ok
删除 Module
第 1 步:Module上右键->Open Module Setting->点”-“号移除
第 2 步:Module上右键->delete 删除
导入Project Structure移除的Module
打开Project的build.gradle,添加一行代码:include ‘:[ModuleName]’
注意:此方法是导入在Project Structure移除但没有delete的Module
Gradle 是基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。详细解释,这里介绍两种打包方式。
菜单栏:Build->Generate Signed Apk
没有签名文件,则需要先创建,填写如下信息:
Key store path(生产key文件的保存路径 )
Key store password(key 存储密码)
Key alias(key别名)
Key password(key密码)
完成后点击保存,得到xxx.jks(Java Key Store)
Studio自带的打包方式可以自己制定apk输出路径
使用命令行需要对工程进行签名配置,步骤如下:
1. 准备好jks文件,如果没有就按上述步骤生成
2. File->Project Structure->选择工程Module
3. 打开 Signing 标签下点击”+”号,填写信息,选择jks
4. 打开 Build Types ,点击Release,选择Signing config,选择签名
5. ok
接着,打开 Terminal 面板,输入:
gradlew assembleRelease
构建方式 | Studio 方式 | Gradle 方式 |
---|---|---|
自动程序 | 全自动 | 纯手动 |
输出路径 | Project\ | Project\Module\build\outputs\apk\ |
配置签名 | 事先配置签名 | 打包时再配置 |
注意:如果没有配置 sign,直接使用 gradlew
assembleRelease,则会得到一个app-release-unsigned.apk 该文件无法genymotion上安装。
执行gradlew assembleRelease实际上做了做了哪些事:
1. 运行 gradle-wrapper.jar
2. gradle-wrapper.jar 根据 gradle-wrapper.properties 文件的配置找到了系统中对应的gradle目录/bin/gradle
3. 用系统的gradle,执行assembleRelease
这样做的好处,高度解耦,不需要配置环境变量。
在 build/generated/source/buildConfig 下分别有debug和release两个目录,各自含有BuildConfig.java。 如果当前编译环境(Build Variants)为debug,则使用debug\BuildConfig, 当前环境为 release,则使用release\BuildConfig
编译环境通过“Build Variants“工具面板进行设置
我们可以利用BuildConfig的这一特性,控制日志输出,代码如下:
if (BuildConfig.DEBUG){
Log.d(TAG, "...");
}
// 当前Module的类型
// 普通 Module :'com.android.application'
// Library Module: 'com.android.library'
apply plugin: 'com.android.application'
android {
//签名文件配置信息
signingConfigs {
// 别名
keyAlias 'myhome_alias'
// key密码
keyPassword '123456'
// 存储路径
storeFile file('xxx.jks')
// 存储密码
storePassword '123456'
}
compileSdkVersion 23
// 是你SDK里的编译工具版本号(%SDK_DIR%\build-tools)
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "cn.ifavor.home"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
// 是否混淆
minifyEnabled false
// 混淆规则文件,前一个是sdk的,后一个是自己的
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 上面配置的签名
signingConfig signingConfigs.config_myhome
}
}
}
// 各种依赖库
// compile fileTree:引入jar
// compile project:引入Library Module
// compile 第三方库
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:cardview-v7:23.1.1'
compile 'com.google.code.gson:gson:2.4'
}
buildscript {
repositories {
jcenter()
}
dependencies {
// 当前AS的Gradle插件,此插件和Gradle相当于ADT和SDK
classpath 'com.android.tools.build:gradle:1.3.0'
}
}
// 配置中央仓库
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
// 将某个Module和该工作空间(Project) 建立联系
include ':app'