Я делаю jni, используя третью библиотеку, где jni lib: libLivenessDetectorJni.so зависит от liblivenessdetector.so (третья библиотека только в armeabi-v7a).
Я указываю сборку abi только под armeabi-v7a в gradle:
externalNativeBuild {
cmake {
cppFlags "-std=c++11 -frtti -fexceptions"
abiFilters "armeabi-v7a"
}
}
Но после сборки armeabi-v7a (успех) он продолжает собирать x86_64 (сбой), почему?
> Task :common-silent:externalNativeBuildDebug
Build LivenessDetectorJni armeabi-v7a
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/common-silent/build/intermediates/cmake/debug/obj/armeabi-v7a/libLivenessDetectorJni.so
> Task :common-silent:mergeDebugJniLibFolders
> Task :common-silent:transformNativeLibsWithMergeJniLibsForDebug
> Task :common-silent:transformNativeLibsWithStripDebugSymbolForDebug
> Task :common-silent:transformNativeLibsWithIntermediateJniLibsForDebug
> Task :app:externalNativeBuildDebug FAILED
Build LivenessDetectorJni x86_64
ninja: error: '/home/jnitest/common-silent/src/main/jniLibs/x86_64/liblivenessdetector.so', needed by '/homejnitest/app/build/intermediates/cmake/debug/obj/x86_64/libLivenessDetectorJni.so', missing and no known rule to make it
FAILURE: сборка не удалась, исключение.
Кто может помочь мне настроить его?Спасибо.
Кстати, после того, как я удалил все abiFilters и сохранил журнал сборки, я обнаружил, что jni компилируется 2 раза.Почему?
cat log | grep LivenessDetectorJni --color
Build LivenessDetectorJni x86_64
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/common-silent/build/intermediates/cmake/debug/obj/x86_64/libLivenessDetectorJni.so
Build LivenessDetectorJni x86
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/common-silent/build/intermediates/cmake/debug/obj/x86/libLivenessDetectorJni.so
Build LivenessDetectorJni arm64-v8a
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/common-silent/build/intermediates/cmake/debug/obj/arm64-v8a/libLivenessDetectorJni.so
Build LivenessDetectorJni armeabi-v7a
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/common-silent/build/intermediates/cmake/debug/obj/armeabi-v7a/libLivenessDetectorJni.so
Build LivenessDetectorJni x86_64
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/app/build/intermediates/cmake/debug/obj/x86_64/libLivenessDetectorJni.so
Build LivenessDetectorJni x86
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/app/build/intermediates/cmake/debug/obj/x86/libLivenessDetectorJni.so
Build LivenessDetectorJni arm64-v8a
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/app/build/intermediates/cmake/debug/obj/arm64-v8a/libLivenessDetectorJni.so
Build LivenessDetectorJni armeabi-v7a
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/app/build/intermediates/cmake/debug/obj/armeabi-v7a/libLivenessDetectorJni.so
Если я использую abiFilters, то журнал изменяется следующим образом:
cat log | grep LivenessDetectorJni --color
Build LivenessDetectorJni armeabi-v7a
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/common-silent/build/intermediates/cmake/debug/obj/armeabi-v7a/libLivenessDetectorJni.so
Build LivenessDetectorJni x86_64
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/app/build/intermediates/cmake/debug/obj/x86_64/libLivenessDetectorJni.so
Build LivenessDetectorJni x86
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/app/build/intermediates/cmake/debug/obj/x86/libLivenessDetectorJni.so
Build LivenessDetectorJni arm64-v8a
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/app/build/intermediates/cmake/debug/obj/arm64-v8a/libLivenessDetectorJni.so
Build LivenessDetectorJni armeabi-v7a
[1/2] Building CXX object CMakeFiles/LivenessDetectorJni.dir/LivenessDetectorJni.cpp.o
[2/2] Linking CXX shared library /home/jnitest/app/build/intermediates/cmake/debug/obj/armeabi-v7a/libLivenessDetectorJni.so