Android Studio是一年前Google I/O上推出的一款Android开发IDE,他基于JetBrains’ IntelliJ IDEA,目前还在preview阶段。增强了布局拖拽和预览功能,使用了新的构建系统Gradle,增加了android相关的重构和quick fix功能。之前听说用Android Studio来构建应用程序的时候会很方便,而且在学习常用Android开源项目的时候看到大部分都提供了对Android Studio的支持,所以就折腾了下,分享点经验给大家。
大多数Android Studio尝鲜者遇到的最大的障碍是Gradle,启动的时候非常慢,他需要从Maven库下东西,网络不稳定,这就坑了,不知道别人怎么解决的,我是FQ搞的,光这一点就阻止了Android Studio大陆范围内推广,而且多人合作的时候同伴不一定习惯这个东西。网络的问题如果解决后,就需要了解Gradle的构建原理,这也需要费一番功夫的,去年谷歌I/O上有40分钟的视频来说明他是怎么工作的,链接在这里,讲的很清楚,在Linkedin上查到主讲人的头衔是”Tech Lead for the Android SDK at Google”。
你可以新建一个HelloWorld工程感性的认识一下Android Studio的使用。你肯定会在这个过程拿他和Eclipse做对比,很可惜的是,他们的目录结构不像AppCode和Xcode一样目录完全兼容可以相互无缝替换,不能直接import对方的工程,虽然现在Eclipse提供了功能可以把现有项目导出来再导入到Android Studio中,但是这个过程并不是无痛的,也会有些小问题,很麻烦;反过来,要把Android Studio中的项目导出来到Eclipse中,那就是纯属找事了。
Android Studio的项目包含一个或者多个Module,这里的Module可以是Android应用,也可以是库,一般来说,新建一个项目也自动会新建一个Module,编译的时候就会编译这个Module,生成需要的apk。当我们需要引入一个开源库的时候怎么办呢?可以新建一个Module,选定类型为‘android-library’,然后让主要的Module依赖于这个就行了(这个过程就像Eclipse上一样,不同的项目可以有引用的关系)。然而Android Studio是在背后做了一些东西的,其实每个Module都有一个build.gradle文件,用来描述这个Module构建时候需要的条件,整个项目也有一个build.gradle文件,是所有Module构建时需要满足的条件,最后项目还有个settings.gradle,记录了项目里面有哪些Module。你增减Module,修改依赖关系的时候,其实就是在修改这几个文件。
其实最方便的东西就是我接下来要说的,很多开源项目都应集成到了maven库当中,我们可以很方便的把这些项目引用到自己的项目中,而不用再去github克隆代码再拷贝再配置了。我们拿下拉刷新组件ActionBar-PullToRefresh为例,我们只需要在需要他的Module的build.gradle中dependencies里添加一句话”compile ‘com.github.chrisbanes.actionbarpulltorefresh:library:+'”就行了。Android Studio会自己去下载,方便不方便你动手试试就知道了。如果你不知道maven库里有没有,可以在相应的Module上点击右键,选择“Open Module Setting”,找到dependencies选项卡,在下面点击加号,选择“Library Dependency”,然后搜一下就行,其实常用的android-async-http,ActionBarSherlock,Android-Universal-Image-Loader 等等都是有的,你不用再在git仓库里加一堆冗余的代码了,只需要在build.gradle增加一行就行,何乐而不为?
在平时开发Android应用的过程中,难免会用到android.support.v4.jar,一般的做法是把他从SDK放到项目的libs目录下,避免别人拷贝代码后不能编译通过。然后在引用多个开源项目的时候,会发生版本不一冲突的情况,一般的做法是把冲突的jar包替换成同一个,但是在你不知道怎么解决的时候产生的错误信息是很令人沮丧的,幸运的是,在Android Studio中这种情况不会出现了,你只需要在对应Module的build.gradle的dependencies里添加一句话就可以了“compile ‘com.android.support:support-v4:+’”,多个模块引用他的时候不会出现冲突。
说了这么多Gradle相关的的,再说说IDE本身的一些优缺点吧:
启动和编译比较慢。我也不知道是什么原因,用的mac,固态硬盘,按理说应该很嗨才对。每一次对build.gradle的更改都会产生Android Studio一个操作‘sync’,然后就产生界面就卡死了。这个算是bug吧,而且时不时会出现Internal Error,还好出现频率可以接受。编译也比较慢,那个”Tech Lead for the Android SDK”需要加把劲了。
界面好看。用过几款Jetbrains的产品,界面还是挺舒服的,最然可用的只有两套主题,之前用Eclipse的时候,我实在忍受不了界面上浓浓的java UI气息,而且图标还会有锯齿边缘。
方便的颜色选择器。在布局文件中,比如你有用到android:background=”#ffffffff”,那么在这一行的最左边会出现一个框框,里面就是白色的,你点击这个白色框框,弹出一个对话框用来选择颜色,十分直观。
直接显示资源内容。如果你有用到android:layout_width=”@dimen/image_width”,Android Studio会把image_width的值直接替换到引号里面。
DDMS集成的不太好。打开Android Monitor,赫然一个awt界面出现在眼前,毫无美感呀。但是基本的logcat,截屏,debug功能都是有的。
总体来说,Android Studio还是符合个人开发者的需求的,我自己平时写点小东西的话都用Android Studio,相信他会越来越好的,期待正式版出来的那一天。
ps:下次这种内容的东西考虑直接录一个短视频放过来,通篇文字不知道会不会有人烦:-D