相关疑难解决方法(0)

CMake构建工具链中“strip”命令的Android NDK路径变量

我想添加一个带调试符号一步为我的Android库,其中包括针对不同的ABI,例如本地共享库x86/native-lib.sox86_64/native-lib.soarm64-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_NDKANDROID_ABI等?

android cmake android-ndk

6
推荐指数
2
解决办法
2660
查看次数

Android Studio CMake / Ninja未用于构建NDK项目

我通过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)

android cmake android-ndk android-studio ninja

6
推荐指数
1
解决办法
2897
查看次数

标签 统计

android ×2

android-ndk ×2

cmake ×2

android-studio ×1

ninja ×1