Gradle中不同ABI的CMAKE参数

时间:2018-06-02 21:46:32

标签: android gradle cmake 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"
            }
        }

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

Gradle会设置ANDROID_ABI CMake变量(link),因此您可以在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()