Gradle 中不同 ABI 的 CMAKE 参数

iSu*_*Sun 0 android cmake gradle android-ndk

我必须在 Gradle 中针对不同的 ABI 使用不同的参数,如下所示:

        externalNativeBuild {
            cmake {
                if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64)$")
                    arguments "-UV_LIBRARY=src/main/cpp/libuv/lib/libuv_armv8.a"
                else
                    arguments "-UV_LIBRARY=src/main/cpp/libuv/lib/libuv_armv7.a"
            }
        }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

joe*_*hip 5

Gradle 将设置ANDROID_ABICMake 变量(链接),因此您可以使用CMakeLists.txt以下命令来执行此操作build.gradle

if(ANDROID_ABI STREQUAL "armeabi-v7a")
    target_link_libraries(target_name PUBLIC "src/main/cpp/libuv/lib/libuv_armv7.a")
elseif(ANDROID_ABI STREQUAL "arm64-v8a")
    target_link_libraries(target_name PUBLIC "src/main/cpp/libuv/lib/libuv_armv8.a")
endif()
Run Code Online (Sandbox Code Playgroud)