это мое решение: так что, во-первых, CMake может быть странно использовать в самом начале.
1- native-lib1 - продукт вывода CMake. Позже java увидит только .so этого
add_library( # This is out .so product (libnative-lib1.so)
native-lib1
# Sets the library as a shared library.
SHARED
# These are the input .cpp source files
native-lib.cpp
SRC2.cpp
Any other cpp/c source file you want to compile
)
2- Любая библиотека, которую вы включили в свой файл souse, с адресом .h необходимо обратиться сюда:
target_include_directories(# This is out .so product (libnative-lib1.so)
native-lib1 PRIVATE
${CMAKE_SOURCE_DIR}/include)
3- Любая используемая вами реальная библиотека, ее обычные .a или. cpp должна быть адресована CMake следующим образом:
target_link_libraries(
# This is out .so product (libnative-lib1.so)
native-lib1
#These are any extra library files that I need for building my source .cpp files to final .so product
${CMAKE_SOURCE_DIR}/lib/libfastcv.a
# Links the target library to the log library
# included in the NDK.
${log-lib})
Затем build.gradle следует указать, какие форматы abi мы хотим сделать чтобы убедиться, что предварительно созданные файлы .a совместимы.
flavorDimensions "version"
productFlavors {
create("arm7") {
ndk.abiFilters("armeabi-v7a")
}
Наконец, как примечание, приведенная ниже команда не работает для фильтрации работы abis и над командой, даже если они выглядят одинаково в logi c и форма для меня:
cmake {
cppFlags "-std=c++11"
abiFilters 'armeabi-v7a'
}
}
ndk {
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your APK.
// This is not working to eliminate
abiFilters 'armeabi-v7a'
}
}