【问题标题】:Android NDK: CMAKE how to move IMPORTED shared library to libs folderAndroid NDK:CMAKE 如何将 IMPORTED 共享库移动到 libs 文件夹
【发布时间】:2019-06-18 14:58:35
【问题描述】:

我有一个构建 libMyProject1.so 的 Android NDK 项目,我正在使用:

set_target_properties(MyProject1
        PROPERTIES
        LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Client/libs/${ANDROID_ABI}")

将构建的库导出到我需要的文件夹。

我还链接了另一个外部共享库:

我的外部库

add_library(MyExternal SHARED IMPORTED)
set_target_properties(MyExternal PROPERTIES IMPORTED_LOCATION        ${CMAKE_CURRENT_SOURCE_DIR}/../MyExternal/libs/${ANDROID_ABI}/libMyExternal.so)

target_link_libraries( # Specifies the target library.
        MyProject1
        # Shared Dependencies
        MyExternal
        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

libMyProject1.so 被复制到Client/libs/${ANDROID_ABI},但libMyExternal.so 未被复制。如何使用 cmake 将外部共享库复制到我的客户端文件夹?

【问题讨论】:

  • Property LIBRARY_OUTPUT_DIRECTORY 仅影响您的项目生成的库。它不会影响已经存在的 IMPORTED 库。您需要手动复制此类库。选择该问题中描述的任何方式:stackoverflow.com/questions/34799916/…
  • 感谢@Tsyvarev,文件(COPY ...)工作正常。

标签: android cmake android-ndk android-gradle-plugin


【解决方案1】:

按照 cmets 中的建议,以下内容对我有用:

file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/../MyExternal/libs/${ANDROID_ABI}/libMyExternal.so
        DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/../Client/libs/${ANDROID_ABI})

【讨论】:

    【解决方案2】:

    您应该更改 jniLibs.srcDirs,它将由 gradle 打包。

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 26
        defaultConfig {
            ...
            ndk {
                abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
            }
            ...
        }
        ...
        sourceSets {
            main {
                // let gradle pack the shared library into apk
                jniLibs.srcDirs = ['Client/libs/']
            }
        }
        externalNativeBuild {
            cmake {
                path "CMakeLists.txt"
            }
        }
    }
    
    dependencies {
       ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多