Android(安卓)开发之Android(安卓)Studio
不断更新中…
一、插件的安装
1、alibaba java coding guidelines
2、codota
3、git安装
4、sonar
二、build运行
1、初探
随着项目变的越来越大,特别是使用了组件化之后,build需要的时间越来越久,越来越慢了。项目现在运行一次40s,一天编译很多次的情况下,无法做任何事,是多么浪费时间。
网上一般有以下几种方式解决:
1)org.gradle.daemon = true
2)org.gradle.parallel = true
3)设置gradle为offline状态
4)设置VM heap为2G
验证了下,依然很慢,事实上,Android Studio已经为我们优化了很多。
网上看到一个同学,XP系统,内存2G问能否解决,估计只能换设备了。
instant run也是可以更快些的,可以开启试试,缺陷时有时候修改了内容,并不能看到效果,依然是未修改前的状态,不知道现在Google有没有优化。
类似ButterKnife用到注解处理器,也是造成build慢的原因,由于类似注解比较好用,不可能不适用,但我们可以选择在某些module中不使用。
2、分析原因
可以分析原因,看看哪部分耗时。只需要添加 –profile :
就能创建一个profile文件,该文件位于工程下:build/reports/profile
该文件类似如下:
3、解决办法:
通过分析上图生成的profile文件,可以看出造成慢的原因如下:
- 一些长时间执行任务
- multiDexEnabled的原因
- 依赖太多
每个module都会生成一个dex。模块化虽然拖累了速度,但有效提高了编译效率,测试更容易,团队合作方便并行开发。
1)禁用耗时运行任务
tasks.whenTaskAdded { task -> if (task.name.startsWith(":zxing:") || task.name.startsWith(":share-lib:")) { task.enabled = false }}
2)缩小项目
在Dev模式下缩小项目,可以禁用一些module,例如:
no-op项目是个空的module,我们在debug状态编译的时候引入空的module:
debugCompile(project(':share-lib-no-op')) {}releaseCompile(project(':share-lib')) {}debugCompile(project(':zxing-no-op')) {}releaseCompile(project(':zxing')) {}
share-lib做实际的工作:
public class ShareProxyImpl { public void sendShare(ShareRequestDO request, Activity activity) { new ISShareController().startShare(activity, new ShareRequest(request)); } public void onActivityResult(Context context, int requestCode, int resultCode, Intent data) { ISShareController.onActivityResult(requestCode, resultCode, data); }}
share-lib-no-op不做任何事:
public class ShareProxyImpl { public void sendShare(ShareRequestDO request, Activity activity) { Toast.makeText(activity, "ShareProxyImpl:no-op:sendShare", Toast.LENGTH_SHORT).show(); } public void onActivityResult(Context context, int requestCode, int resultCode, Intent data) { Toast.makeText(context, "ShareProxyImpl:no-op:onActivityResult", Toast.LENGTH_SHORT).show(); }}
用这种方式就可以减少很多的依赖,一旦项目缩小了,就不需要在debug模式下设置multiDexEnabled。
这种方式可以显著的提升编译速度,缺点就是麻烦,需要深入代码层修改。
更多相关文章
- Android(安卓)studio使用与设置
- Android:Android(安卓)Studio配置Kotlin
- [Android]滑动刷新ListView——android-pulltorefresh使用方法解
- Android(安卓)Gradle编译学习日记之一(搭建 Gradle 环境以及编译
- android中通过拨号键打开contacts相关界面的流程分析
- 视频教程-Android(安卓)IM 即时通讯实战项目-Android
- Android(安卓)安装配置及其项目开发
- Android状态栏
- Android(安卓)工程中各种文件的介绍