3

我有一个带有两个模块的 ndk 项目:

  • abwrenderer - 本机库模块
  • app - 本机和 java 混合,将 java 粘合到 abwrenderer

我今天早上刚更新到 AS 2.0 Preview 5,遇到了一些 gradle 相关的问题。

我升级到 gradle-2.10 并切换到 gradle-experimental:0.6.0-alpha5。尝试调试时,触发了 ndk 构建,我遇到了以下问题:

错误:错误:C:\android\projects\foo\abwrenderer\build\intermediates\binaries\debug\obj\armeabi-v7a\libabwrenderer.so:没有这样的文件或目录

现在,当我在 gradle-2.9 和 gradle-experimental:0.6.0-alpha3 上时,库是在这个目录中构建的。经过今天上午的升级,这些库现在位于:C:\android\projects\foo\abwrenderer\build\libs\abwrenderer\shared\armeabi-v7a\debug

有没有办法更新构建库的项目依赖项的搜索位置?

作为参考,我定义了对 abwrenderer 项目的依赖如下(build.gradle (app)):

android.sources {
    main {
        jni {
           source {
                srcDirs 'src/main/jni'
            }
            dependencies {
                project ":abwrenderer" buildType "debug" linkage "shared"
            }
        }
        jniLibs {
            source {
                srcDirs 'src/main/libs'
            }
        }
    }
}

abwrenderer 项目的 build.gradle 如下:

apply plugin: "com.android.model.native"

model {
    android {
        compileSdkVersion = 23
    }

    android.ndk {
        moduleName = "abwrenderer"
        cppFlags.addAll(["--std=c++11",
                      "-fexceptions",
                      "-frtti"])
        ldLibs.addAll(["android", "EGL", "GLESv3", "log", "dl"])
        stl = "c++_static"
        debuggable = true
    }

    android.sources {
        main {
           jni {
                exportedHeaders {
                  srcDir "src/main/jni"
               }
           }
       }
    }
}

我已经使缓存无效并重新启动,完成了干净的构建等。任何帮助将不胜感激!

4

1 回答 1

0

您的defaultConfigndk块缺少一些信息。它们应该看起来像这样:

defaultConfig { applicationId = 'com.myapp.abwrenderer' minSdkVersion.apiLevel = 13 targetSdkVersion.apiLevel = 23 versionCode = 1 versionName = '1.0' } ndk { platformVersion = 21 moduleName = 'abwrenderer' toolchain = 'clang' stl = 'gnustl_static' cppFlags.addAll(['-std=c++11']) ldLibs.addAll(['android', 'EGL', 'GLESv3', 'log', 'dl']) }

您应该查看 Google 提供的以下 NDK 示例,了解他们是如何做到的:hello-libs

于 2016-05-26T20:07:47.443 回答