不断更新中…

一、插件的安装

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。
这种方式可以显著的提升编译速度,缺点就是麻烦,需要深入代码层修改。

更多相关文章

  1. Android(安卓)studio使用与设置
  2. Android:Android(安卓)Studio配置Kotlin
  3. [Android]滑动刷新ListView——android-pulltorefresh使用方法解
  4. Android(安卓)Gradle编译学习日记之一(搭建 Gradle 环境以及编译
  5. android中通过拨号键打开contacts相关界面的流程分析
  6. 视频教程-Android(安卓)IM 即时通讯实战项目-Android
  7. Android(安卓)安装配置及其项目开发
  8. Android状态栏
  9. Android(安卓)工程中各种文件的介绍

随机推荐

  1. Android(安卓)之 Window、WindowManager
  2. Android(安卓)1.5和Android(安卓)2.1在相
  3. android区分pad还是phone设备
  4. Android(安卓)实现自适应正方形GridView
  5. Android命令行下运行JAVA程序之StatusBar
  6. Android(安卓)v4、v7、v13 的区别
  7. Android(安卓)adb forward转发TCP端口连
  8. 谈谈关于Android视频编码的那些坑
  9. Unity5与Android交互通信(使用Android(安
  10. Android简介