您的位置:首页 > 移动开发 > Android开发

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

2017-03-06 19:11 671 查看
在编译中大型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的最大性能。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息