每次更新它(Android)时,我是否必须将库复制到jniLibs?

时间:2017-03-23 20:04:58

标签: java android android-ndk

我通过本教程了解了JNI文件:https://www.youtube.com/watch?v=G0vL7-_xuDM

经过大量的实验,我发现为了将C文件链接到Android,似乎我需要

  1. 在" jni"中创建application.c文件我的src目录外的目录
  2. 创建Android.mk和Application.mk文件,同样在他" jni"目录
  3. 运行" ndk-build"在终端中创建lib___.so文件在" libs"目录
  4. 将这些lib___.so文件复制到" jniLibs" src / main下的文件夹
  5. 在我的活动中,加载我在c文件中创建的库
  6. 包含一个未实现的本机方法,只要我想获取数据,就会调用
  7. 我的问题是每当我想要改变我的C应用程序中的任何内容时,我需要重复步骤3和4来运行ndk-build(再次),然后在" libs"中复制新更新的文件。目录进入" jinLibs"目录(再次),以显示我的活动中的任何新内容。这似乎是多余和不必要的。有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您已设法使用ndk-build编译jni源。现在,“手动部分”,即复制libs /文件,可以通过gradle task相当容易地完成。在本机构建任务之后,您可以添加'copyTask',如下所示:

tasks.withType(JavaCompile) { compileTask ->
    compileTask.dependsOn buildNative // building via NDK
    doLast{
        // ...
        copyLibs
    }
}

task copyLibs(type: Copy) {
    from configurations.compile
    into 'pathToJNILibs'
}

为了完整起见,我会进一步添加一些清理任务以避免对旧文件的骚扰