使用armeabi和armeabi-v7a库与APK分割

3
我一直在使用 Android 的 0.13 插件的新功能 APK splits,成功将大多数构建脚本的大小减半,并将构建速度提高了 4 倍。我的应用程序每个平台都有超过 20MB 的库,因此保持 APK 大小较小是优先考虑的。在 0.13 版本之前,我们有一些脚本,可以动态地将 .so 文件分阶段放置在正确的构建文件夹中(取决于我们为哪个平台进行构建),然后执行完整的构建。这种方法虽然有效,但非常缓慢,而且涉及 gradle 和非 gradle 脚本的不幸混合。
最新的 APK 拆分功能解决了我的大部分问题,但我仍然遇到了 armeabi-v7a 库的问题。似乎当 gradle 构建 armeabi-v7a flavor 时,它只查找 /libs/armeabi-v7a 文件夹中定义的库,并忽略为 armeabi 而非 armeabi-v7a 编译的库。
例如,这是我的一个应用程序:
App1/
 - libs
  - armeabi
    - lib1.so
    - lib2.so
    - lib3.so
  - armeabi-v7a
    - lib3.so
  - x86
    - lib1.so
    - lib2.so
    - lib3.so

当我将它编译为armeabi-v7a时,Gradle会包含armeabi-v7a/lib3.so,但不包含armeabi/lib1.so和armeabi/lib2.so。在运行时,APK无法工作(显然),因为找不到lib1.so和lib2.so。
有没有办法告诉Gradle将armeabi/中找到但在armeabi-v7a/中未找到的库添加到armeabi-v7a APK中?

1
这种情况似乎是 split 函数的限制。如果在这里得不到帮助,可以尝试 adt-dev 谷歌小组,或者在 http://b.android.com 上提交问题。 - CommonsWare
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接