我生成的签名apk大小为30kB,当我将播放服务gcm添加到gradle文件时,apk大小增加到800kB。通过缩减资源,apk大小变为600kB。
如何进一步缩小应用程序大小?
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.test.mytest"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
zipAlignEnabled true
shrinkResources true
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services-gcm:8.1.0'
}
来自http://proguard.sourceforge.net/manual/examples.html#application
-优化通过3次
-攻击性过强
-重新包装类"
-允许访问修改
这些可能会有所帮助。(特别是3次通过)
查看您的build.gradle,您已经了解了源代码和资源优化。你缺少的是:
-
使用ResConfigs 删除未使用的配置
许多库,如support/Googleplay服务,都附带了可以翻译成太多语言的字符串资源。你可能并不打算支持他们所有人。使用以下方式,您可以控制大小:
安卓{
defaultConfig { ... resConfigs "en" }}
这将删除所有不适用于英语的资源。
-
稀疏配置
这通常适用于具有大量字符串的应用程序。对于某些功能,您可能会尝试在values-22/strings.xml下创建字符串。这种方法的问题是在每个可能的资源位置上为指针保留空间。因此,即使字符串不存在于新文件中,它仍然占用指针的空间,指针大约有4字节的空数据。您可以使用来自谷歌的名为ArscBlamer的工具来定位这种稀疏配置。
-
图像优化
您可以使用WebP和Zopfli压缩的PNG执行一些图像优化。你必须仔细权衡使用它们的负面影响。详细信息可在此处获取
有关这些方法的更多详细信息,请访问
此时,这就是该依赖项的大小。.apk的每一个依赖项的大小都会增加,原因是你的应用程序需要这些功能,而不能依赖于从远程位置访问它,以防设备没有互联网连接。
根据这一点(以及IntelliJ的评论),如果你配置你的proguard,你可以试着缩小一点。
还要考虑以下内容:缩小Google Play Services库,仅用于Google Analytics。