【问题标题】:Reducing apk size which has .so files减少包含 .so 文件的 apk 大小
【发布时间】:2014-07-29 16:12:26
【问题描述】:

在我们的 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/ 得到一点,即从本机代码中删除调试符号。

【问题讨论】:

  • 您如何分发您的应用程序?通过 Play 商店,还是通过其他方式?
  • 可以通过 Play 商店
  • 您可能想使用 ndk 的 objdump 或 readelf 来检查是什么让您的 .so 文件变大,看看是否有办法改变它。

标签: android android-ndk .so


【解决方案1】:

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 代码那样剥离原生代码。

【讨论】:

    猜你喜欢
    • 2023-02-23
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多