【发布时间】:2018-06-25 07:19:51
【问题描述】:
我在使 apk 低于 4mb 时遇到了困难。 检查生成的免安装应用 APK 后 我看到 com.google.android.gms.internal 几乎是 1.4mb。 我只是找不到这个大块的原因。一定是某种依赖。
我的基本清单文件如下所示:
dependencies {
api "com.android.support:design:$rootProject.supportLib"
api "com.android.support:support-fragment:$rootProject.supportLib"
api "com.android.support:appcompat-v7:$rootProject.supportLib"
api "com.android.support:recyclerview-v7:$rootProject.supportLib"
api "com.android.support:cardview-v7:$rootProject.supportLib"
api 'com.android.support.constraint:constraint-layout:1.0.2'
api "com.google.code.gson:gson:$rootProject.gson"
api "com.google.firebase:firebase-core:$rootProject.googleLibs"
api "com.google.firebase:firebase-ads:$rootProject.googleLibs"
api "com.google.firebase:firebase-appindexing:$rootProject.googleLibs"
api "com.google.android.gms:play-services-auth:$rootProject.googleLibs"
api "com.android.support:multidex:$rootProject.multidex"
api "com.github.bumptech.glide:glide:$rootProject.glide"
annotationProcessor "com.github.bumptech.glide:compiler:$rootProject.glide"
api "com.loopj.android:android-async-http:$rootProject.asyncHttp"
api "org.greenrobot:eventbus:$rootProject.greenRobotEventBus"
api "com.vincentbrison.openlibraries.android:dualcache:$rootProject.dualcache"
api('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true;
}
【问题讨论】:
-
运行
./gradlew <your_module>:dependencies来查看模块中的传递依赖项有时会很有用....这可以显示您没有意识到的依赖项以及版本不匹配。 -
谢谢。是的,我一直在运行该命令以查看 deps 的来源。我已经从 5mb 降到 3.2。但我只是看不到任何与 com.google.android.gms.internal 相关的东西必须是某种谷歌库。为什么这么大?
-
您在使用 ProGuard 吗?您会发现您实际上需要使用它来缩小即时应用程序的大小。您可能知道 4MB 限制适用于基础和功能 apk 的组合。
-
是的。是的,proguard正在使用中。尽可能优化它。资源也一样。不要认为我可以进一步优化这些。我真的需要摆脱一些库,因此也可能是功能。但我真的很想知道为什么谷歌的东西这么大。我很确定我不需要它。
-
除了检查developer.android.com/topic/performance/reduce-apk-size.html 以了解您还能做什么之外,kabuko 关于配置拆分的提示可能是您的下一个最佳选择。
标签: android android-gradle-plugin dependencies android-instant-apps