我们有两个单独的Application.mk
文件,其中一个APP_ABI := armeabi armeabi-v7a
,另一个APP_ABI := x86
。这样做的原因是我们并不总是想为X86平台构建,但只有在满足某些条件时才能构建。因此,arm构建由shell脚本无条件触发,如果满足条件,则会再次为X86触发ndk-build
。我面临的问题是每次触发ndk-build时,都会执行以下操作:
rm -f ./libs/arm64-v8a/lib*.so ./libs/armeabi/lib*.so ./libs/armeabi-v7a/lib*.so ./libs/armeabi-v7a-hard/lib*.so ./libs/mips/lib*.so ./libs/mips64/lib*.so ./libs/x86/lib*.so ./libs/x86_64/lib*.so
如果现在触发X86构建并且构建完成,我会看到删除了armeabi
和armeabi-v7a
个libs文件夹。不应该只删除那些我们目前通过APP_ABI
定位的libs文件夹吗?如果没有,有没有办法解决这个问题?
我认为NDK发行版中的build-all.mk
有clean: clean-intermediates clean-installed-binaries
可能正在清理所有库。
答案 0 :(得分:1)
不是最好的答案,但最终得到了以下黑客
run ndk-build for arm platform
cp -r ./libs/ /tmp/libs/
condition passes
run ndk-build for x86 platform
cp -r /tmp/libs/armeabi/ ./libs/armeabi/
cp -r /tmp/libs/armeabi-v7a/ ./libs/armeabi-v7a/
rm -rf /tmp/libs