【发布时间】:2019-04-23 20:52:31
【问题描述】:
我正在尝试为我的 Android 库添加一个 strip debug symbols 步骤,其中包括用于不同 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.")
所以,我的问题是:
是否存在指向此路径的现有 CMake 变量,即
/android-ndk-r16b/toolchains/???/prebuilt/???/bin/???-???-???-strip?如果没有,有没有办法利用其他已知的 Android CMake 变量来形成此路径,例如
ANDROID_NDK、ANDROID_ABI等?
【问题讨论】:
-
请注意,Android Studio(或者更准确地说,Android Gradle 插件)将为您剥离共享对象。诀窍是他们稍后执行剥离步骤,而不是作为 CMake 的一部分。
-
这适用于应用程序项目,但对于具有本机共享 .so 的库项目,我想提供一个精简的包,而不是给客户留下一个沉重的包。
标签: android cmake android-ndk