2014-02-08 218 views
0

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

+1

标准的android版本只复制.so文件。它不会复制任何.c源文件或头文件。您可能需要调查其他资源的大小,例如艺术品。你可以用'7zip'等工具打开apk文件,并调查哪些文件占用的空间最大。如果这没有帮助,您可能需要调查OBB文件的用法,您可以在其中存储其他数据。 http://developer.android.com/google/play/expansion-files.html – tillaert

+0

谢谢,tillaert。我会尝试这些解决方案。 –

回答

1

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

有一次,我用assimp完全支持所有的装载机,它增加了超过10MB到我的应用程序。 通过从其中删除不必要的模块,结果是少得多的膨胀。

+0

谢谢你的回答。我会检查这些扩展 –

1

如果您Application.mk有行

APP_ABIS = all 

或类似,考虑运费单独的APK为不同的平台(armeabi,armeabi-V7A,X86,MIPS)。

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

+0

这似乎是非常有趣的链接,因为每个平台的每个lib都有很大的大小。我会检查链接! –

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。