自从android官方宣布不再提供eclipse adt的更新之后,android studio的推进速度超乎想象得快,不管是github上的源码分享,还是stackoverflow上的问题提问,几乎都是基于android studio开发环境的,而且官方的所有文档都做了调整更新,从guide,training到tools部分,都已经基于android studio来进行讲解说明,eclipse已经几乎找不到影子了,为了顺应趋势,我们也来学习android studio的开发环境使用。
首先,android studio是官方提供的专门针对android开发者的开发环境,它是基于IntelliJ IDEA的,说到IDEA我想很多人都不陌生,对比eclipse,同样是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,在启动速度、智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是秒eclipse几条街,被大家称为java开发的神器,而旗下的webstorm开发工具,也同样被开发者称为javascript开发神器。
下面我们来看一下官方列出的android studio的几个特点:
1.基于gradle的项目构建系统,这让我们在构建android项目的时候更加灵活
2.可以通过变量配置来生成多个版本的apk文件
3.拥有大量的代码模板可以快速地帮我们构建android项目
4.可进行拖拽的ui编辑器
5.内置link tools代码优化工具,可以捕捉性能,可用性,版本兼容等问题
这些特点看似跟eclipse大同小异,但是实际使用起来却让人眼前一亮,下面我们就来实际看看android studio的一些优秀特质:
项目和文件结构
首先我们使用android studio创建一个项目,创建过程省略xxx字,我们可以看到,我们创建的项目会默认按照android studio的android项目视图结构来显示,该视图是扁平化的结构,通过它,我们可以很清楚地看到我们的manifest配置文件目录,java代码目录,res资源文件目录以及对应的gradle项目构建配置文件,如下
java/
- android项目的java源代码目录manifests/
- 各个模块的mainfest文件的存放目录res/
- 项目的布局,资源等文件的存放目录Gradle Scripts/
- gradle的配置文件目录
如果你以为仅仅如此,那就错了,该视图除了默认的清晰的项目结构,还会自动对资源文件进行归类并放到一个通用目录下,如图所示:
android studio的android项目视图会自动将我们的针对不同屏幕密度的资源文件ic_launcher.png一起归类到ic_launcher.png 目录下,同时dimens.xml也被进行了归类,
这样便方便我们开发者更快速地查找、定位和比较对应的源文件,这在eclipse中是前所未见的。
当然了,我们硬盘上的项目并不是android视图结构所展现出来的那样,上图我们看到的目录结构只是虚拟化出来的,如果我们想查看硬盘上真实项目的结构,我们可以点击左上角的下拉框,切换到project视图
Android Studio的其他项目视图
紧接上面的操作,我们把android studio切换到了project 视图,如果你之前一直使用eclipse来做android项目开发,那你应该会注意到我们的android studio中创建出来的项目的目录结构跟eclipse完全不同,
在android studio中,每个项目实例都会包含一个或多个应用程序模块,而每个应用程序模块又会包含完整的源码集合模块,
包括 src/main/ 和 src/androidTest/ 文件夹,资源,项目构建文件和android的manifest配置文件这些,
大部分情况下,我们只需要更新src/main/目录下的项目代码来更新项目,同时通过修改build.gradle文件来配置我们的项目构建配置,
而 src/androidTest/ 这个目录则是留给我们来写测试用例的
我们还可以根据我们的需要自己选择对应的视图目录去关注项目的特定方向,android studio为我们提供了以下几种视图:
- Packages
- Project Files
- Scratches
- Problems
- Production
- Tests
例如,当我们的代码中出现错误时,我们可以选择problem视图,这时problem视图会直接将我们提示出错的文件列出来,这样我们就能直接定位错误文件从而进行修改完善,如图:
,我故意将MainActivity里的代码写错,此时,我将视图切换到problem,这时就会将我们的错误文件显示出来,是不是很人性化?
如果你想了解更多相关信息,可以参考 IntelliJ project organization 和 Managing Projects。
创建新文件
android studio给我们提供了相当方便的快捷键来添加代码文件或资源文件,
例如: 当你选择了layout布局目录或者布局文件,这个时候,只要你点击ALT+INSERT(MAC下为COMMAND + N),此时会默认弹出文件创建窗口,并且会将对应的文件类型放在第一个,当我们按下回车,此时我们只需要填写文件名等必要信息即可快速创建我们对应类型的文件了,java文件等同上。
是不是很方便,呵呵,接下来我们来了解下android studio中的android 构建系统
Android构建系统(Android Build System)
Android构建系统(Android Build System)是指用来构建、测试、运行和打包应用程序的工具,这套构建系统在android studio中取代了eclipse ADT中基于ant的系统,它可以作为android studio上一个完整的工具进行使用,同时也可以直接通过命令行来独立调用执行,
这套系统提供了一些特殊的功能:
1.自定义、构建和扩展构建过程
2.使用同一个项目创建具有不同功能的apk
3.在多个资源集之间重用代码
android构建系统的灵活性使得我们可以在不修改项目核心文件的基础上实现上述的功能,后面我们会进行详细的讲解
用来标识应用程序包的标识属性Application ID
跟eclipse不同,在android studio的项目中,我们需要在build.gradle文件中配置application id这个属性来对我们项目的package包做唯一标识,如下:
1 apply plugin: 'com.android.application' 2 3 android { 4 compileSdkVersion 19 5 buildToolsVersion "19.1" 6 7 defaultConfig { 8 applicationId "com.example.my.app" 9 minSdkVersion 15 10 targetSdkVersion 19 11 versionCode 1 12 versionName "1.0" 13 } 14 ... 15
当我们使用构建变量来发布项目时,构建系统允许我们针对不同的产品类型和构建类型定义唯一的applicationId
productFlavors { pro { applicationId = "com.example.my.pkg.pro" } free { applicationId = "com.example.my.pkg.free" } } buildTypes { debug { applicationIdSuffix ".debug" } } ....
applicationId虽然是用来唯一标识包名的,但是在manifest中我们还是得指定对应的package,manifest中的package是用来关联我们的R class文件和解决activity及service的注册问题的,如下:
package="com.example.app">
调试和性能
Android Virtual Device (AVD) Manager
AVD就是我们的android 虚拟设备管理工具及用来管理我们的android 模拟器,它预先提供了一些模拟器,这些模拟器基本都是目前比较受欢迎的一些配置,尺寸以及分辨率
我们只需要点击android studio工具栏上的按钮便可以打开我们的avd工具,如图:
我们可以根据需要直接选择对应的模拟器,也可以根据自己的需求自定义自己的模拟器,android studio的avd提供了非常人性化和直观的界面,如图所示:
内联调试
除了avd更加人性化之外,android studio在debug调试上也更加地方便直观,在调试视图中我们可以快速方便地查看内部变量值、关联的对象引用、方法的返回值、运算表达式以及工具的提示值等相关信息