使 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 构建并且构建完成,我会看到 armeabi
和 armeabi-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
我们有两个单独的 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 文件夹已删除。 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