使ndk-build的方法只删除那些正在触发构建的libs文件夹

时间:2016-04-14 02:26:33

标签: android-ndk ndk-build

我们有两个单独的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构建并且构建完成,我会看到删除了armeabiarmeabi-v7a个libs文件夹。不应该只删除那些我们目前通过APP_ABI定位的libs文件夹吗?如果没有,有没有办法解决这个问题?

我认为NDK发行版中的build-all.mkclean: clean-intermediates clean-installed-binaries可能正在清理所有库。

1 个答案:

答案 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