使用Ramdisk加速Android工程的编译 (AndroidStudio Gradle)

在编译中大型Android工程时,编译慢是一个很头疼的问题,大量的第三方库和模块导致工程编译慢。将模块打成aar或发布到私有maven上可能稍微缓解编译慢的问题。

AS功能强大,但硬盘的性能却是个很大的瓶颈。即使换了SSD,编译速度还不是提升特别客观。

当然,今年Intel的XPoint技术的闪腾存储器又会进一步提升系统性能(要换支持M.2的主板,还不如加大内存)


1、安装Ramdisk。

     推荐使用 SoftPerfect RAM Disk,目前性能最好的Ramdisk,编译速度至少提升一倍以上(以我目前项目而言,clean重编至少要10分钟,现在只要2分多钟,日常修改编译跑一下平均半分钟不到,当然你还可以开启Instant Run)。

     官网:https://www.softperfect.com/products/ramdisk/    目前最新的4.0.2只有30天试用期,使用3.4.8的已经足够了。


2、创建镜像盘。(可选)

      主要是能将数据保存到硬盘上,以便开机后能恢复数据,这个过程在关机或者手动触发。当然如果项目编译快的话,可以不用镜像保存。

   


       新建镜像文件,选择你要保存的位置(一般第一分区速度是最快的),参照你项目所有build目录的大小,设置镜像大小。不要太大,否则会占用太多用不到的内存,也不能太小,以免编译时出现空间不足。



3、加载到内存。

     点击工具栏上的 + 号,选择镜像文件(如果你使用的话),勾选保存内容到镜像,再选择下需要的盘符,最后点确定,创建内存盘。



4、配置工程。

     在工程根目录下新建 ramdisk.gradle,添加一下脚本:

ext {
    buildRamdiskDir = null
}

String getRamdiskDir() {
    Properties properties = new Properties()
    File propertyFile = new File(rootDir.getAbsolutePath() + "/local.properties")
    if (propertyFile.exists()) {
        properties.load(propertyFile.newDataInputStream())
        return properties.getProperty('ramdisk.dir')
    }

    return null
}

allprojects {
    if (buildRamdiskDir == null) {
        buildRamdiskDir = getRamdiskDir()
        if (buildRamdiskDir == null) {
            buildRamdiskDir = "";
        }
        System.err.println("Build Ramdisk: " + buildRamdiskDir)
    }

    if (buildRamdiskDir != null && buildRamdiskDir.length() > 0) {
        buildDir = "${buildRamdiskDir}/build/${rootProject.name}/${project.name}"
    }
}


在根目录的build.gradle中第一行增加 : 

apply from: 'ramdisk.gradle'


在根目录的 local.properties(没有的,创建)中增加:

ramdisk.dir=H\:\\

其中盘符H为第3步中配置的盘符,不同的项目最好使用不同的镜像文件和盘符,以便快速卸载腾出内存空间。


5、在关机和休眠之前,记得选中内存盘,点下保存。


        以上,你就可以几乎发挥电脑的性能来编译工程。当然,如果内存盘够大的话,可以把整个工程目录都放在ramdisk中,那无疑是最快的。


        一般而言,内存盘的速度是HDD的50倍以上,SDD的10几倍,而且比SSD好的是不会抢宝贵的IO资源,发挥CPU的最大性能。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值