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

Method to make ndk-build delete only those libs folder for which build is being triggered

我们有两个单独的 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 文件夹已删除。 ndk-build 不应该只删除我们当前通过 APP_ABI 定位的那些 libs 文件夹吗?如果没有,有没有办法解决这个问题?

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

不是最佳答案,但最终得到以下 hack

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