减少具有.so文件的apk大小

时间:2014-07-29 16:12:27

标签: android android-ndk .so

在我们的Android应用中,我们有两个.so文件:一个用于x86,另一个用于ARM。它们非常大,并且正在将.apk的大小从7 MB增加到11 MB。

由于.so文件是运行时实体,因此它们必须位于.apk文件中。

有什么方法可以减少.so文件的大小或以更好的方式在我的.apk中使用/构建它?

我从这里得到一点http://developer.sonymobile.com/2012/01/31/tips-for-reducing-apk-file-size/,即从本机代码中删除调试符号。

1 个答案:

答案 0 :(得分:5)

Play商店允许您upload separate APKs per CPU architecture。所以你会有一个ARM APK和一个x86 APK,而不是一个带有两个APK的。

使用Gradle for Android设置此类APK相对简单 - 为每个架构使用单独的product flavor。我认为在Gradle for Android之外有这样做的方法,虽然我怀疑它更复杂。

另一种方法是不分发x86 .so。现代x86驱动的Android设备往往具有libhoudini,这允许它们使用ARM .so NDK库。但是,与Android模拟器一样,在x86上模拟ARM很慢,因此您需要测试并查看您的应用程序在x86上是否可以接受。

而且,正如Stratton先生所建议的那样,特别是如果你的图书馆是你的,看看你是否可以修剪图书馆的大小本身。 ProGuard不会像剥离Java代码那样去除本机代码。