Android NDK。减小APK的大小

时间:2014-02-08 09:13:02

标签: java android c++ android-ndk

我使用Android NDK为Android编译了一个应用程序。我有两个项目。首先 - 是一个带有ndk库和jni文件夹的库。第二 - 是我的工作应用程序,其中包括第一个项目作为库。我的应用程序的大小对我来说太大了(30Mb)。我想减少它。我阅读了教程,但他们告诉我们做基本选项,比如删除日志和未使用的代码等等。但这对我没有帮助。我可以使用我的所有 .c 文件删除jni文件夹(如果我在最终构建中是正确的,则它们是不必要的,因为它们被编译为 .so libs ),或者这不会减小apk的大小?或者我可能应该做别的事情?感谢您对我的问题感兴趣!

4 个答案:

答案 0 :(得分:2)

您可以在build.gradle文件中启用ABI拆分,如下所示:

android {
    // Some other configuration here...

    splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi', 'armeabi-v7a', 'mips'
            universalApk false
        }
    }
}

这将大大减少您的应用程序大小。

原因是现在Gradle将为每个CPU生成一个APK,从而进一步减小尺寸!

在我的情况下,它将我的apk文件大小从5.4mb减少到3.2mb。

答案 1 :(得分:1)

您还可以检查是否有任何使用过的第三方库,并查看是否可以禁用任何不必要的扩展程序。

有一次我使用assimp完全支持所有加载器,它为我的应用程序增加了10MB以上。 通过从中删除不必要的模块,结果就不那么臃肿了。

答案 2 :(得分:1)

如果您的Application.mk有行

APP_ABIS = all

或类似的,请考虑为不同的平台(armeabi,armeabi-v7a,x86,mips)运送单独的APK。

技术细节将在 Android - build separate APKs for different processor architectures

中详细讨论

答案 3 :(得分:1)

你应该看看: