DoD*_*oDo 28 android gradle crashlytics android-gradle-plugin crashlytics-beta
我有一个不寻常的问题 - 我的Android应用程序包含本机库,我为armeabi-v7a和x86构建了本机库.但是,现在我需要将第三方库集成到我的应用程序中,该应用程序还包含本机库(第三方库是Crashlytics,我从build.gradle中通过Maven包含它).问题是,第三方库的AAR提供了所有arhitectures(armeabi,arm64-V8A,armeabi-V7A,MIPS,MIPS64,x86和x86_64的)和我的应用程序只支持armeabi-V7A和x86(arm64-V8A计划在不久的将来) ,所以当最终的apk构建时,它包含第三方库的所有ABI,并且只有我的本机代码的x86和armeabi-v7a ABI.这会导致我的应用程序在像Galaxy S6这样的arm64设备上启动时崩溃.
我的问题是:是否可以仅包含来自第三方AAR的选定ABI?
请注意,我知道APK拆分,但这只能部分地解决我的问题,即仅当我通过Play商店分发我的应用程序时才有效.虽然Play商店支持beta测试发布,但更新APK的传播速度相当慢,因此在推送应用PlayStore测试频道的更新之前,我们通过Crashlytics的beta发布系统推送更新,速度要快得多.问题是Crashlytics的distibution系统不支持APK拆分(或者我错了吗?).因此,我实际上需要构建一个仅包含选定ABI的"通用"APK.怎么实现呢?
虽然我甚至对Crashlytics特定的答案感到满意(例如,如何通过他们的beta频道分发APK分割),但我会更满意的是构建仅包含选定ABI的"通用"APK的解决方案,因为在我们公司还向客户提供SDK作为AAR档案,其中仅包含支持的架构,我们希望在他们将SDK与支持不同ABI的其他SDK集成时如何处理案例.
我使用最新稳定的Android工作室(1.2.1.1),gradle 2.4和android gradle插件版本1.2.3.
小智 24
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'
}
Run Code Online (Sandbox Code Playgroud)
Man*_*ger 20
这对我有用:
(例如:只有armeabi和armeabi-v7a)
的build.gradle
android{
defaultConfig{
ndk{
abiFilters "armeabi", "armeabi-v7a"
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8151 次 |
| 最近记录: |