我有一个不寻常的问题 - 我的 Android 应用程序包含本机库,我为 armeabi-v7a 和 x86 构建本机库。但是,现在我需要将第三方库集成到我的应用程序中,该应用程序还包含本机库(第三方库是Crashlytics,我通过 Maven 从我的 build.gradle 中包含。)。问题是第三方库的 AAR 提供了所有架构(armeabi、arm64-v8a、armeabi-v7a、mips、mips64、x86 和 x86_64),而我的应用程序仅支持 armeabi-v7a 和 x86(计划在不久的将来使用 arm64-v8a) ,所以当最终的 apk 被构建时,它包含第 3 方库的所有 ABI,并且只有我的本机代码的 x86 和 armeabi-v7a ABI。这会导致我的应用在 Galaxy S6 等 arm64 设备上启动时崩溃。
我的问题是:是否可以仅包含来自 3rd 方 AAR 的选定 ABI?
请注意,我知道APK splits,但这只能部分解决我的问题,即它只有在我通过 Play 商店分发我的应用程序时才有效。虽然 Play Store 支持 beta 测试分发,但是更新的 APK 的传播速度比较慢,所以在将更新推送到应用的 PlayStore beta 通道之前,我们通过 Crashlytics 的 beta 分发系统推送更新,速度要快得多。问题是 Crashlytics 的分发系统不支持 APK 拆分(或者我错了吗?)。因此,我实际上需要构建一个仅包含选定 ABI 的“通用”APK。如何做到这一点?
尽管即使对 Crashlytics 的特定答案(例如,如何通过其 beta 通道分发 APK 拆分)我也会感到满意,但我会对构建仅包含选定 ABI 的“通用”APK 的解决方案更满意,因为在我们公司还向我们的客户提供 SDK 作为 AAR 档案,其中仅包含受支持的架构,我们希望指导他们在将我们的 SDK 与支持不同 ABI 的其他 SDK 集成时如何处理案例。
我正在使用最新的稳定 Android Studio (1.2.1.1)、gradle 2.4 和 android gradle 插件版本 1.2.3。