使用播放服务 gcm 时如何减小 apk 大小
Posted
技术标签:
【中文标题】使用播放服务 gcm 时如何减小 apk 大小【英文标题】:How to reduce apk size when using play services gcm 【发布时间】:2016-04-04 10:14:38 【问题描述】:我生成的签名 apk 大小是 30kB,当我将 play services 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'
【问题讨论】:
阅读developer.android.com/intl/es/tools/help/proguard.html @IntelliJAmiya:他/她已经在使用 pro Guard。说一些细节 您可能需要查看reducing-android-app-apk-size。读到最后,您要查找的答案位于已接受答案的末尾附近。 【参考方案1】:来自http://proguard.sourceforge.net/manual/examples.html#application
-优化通过 3
-积极过载
-repackageclasses ''
-允许访问修改
这些可能会有所帮助。 (尤其是 3 次传球)
【讨论】:
【参考方案2】:查看您的 build.gradle,您已经完成了源代码和资源优化。您缺少的是:
使用 ResConfigs 删除未使用的配置
支持/Google play 服务等许多库都带有翻译成太多语言的字符串资源。您可能不打算支持所有这些。使用以下方式,您可以控制大小:
安卓
defaultConfig
...
resConfigs "en"
这将删除所有非英语资源。
稀疏配置
这通常适用于具有大量字符串的应用程序。对于某些功能,您可能会想在 values-22/strings.xml 下创建字符串。这种方法的问题是为每个可能的资源位置上的指针保留空间。因此,即使该字符串不存在于新文件中,它仍会占用大约 4 字节空数据的指针空间。您可以使用来自 Google 的名为 ArscBlamer 的工具来定位此稀疏配置。
图像优化
您可以使用 WebP 和 Zopfli 压缩的 PNG 执行一些图像优化。您必须仔细权衡使用它们的缺点。详情可here
有关这些方法的更多详细信息,请访问here
【讨论】:
【参考方案3】:目前这是该依赖项的大小。 .apk 对于每个依赖项都会增加大小的原因是因为您的应用程序需要这些依赖项才能运行,并且不能依赖于从远程位置访问它,以防设备没有互联网连接。
根据this,(和 IntelliJ 的评论),如果你配置你的 proguard,你可以尝试减少一点。
还要考虑以下几点:Shrink Google Play Services library for use with Google Analytics only。
【讨论】:
您无能为力。看看这个cyrilmottier.com/2014/08/26/putting-your-apks-on-diet以上是关于使用播放服务 gcm 时如何减小 apk 大小的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android studio 中减小 Apk (.apk) 的大小