我生成的签名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'
}
答案 0 :(得分:2)
来自http://proguard.sourceforge.net/manual/examples.html#application
这些可能会有所帮助。 (特别是3次通过)-optimizationpasses 3
-overloadaggressively
-repackageclasses''
-allowaccessmodification
答案 1 :(得分:0)
目前是那种依赖的大小。 .apk为每个依赖项增加大小的原因是因为您的应用程序需要这些依赖项,并且不能依赖于从远程位置访问它,因为设备没有Internet连接。
根据this,(和IntelliJ的评论),如果你配置你的proguard,你可以尝试减少一点。
另请考虑以下事项:Shrink Google Play Services library for use with Google Analytics only。
答案 2 :(得分:0)
查看build.gradle,您已经了解了源代码和资源优化。你缺少的东西是:
使用ResConfigs删除未使用的配置
许多图书馆(如支持/ Google Play服务)都附带了太多语言的字符串资源。您可能不打算支持所有这些。使用以下方法,您可以控制大小:
android {
defaultConfig {
...
resConfigs "en"
}}
这将删除所有不适合英语的资源。
稀疏配置
这通常适用于具有大量字符串的应用程序。在某些功能的情况下,您可能想要在值-22 / strings.xml下创建字符串。这种方法的问题是为每个可能的资源位置预留指针空间。因此,即使新文件中不存在该字符串,它仍然占用指针空间,该指针大约是4字节的空数据。您可以使用Google中名为ArscBlamer的工具来查找此稀疏配置。
图片优化
您可以使用WebP和Zopfli压缩的PNG执行一些图像优化。你必须仔细权衡使用它们的缺点。详细信息可以here
有关这些方法的更多详细信息,请here