【问题标题】:Automatically copy .so files from NDK library project?自动从 NDK 库项目中复制 .so 文件?
【发布时间】:2015-09-07 05:59:44
【问题描述】:

Android Studio 1.2.1.1Gradle 1.2.3 一起使用。我有一个NDK 库项目A,它在自己的libs 文件夹中生成了许多.so 文件。不过,我在 build.gradle 文件中的任何地方都看不到对此文件夹的引用。

当我从我的应用程序 MyApp 引用库 A 时,我希望将 .so 文件复制到 MyApp/src/main/jniLibs,但事实并非如此。每次在 A 库中进行更改时,是否必须手动复制这些文件?

如何自动执行此步骤?

【问题讨论】:

    标签: android-studio gradle android-ndk


    【解决方案1】:

    我将我的编辑为如下所示,它从 ndk-build.cmd 放置它们的位置拾取它。

    sourceSets {
         main.jniLibs.srcDirs += 'libs/'
    }
    

    【讨论】:

    • 还有一点需要注意;需要安装本机图像。否则不会生成对应的.so文件。
    【解决方案2】:

    我不知道有没有办法让你复制.so 文件而不需要任何东西。

    但你可以让 gradle 为你做这件事。 在您的 gradle 文件中,添加一个任务,将那些 .so 文件复制到您需要的位置。

    android {
        ...
        sourceSets.main {
            jni.srcDirs = []
            jniLibs.srcDir 'src/main/libs'
        }
    
        //copying files
        task copyNativeLib(type: Exec, description: 'Copy native file') {
            commandLine 'cp <path_of_so_files> src/main/libs'
        }
    
        //add dependencies
        tasks.withType(JavaCompile) {
            compileTask -> compileTask.dependsOn copyNativeLib
        }
    }
    

    或者只是

    android {
        ...
        sourceSets.main {
            jni.srcDirs = []
            jniLibs.srcDir '<path_to_your_so_files>'
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-08-03
      • 2016-01-12
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      相关资源
      最近更新 更多