我想添加一个带调试符号一步为我的Android库,其中包括针对不同的ABI,例如本地共享库x86/native-lib.so,x86_64/native-lib.so,arm64-v8a/native-lib.so,等。
我知道 strip 命令必须针对每个 ABI。所以,我需要调用正确的strip 命令,为此我需要在构建时知道它的正确路径。
例如,对于 ABI x86_64,我需要进行以下路径设置:
set(STRIP ~/Library/Android/android-ndk-r16b/toolchains/x86_64-4.9/prebuilt/darwin-x86_64/bin/x86_64-linux-android-strip)
add_custom_command(TARGET ${SHARED_LIBRARY_NAME} POST_BUILD
COMMAND ${STRIP}
"${DIST_LIBS_DIR}/${LIB_BUILD_TYPE}/${ANDROID_ABI}/lib${SHARED_LIBRARY_NAME}.so"
COMMENT "Strip debug symbols done on final binary.")
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:
是否有现有的 CMake 变量指向此路径,即/android-ndk-r16b/toolchains/???/prebuilt/???/bin/???-???-???-strip?
如果没有,有没有办法,形成利用其他已知的Android CMake的变量此路径,例如ANDROID_NDK,ANDROID_ABI等?
我通过Android Studio的SDK工具安装了以下CMAKE和Ninja:
~/Library/Android/sdk/cmake/3.10.2.4988404/bin/ninja --version
1.8.2
Run Code Online (Sandbox Code Playgroud)
尝试构建项目时遇到“错误配置”。这是构建输出:
Executable : /Users/ssk/Library/Android/sdk/cmake/3.10.2.4988404/bin/cmake
arguments :
-H/Users/ssk/MyProject
-B/Users/ssk/MyProject/.externalNativeBuild/cmake/debug/armeabi-v7a
-DANDROID_ABI=armeabi-v7a
-DANDROID_PLATFORM=android-16
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/ssk/MyProject/build/intermediates/cmake/debug/obj/armeabi-v7a
-DCMAKE_BUILD_TYPE=Debug
-DANDROID_NDK=/Users/ssk/Library/Android/sdk/ndk-bundle
-DCMAKE_CXX_FLAGS=-std=c++11
-DCMAKE_SYSTEM_NAME=Android
-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
-DCMAKE_SYSTEM_VERSION=16
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DCMAKE_ANDROID_NDK=/Users/ssk/Library/Android/sdk/ndk-bundle
-DCMAKE_TOOLCHAIN_FILE=/Users/ssk/Library/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake
-G Ninja
-DANDROID_STL=gnustl_statics
-DANDROID_CPP_FEATURES=rtti exception
-DANDROID_TOOLCHAIN=gcc
-DANDROID_NDK=/Users/ssk/android-ndk-r17c/
jvmArgs :
Run Code Online (Sandbox Code Playgroud)
它不见了:
-DCMAKE_MAKE_PROGRAM=/Users/ssk/Library/Android/sdk/cmake/3.10.2.4988404/bin/ninja
Run Code Online (Sandbox Code Playgroud)
错误:
CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool
Run Code Online (Sandbox Code Playgroud)
仅当我切换到CMake版本时说3.6.3155560才有效。否则,我必须从brew或macports安装忍者。
这是我的build.gradle中的片段:
externalNativeBuild {
cmake {
// Linker flags and Visibility options keeps the size of the library small …Run Code Online (Sandbox Code Playgroud)