检查你app中的代码,将可模块化的代码采取一个Android Library module,经由过程这种方法模块化你的代码将许可构建体系仅仅只编译那些有修改的模块,并将其构建结不雅缓存下来以被后面的构建应用。同样的设备了>
- android {
- ...
- dexOptions {
- preDexLibraries true
- maxProcessCount 8
- // Instead of setting the heap size for the DEX process, increase Gradle's
- // heap size to enable dex-in-process. To learm more, read the next section.
- // javaMaxHeapSize "2048m"
- }
- }
你应当增长它们的值来测试一下这些设置,然后经由过程profile不雅察效不雅,当你为这个过程分派太多资本的时刻,可能会获得一个负面的影响。
10 . 增长Gradle的堆大年夜小 和开启 dex-in-process
Dex-in-process 允很多个DEX 过程运行在一个零丁的VM 中,这使得增量构建和清理构建变得更快。默认情况下,经由过程Android Studio2.1 或者更高版本创建的新项目分派了足够的内存来开启这个特点,如不雅你没有应用Android Studio 2.1 或者更高的版本创建项目,你须要给Gradle后台驻扎法度榜样设置至少1536MB 的堆大年夜小内存。默认如下图:
gradle_heap.png
下面的例子在gradle.properties中将Gradle 堆内存大年夜小设置为 2048MB:
- org.gradle.jvmargs = -Xmx2048m //设置Gradle 堆大年夜小 2G
在一些大年夜型的项目上,为Gradle堆分派更多的内存当然更有利,然而,如不雅你用的是一个小内存的机械,你可能须要给IDE设备更少的内存,想知道若何改变分派给IDE资本的数量和Gradle 对构建表示的影响,请看profiling your build这一条。
如不雅在你的Module build.gradle 文件中为android.dexOptions.javaMaxHeapSize定义了一个值,那么你须要给Gradle的堆大年夜小设置 的值为比javaMaxHeapSize多512MB,并且知足至少为1536MB。举个例子:在build.gradle中设置javaMaxHeapSize `为1280MB,那么你就要给Gradle堆大年夜小设置 至少1792MB(1280 + 512),当然了,设置大年夜一点更佳。
build.gradle:
- dexOptions {
- javaMaxHeapSize "1280m"
- }
gradle.properties:
- org.gradle.jvmargs = -Xmx1792m
11 . 将图片转为 WebP格局
WebP是一种图片文件格局,它供给了像JPEG一样的有损紧缩和像PNG一样的透明支撑,然则同时它的紧缩质量比JPEG或者PNG任何一个都更好,减小Image文件的大年夜小,而不消在构建时髦紧缩,是以它能进步构建速度,尤其是你的APP应用了大年夜量的图片资本。然则有一点,在解压WebP格局的图片的时刻,你的设备的CPU应用将小幅度增长。 用Android Studio 可以很便利的转WebP格局,详情请看convert your images to WebP.
小提示:此外,将工程琅绫擎的图片转为webP格局也是优化APK体积的一个偏向,webp是Android 原生4.0就开端支撑的,它能供给和JPEG和PNG雷同质量的图片然则size 更小。没有任何适配问题。
12 . 禁止应用 PNG crunching
如不雅你不克不及(或者不想)转换你的PNG格局图片为WebP,你仍然可以经由过程禁止每次构建app都主动紧缩图片来晋升构建速度,要禁止这项优化,在build.gradle 的添加如下代码:
- android {
- ...
- aaptOptions {
- cruncherEnabled false
- }
- }
生成和查看 build profile ,履行下面步调:
13 . 应用 Instant Run
Instant Run明显的削减了更新app的时光,它经由过程推送肯定的代码、资本变革而不消构建一个新的app ,并且在一些情况下,甚至不消重启当前的activity,在代码变革后,应用Instant Run 经由过程点击Apply Changes(黄色⚡搁笔)。当你做了如下几步,它会默认打开: