仅在将 sourceSets 与其他 ABI 的库一起使用时支持 x86 ABI
Posted
技术标签:
【中文标题】仅在将 sourceSets 与其他 ABI 的库一起使用时支持 x86 ABI【英文标题】:Support x86 ABI when using sourceSets with libraries for other ABIs only 【发布时间】:2020-02-25 07:38:40 【问题描述】:我正在使用 sourceSets 禁用自动 ndk-build 调用以集成本机库,但我只有 armeabi-v7a 和 arm64-v8a 的本机库。当我尝试构建时,我收到“所有具有本机库的模块必须支持同一组 ABI”的错误,因为我的动态功能只有 2 个 ABI,但我的基本模块也有 x86。在没有原生库的情况下,如何使动态功能也支持 x86?
我只有在使用 android App Bundle 并将其设为动态功能时才会收到错误消息,之前没问题。
sourceSets
development
jni.srcDirs = []
jniLibs.srcDirs = ["$project.buildDir/nativelibs", "$project.buildDir/developmentnativelibs"]
【问题讨论】:
【参考方案1】:我创建了一个文件夹 ./x86 并在其中放置了一个空的 empty.so 文件,因此我的模块现在支持 x86 ABI。
【讨论】:
这是正确的做法。这会通知 Android 平台,如果设备支持,应用必须以 x86 模式启动。以上是关于仅在将 sourceSets 与其他 ABI 的库一起使用时支持 x86 ABI的主要内容,如果未能解决你的问题,请参考以下文章
如何设计一个仅在其中一个部分使用 CUDA 的库,以便其他部分在没有安装 CUDA 的情况下也可以工作?
KMM : 如何解决不兼容的 abi 版本。当前默认为“1.4.2”,找到“1.5.0”。 1.5.20编译器产生的库?