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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值