gpt4 book ai didi

android - 如何从 AAR 仅导入选定的 native 库 ABI?

转载 作者:IT老高 更新时间:2023-10-28 22:02:11 25 4
gpt4 key购买 nike

我有一个不寻常的问题 - 我的 Android 应用程序包含 native 库,我为 armeabi-v7a 和 x86 构建 native 库。但是,现在我需要将第三方库集成到我的应用程序中,该应用程序还包含 native 库(第三方库是 Crashlytics,我通过 Maven 从我的 build.gradle 中包含它。)。问题是第三方库的 AAR 提供了所有架构(armeabi、arm64-v8a、armeabi-v7a、mips、mips64、x86 和 x86_64),而我的应用程序仅支持 armeabi-v7a 和 x86(计划在不久的将来使用 arm64-v8a) ,所以当最终的 apk 被构建时,它包含第 3 方库的所有 ABI,并且只有我的 native 代码的 x86 和 armeabi-v7a ABI。这会导致我的应用在 Galaxy S6 等 arm64 设备上启动时崩溃。

我的问题是:是否可以仅包含来自 3rd 方 AAR 的选定 ABI?

请注意,我知道 APK splits ,但这只能部分解决我的问题,即它只有在我通过 Play 商店分发我的应用程序时才有效。虽然 Play Store 支持 beta 测试分发,但更新后的 APK 的传播速度比较慢,所以在向应用的 PlayStore beta channel 推送更新之前,我们通过 Crashlytics 的 beta 分发系统推送更新,速度要快得多。问题是 Crashlytics 的分发系统不支持 APK 拆分(或者我错了吗?)。因此,我实际上需要构建一个仅包含选定 ABI 的“通用”APK。如何实现?

尽管我会满意 Crashlytics 的特定答案(例如,如何通过他们的 beta channel 分发 APK 拆分),但我会更满意构建仅包含选定 ABI 的“通用”APK 的解决方案,因为在我们公司,我们还向客户提供 SDK 作为 AAR 文件,其中仅包含受支持的架构,我们希望指导他们在将我们的 SDK 与支持不同 ABI 的其他 SDK 集成时如何处理案例。

我正在使用最新的稳定版 Android Studio (1.2.1.1)、gradle 2.4 和 android gradle 插件版本 1.2.3。

最佳答案

packagingOptions {
exclude 'lib/arm64-v8a/libcrashlytics-envelope.so'
exclude 'lib/arm64-v8a/libcrashlytics.so'
exclude 'lib/armeabi/libcrashlytics-envelope.so'
exclude 'lib/armeabi/libcrashlytics.so'
exclude 'lib/mips64/libcrashlytics-envelope.so'
exclude 'lib/mips64/libcrashlytics.so'
exclude 'lib/mips/libcrashlytics-envelope.so'
exclude 'lib/mips/libcrashlytics.so'
exclude 'lib/x86_64/libcrashlytics-envelope.so'
exclude 'lib/x86_64/libcrashlytics.so'
}

关于android - 如何从 AAR 仅导入选定的 native 库 ABI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com