AndroidStudio重构之路,我们重新来了解一下Google官方的Android开发工具 AndroidStudio,自Google2013年发布以来,就倍受Android开发者的喜爱,我们本书,就是基于AndroidStudio来进行案例演示的,大家都知道,AndroidStudio的前身是基于IntelliJIDEA,而在此之前,我们开发Android一直以来都是以Eclipse用ADT插件的形式来开发了,可能也是Android的不断壮大,Google决定像苹果的Xcode或者微软的VisualStudio一样,也给自家的产品开发一套定制工具,所以AndroidStudio应运而生,现阶段,AndroidStudio正式版已经更新到2.X版本了,各方面的性能已经很稳定了,这就是我们用它来开发的理由 1.1官方简介
既然要使用AndroidStudio,所以我还是建议先看一下官方的介绍,这样,我们在后面讲一些使用方法的时候,就可以轻车熟路了 1.1.1智能代码编辑器
AndroidStudio的核心是一个智能代码编辑器,可进行高级代码完成、重构和代码分析。
这款功能强大的代码编辑器可帮助您成为更高产的Android应用开发者。 1.1.2代码模板和GitHub集成
新项目向导让开始一个新项目变得前所未有的简单。
可使用适用于不同模式(如抽屉式导航栏和视图分页器)的模板代码开始项目,甚至可以从GitHub导入Google代码示例。 1.1.3多屏幕应用开发
构建适用于Android手机、平板电脑、AndroidWear、AndroidTV、AndroidAuto以及GoogleGlass的应用。
AndroidStudio内全新的Android项目视图和模块支持让应用项目和资源管理变得更加轻松。 1.1.4用于模拟所有形状和尺寸的虚拟设备
AndroidStudio预先配置了经过优化的模拟器映像。
经过更新和精简的虚拟设备管理器可为常见Android设备提供预定义设备配置文件。 1.1.5Android版本借助Gradle演进
使用同一项目为您的Android应用创建多个具有不同功能的APK。
使用Maven管理应用依赖项。
使用AndroidStudio或命令行构建APK。 1.1.6总结
这款由JetBrains推出并广受欢迎的JavaIDE以IntelliJIDEACommunityEdition为基础构建 基于Gradle的灵活构建系统 构建变体和多APK生成 为Google服务和各种设备类型提供扩展模板支持 支持主题编辑的富布局编辑器 可捕捉性能、可用性、版本兼容性以及其他问题的Lint工具 ProGuard和应用签名功能 内置对Google云平台的支持,可轻松集成GoogleCloudMessaging和应用引擎 1.2下载安装
AndroidStudio的下载还是很简单的,不光官方可以下载,还有很多国内的资源网站都是可以下载的
官方地址:http://developer.android.com/sdk/index.html
但是这里还是要注意一下下载的版本
这里MAC和Linux平台都是只有一个下载,但是Windows,却有三个,这里要说明一下这三个的区别了 AndroidStudio安装包集成了SDK AndroidStudio安装包 AndroidStudio包解压就能用 前两个分别是一个带有SDK,一个没有,第三个,他不需要安装,下载下来解压,就可以使用了,而且他有两个启动器,一个32位的,一个64位的
我们以集成了SDK的安装包为例,来演示一下怎么安装,其实也不难,只要你双击打开安装包,一直点下一步,中途会提示你是否导入项目,选择SDK的路径,下载一些需要的SDK支持包,就可以了,然后,我们的AndroidStudio就安装完成了
1.3配置设置
一款好的IDE,强大的前提下,还得符合自己的编码风格,所以,我们要对她进行一些设置,这样,才能体验到他的强大性 1.3.1主题
AndroidStudio的黑色主题还是非常的符合程序员的风格的,所以很多人也会选择这个风格,我们进入设置(工具类上扳手图标),这里Theme默认是Default我们这里选择Darcula,然后点击Apply就可以应用这个黑色主题了
1.3.2编码风格
我们在编写代码的时候,一些字体颜色大小之类的都是要值得注意的地方,包括代码显示行数也能帮助我们调试bug 字体大小 我们进入Settings-Editor-Colors&Fonts-Font下,默认的两种主题我们是没办法修改的,我们需要自定义一个主题然后就可以修改了,操作如下:我们点击SaveAs,提示你命名,你随便写个名字,就可以看到如图1.3.2所示
这里的Primaryfont是字体,你可以选择自己喜欢的字体,Size为字体大小,LineSpacing是行距
当然,你也可以在Colors&Fonts目录下看到很多的设置,比如ConsaleFont控制台字体大小什么的,这个这里就不多赘述了 自动导包
手动导包还是有点麻烦的,我们本着能省就省的原则,设置一下自动导包的功能,路径为:Settings-Editor-General-AutoImport选项下,勾上以下几个选项 XML showimportpopup JAVA insertimportsonpaste选择none showimportpopup optimizeimportsonthefly addunambiguousimportsonthefly C/C++ showimportpopup 显示代码行数
这个功能也是很重要的,我们可以勾选Settings-Editor-General-Appearance-showlinenumbers就可以了 1.3.3智能化
这里我们可以来设置AndroidStudio的智能化来设置快捷键,自动代码提示,自动代码补全等功能 快捷键
AndroidStudio快捷键相较于Eclipse还是做了一些改动的,但是,Google做的很灵活,他提供了快捷键的选择,我们进入Setting-keymap里选择Eclipse,熟悉的快捷键就回来了 代码自动提示
代码自动提示设置起来也很方便,Eclipse上,你鼠标悬浮在代码上会弹出提示框,但是再AndroidStudio默认是没有的,因为如果电脑配置不是很高的话,这样会让界面很卡,如果你想打开这个功能我们可以进Settings-Editor-General,把showquickdoconmousemove勾上就可以了 不区分大小写
AndroidStudio在默认是区分大小写的,也就是你输入代码的时候如果你输入小写,可能代码不会提示,当然,我们也是可以设置不区分的,在Settings-Editor-General-CodeCompletion中,Casesensitivecompletion选择none就可以了 取消载入
这个功能我觉得特别棒,比如我正在做A的项目,然后关掉AndroidStudio,等下次进来的时候打开AndroidStudio他会自动载入这个A项目,但是我其实想去做B项目的,所以我们取消这个功能,让他每次都进入主页供我们项目选择,也很简单,进入Systems-SystemSettings下,把Reopenlastprojectstartup的勾去掉即可 1.3.4Log
在开发中,Log是必不可少的一个环节,他可以反馈很多程序中的信息来帮助我们开发以及调试bug,所以现在网上也是有很多log的框架和工具类,在AndroidStudio中默认的Log其实不算是很清晰,我们可以自己给Log设置一些颜色来改变他的反馈交互,我们进入Settings-Editor-Colors&Fonts-AndroidLog下,我们可以看到各个等级的Log,只要我们把UseInberitedattributes的勾去掉,就可以更换颜色了,这里,提供一套我的配色方案供大家参考 VERBOSEbfb9b9 DEBUG0374c0 INFO4bc332 WARNc6c61e ERRORFF0006 ASSERTa00308 1.3.5导出/导入Settings
AndroidStudio每次安装都要设置这么多配置,着实让人头疼,这就又引出AndroidStudio的一个人性化的设计了,他可以把设置到处成jar包的形式保存起来,你要是新安装的AndroidStudio,可以直接导入这个jar,就不用这么浪费时间的去配置了,方法很简单,我们菜单栏-File ImportSettings导入设置 ExportSettings导出设置 1.3.6插件
AndroidStudio的插件还是非常方便我们进行开发的,不得不在一次感叹AndroidStudio的强大,比如Gsonformat,butterknife等,我们这里稍微介绍一下安装插件的几种方式,我们进入Settings-Plugins
这里显示的是你安装的插件列表,下面三个按钮分别是 installletBrainsplugin…官方插件 Browserepositories…第三方插件 installpluginfromdisk…本地插件 官方/第三方安装
我们点击installletBrainsplugin/Browserepositories,这里是一个搜索页面,我们以Gsonformat为例,搜索Gsonformat。然后点击install,安装完成之后,我们就可以在列表中看到Gsonformat的身影了,第三方插件方法是一样的 本地插件安装
安装本地插件其实就是导入,插件以jar或者zip的形式存在,我们只要点击installpluginfromdisk,我们选中插件即可 1.4Gradle
Gradle是什么?Gradle是AndroidStudio项目的构建系统,是以Groovy语言为基础,面向Java应用为主,基于DSL(领域特定语言)语法的自动化构建工具,所以这就出现了AndroidStudio的项目结构和Eclipse的不一样了,我们具体来看一下,我们在项目的GradleScripts文件下可以看到 图1.4.1
这些就是我们项目构建之后的一些Gradle配置清单,我们来具体的了解一下这些文件夹是干什么的 build.gradle构建文件 build.gradle模块构建文件 gradle-wrapper.propertiesGradle相关配置文件 proguard-rules.pro混淆文件 gradle.propertles配置文件 setting.gradle设置配置文件 local.propertlessdk,ndk配置文件 而我们所要了解的也不是说全部,只要了解一下构建文件和模块构建文件就可以,我们会看一下构建文件里面都有些什么 //Top-levelbuildfilewhereyoucanaddconfigurationoptionscommontoallsub-projects/modules.
buildscript{ repositories{ jcenter() } dependencies{ classpath''com.android.tools.build:gradle:2.1.0''
//NOTE:Donotplaceyourapplicationdependencieshere;theybelong //intheindividualmodulebuilwww.shanxiwang.netd.gradlefiles } }
allprojects{ repositories{ jcenter() } }
taskclean(type:Delete){ deleterootProject.buildDir }
这里面,就是一个标准的Gradle构建系统的代码,我们来看 jcenter()存储库可以更换 classpath依赖的Gradle版本 repositories所有项目的存储库 我们再来看一下模块构建系统 applyplugin:''com.android.application''
android{ compileSdkVersion23 buildToolsVersion"23.0.3"
defaultConfig{ applicationId"com.lgl.helloandroid" minSdkVersion15 targetSdkVersion23 versionCode1 versionName"1.0" } buildTypes{ release{ minifyEnabledfalse proguardFilesgetDefaultProguardFile(''proguard-android.txt''),''proguard-rules.pro'' } } }
dependencies{ compilefileTree(dir:''libs'',include:[''.jar'']) testCompile''junit:junit:4.12'' compile''com.android.support:appcompat-v7:23.3.0'' }
这里,我们就要多关注一下了 applyplugin:声明一个工程的类型 compileSdkVersion:最高API buildToolsVersion:编译工具版本 applicationId:包名 minSdkVersion:最小API targetSdkVersion:编译版本 versionCode:版本号 versionName:版本号(细分) buildTypes:构建类型 minifyEnabled:是否压缩apk proguardFilesgetDefaultProguardFile:混淆配置文件 dependencies:依赖配置 compilefileTree:依赖二进制文件 compile:远程二进制依赖 1.5多渠道打包
国内的Android市场那么多,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不累死了,不过我们上节看了Gradle,这就不算什么事情了,这里也就衍生出一个新词汇——多渠道打包,顾名思义,就是一键打包多个渠道,关于多渠道打包使用的平台和工具网上也是有比较多的,貌似用的比较多的是友盟,详情大家自己去友盟的官网上看看吧!
AndroidManifest.xml中修改以下值:
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里,我们只要ExportAndroid就可以打包一个项目,其实AndroidStudio的方式也是类似,菜单栏——Build——GenerateSignedAPK
这里要填写的其实和Eclipse差不多的,首先是KeyStore的路径,我们没有,所有点Createnew来创建
我们把路径,密码什么的填好之后,按OK,现在他会帮我们自动填充了,如果没有,你就自己输,然后next,然后finish就可以了
我们可以到app目录下找到我们打包的apk,同时也可以在我们指定的位置找到我们的签名文件xxx.jks |
|