Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具http://www.bieryun.com/2805.html
![]()
Android Studio,自Google2013年发布以来,就倍受Android开发者的喜爱,我们本书,就是基于Android Studio来进行案例演示的,大家都知道,Android Studio的前身是基于IntelliJ IDEA,而在此之前,我们开发Android一直以来都是以Eclipse用ADT插件的形式来开发了,可能也是Android的不断壮大,Google决定像苹果的Xcode或者微软的Visual Studio一样,也给自家的产品开发一套定制工具,所以Android Studio应运而生,现阶段,Android Studio正式版已经更新到2.X版本了,各方面的性能已经很稳定了,这就是我们用它来开发的理由
1.1官方简介
既然要使用Android Studio,所以我还是建议先看一下官方的介绍,这样,我们在后面讲一些使用方法的时候,就可以轻车熟路了
1.1.1 智能代码编辑器
![这里写图片描述]()
Android Studio 的核心是一个智能代码编辑器,可进行高级代码完成、重构和代码分析。
这款功能强大的代码编辑器可帮助您成为更高产的 Android 应用开发者。
1.1.2 代码模板和 GitHub 集成
![这里写图片描述]()
新项目向导让开始一个新项目变得前所未有的简单。
可使用适用于不同模式(如抽屉式导航栏和视图分页器)的模板代码开始项目,甚至可以从 GitHub 导入 Google 代码示例。
1.1.3 多屏幕应用开发
![这里写图片描述]()
构建适用于 Android 手机、平板电脑、Android Wear、Android TV、Android Auto 以及 Google Glass 的应用。
Android Studio 内全新的 Android 项目视图和模块支持让应用项目和资源管理变得更加轻松。
1.1.4 用于模拟所有形状和尺寸的虚拟设备
![这里写图片描述]()
Android Studio 预先配置了经过优化的模拟器映像。
经过更新和精简的虚拟设备管理器可为常见 Android 设备提供预定义设备配置文件。
1.1.5 Android 版本借助 Gradle 演进
![这里写图片描述]()
使用同一项目为您的 Android 应用创建多个具有不同功能的 APK。
使用 Maven 管理应用依赖项。
使用 Android Studio 或命令行构建 APK。
1.1.6 总结
- 这款由 JetBrains 推出并广受欢迎的 Java IDE 以 IntelliJ IDEA Community Edition 为基础构建
- 基于 Gradle 的灵活构建系统
- 构建变体和多 APK 生成
- 为 Google 服务和各种设备类型提供扩展模板支持
- 支持主题编辑的富布局编辑器
- 可捕捉性能、可用性、版本兼容性以及其他问题的 Lint 工具
- ProGuard 和应用签名功能
- 内置对 Google 云平台的支持,可轻松集成 Google Cloud Messaging 和应用引擎
1.2 下载安装
Android Studio的下载还是很简单的,不光官方可以下载,还有很多国内的资源网站都是可以下载的
官方地址:http://developer.android.com/sdk/index.html
但是这里还是要注意一下下载的版本
![这里写图片描述]()
这里MAC和Linux平台都是只有一个下载,但是Windows,却有三个,这里要说明一下这三个的区别了
- Android Studio安装包集成了SDK
- Android Studio安装包
- Android Studio包解压就能用
前两个分别是一个带有SDK,一个没有,第三个,他不需要安装,下载下来解压,就可以使用了,而且他有两个启动器,一个32位的,一个64位的
我们以集成了SDK的安装包为例,来演示一下怎么安装,其实也不难,只要你双击打开安装包,一直点下一步,中途会提示你是否导入项目,选择SDK的路径,下载一些需要的SDK支持包,就可以了,然后,我们的Android Studio就安装完成了
![这里写图片描述]()
1.3 配置设置
一款好的IDE,强大的前提下,还得符合自己的编码风格,所以,我们要对她进行一些设置,这样,才能体验到他的强大性
1.3.1 主题
Android Studio的黑色主题还是非常的符合程序员的风格的,所以很多人也会选择这个风格,我们进入设置(工具类上扳手图标),这里Theme默认是Default我们这里选择Darcula,然后点击Apply就可以应用这个黑色主题了
![这里写图片描述]()
1.3.2 编码风格
我们在编写代码的时候,一些字体颜色大小之类的都是要值得注意的地方,包括代码显示行数也能帮助我们调试bug
- 字体大小
我们进入Settings-Editor-Colors & Fonts-Font下,默认的两种主题我们是没办法修改的,我们需要自定义一个主题然后就可以修改了,操作如下: 我们点击Save As,提示你命名,你随便写个名字,就可以看到如图1.3.2所示
![这里写图片描述]()
这里的Primary font是字体,你可以选择自己喜欢的字体,Size为字体大小,Line Spacing是行距
当然,你也可以在Colors & Fonts目录下看到很多的设置,比如Consale Font控制台字体大小什么的,这个这里就不多赘述了
- 自动导包
手动导包还是有点麻烦的,我们本着能省就省的原则,设置一下自动导包的功能,路径为:Settings-Editor-General-Auto Import选项下,勾上以下几个选项
- XML
- JAVA
- insert imports on paste选择none
- show import popup
- optimize imports on the fly
- add unambiguous imports on the fly
- C/C++
- 显示代码行数
这个功能也是很重要的,我们可以勾选Settings-Editor-General-Appearance-show line numbers就可以了
1.3.3 智能化
这里我们可以来设置Android Studio的智能化来设置快捷键,自动代码提示,自动代码补全等功能
- 快捷键
Android Studio快捷键相较于Eclipse还是做了一些改动的,但是,Google做的很灵活,他提供了快捷键的选择,我们进入Setting-keymap里选择Eclipse,熟悉的快捷键就回来了
- 代码自动提示
代码自动提示设置起来也很方便,Eclipse上,你鼠标悬浮在代码上会弹出提示框,但是再Android Studio默认是没有的,因为如果电脑配置不是很高的话,这样会让界面很卡,如果你想打开这个功能我们可以进Settings-Editor-General,把show quick doc on mouse move勾上就可以了
- 不区分大小写
Android Studio在默认是区分大小写的,也就是你输入代码的时候如果你输入小写,可能代码不会提示,当然,我们也是可以设置不区分的,在Settings-Editor-General-Code Completion中,Case sensitive completion选择none就可以了
- 取消载入
这个功能我觉得特别棒,比如我正在做A的项目,然后关掉Android Studio,等下次进来的时候打开Android Studio他会自动载入这个A项目,但是我其实想去做B项目的,所以我们取消这个功能,让他每次都进入主页供我们项目选择,也很简单,进入Systems-System Settings下,把Reopen last project startup的勾去掉即可
1.3.4 Log
在开发中,Log是必不可少的一个环节,他可以反馈很多程序中的信息来帮助我们开发以及调试bug,所以现在网上也是有很多log的框架和工具类,在Android Studio中默认的Log其实不算是很清晰,我们可以自己给Log设置一些颜色来改变他的反馈交互,我们进入Settings-Editor-Colors & Fonts-Android Log下,我们可以看到各个等级的Log,只要我们把Use Inberited attributes的勾去掉,就可以更换颜色了,这里,提供一套我的配色方案供大家参考
- VERBOSE bfb9b9
- DEBUG 0374c0
- INFO 4bc332
- WARN c6c61e
- ERROR FF0006
- ASSERT a00308
1.3.5 导出/导入Settings
Android Studio每次安装都要设置这么多配置,着实让人头疼,这就又引出Android Studio的一个人性化的设计了,他可以把设置到处成jar包的形式保存起来,你要是新安装的Android Studio,可以直接导入这个jar,就不用这么浪费时间的去配置了,方法很简单,我们菜单栏-File
- Import Settings 导入设置
- Export Settings 导出设置
1.3.6 插件
Android Studio的插件还是非常方便我们进行开发的,不得不在一次感叹Android Studio的强大,比如Gsonformat,butterknife等,我们这里稍微介绍一下安装插件的几种方式,我们进入Settings-Plugins
![这里写图片描述]()
这里显示的是你安装的插件列表,下面三个按钮分别是
- install letBrains plugin… 官方插件
- Browse repositories… 第三方插件
- install plugin from disk… 本地插件
官方/第三方安装
我们点击install letBrains plugin/Browse repositories,这里是一个搜索页面,我们以Gsonformat为例,搜索Gsonformat。然后点击install,安装完成之后,我们就可以在列表中看到Gsonformat的身影了,第三方插件方法是一样的
本地插件安装
安装本地插件其实就是导入,插件以jar或者zip的形式存在,我们只要点击install plugin from disk,我们选中插件即可
1.4 Gradle
Gradle是什么?Gradle是Android Studio项目的构建系统,是以 Groovy 语言为基础,面向Java应用为主,基于DSL(领域特定语言)语法的自动化构建工具,所以这就出现了Android Studio的项目结构和Eclipse的不一样了,我们具体来看一下,我们在项目的Gradle Scripts文件下可以看到
图1.4.1
这些就是我们项目构建之后的一些Gradle配置清单,我们来具体的了解一下这些文件夹是干什么的
- build.gradle 构建文件
- build.gradle 模块构建文件
- gradle-wrapper.properties Gradle相关配置文件
- proguard-rules.pro 混淆文件
- gradle.propertles 配置文件
- setting.gradle 设置配置文件
- local.propertles sdk,ndk配置文件
而我们所要了解的也不是说全部,只要了解一下构建文件和模块构建文件就可以,我们会看一下构建文件里面都有些什么
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这里面,就是一个标准的Gradle构建系统的代码,我们来看
- jcenter() 存储库 可以更换
- classpath 依赖的Gradle版本
- repositories 所有项目的存储库
我们再来看一下模块构建系统
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.lgl.helloandroid"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}
这里,我们就要多关注一下了
- apply plugin :声明一个工程的类型
- compileSdkVersion : 最高API
- buildToolsVersion : 编译工具版本
- applicationId : 包名
- minSdkVersion : 最小API
- targetSdkVersion : 编译版本
- versionCode : 版本号
- versionName: 版本号(细分)
- buildTypes: 构建类型
- minifyEnabled : 是否压缩apk
- proguardFiles getDefaultProguardFile: 混淆配置文件
- dependencies : 依赖配置
- compile fileTree:依赖二进制文件
- compile : 远程二进制依赖
1.5 多渠道打包
国内的Android市场那么多,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不累死了,不过我们上节看了Gradle,这就不算什么事情了,这里也就衍生出一个新词汇——多渠道打包,顾名思义,就是一键打包多个渠道,关于多渠道打包使用的平台和工具网上也是有比较多的,貌似用的比较多的是友盟,详情大家自己去友盟的官网上看看吧!
AndroidManifest.xml中修改以下值:
<meta-data android:name="UMENG_CHANNEL" android:value="wandoujia" />
meta-data修改以下的样子:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。
build.gradle文件就利用productFlavors这样写:
productFlavors {
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
c360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
}
uc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
}
}
其中[UMENG_CHANNEL_VALUE: “wandoujia”]就是对应${UMENG_CHANNEL_VALUE}的值。
其实上面的代码还是有点多余,我们可以缩减
productFlavors {
wandoujia {}
baidu {}
c360 {}
uc {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
1.5.1 传统打包方式
我们来熟悉一下传统的打包方式,用过Eclipse的同学应该知道,在Eclipse里,我们只要Export Android就可以打包一个项目,其实Android Studio的方式也是类似,菜单栏——Build——Generate Signed APK
![这里写图片描述]()
这里要填写的其实和Eclipse差不多的,首先是Key Store的路径,我们没有,所有点Create new来创建
![这里写图片描述]()
我们把路径,密码什么的填好之后,按OK,现在他会帮我们自动填充了,如果没有,你就自己输,然后next,然后finish就可以了
![这里写图片描述]()
我们可以到app目录下找到我们打包的apk,同时也可以在我们指定的位置找到我们的签名文件xxx.jks