3

2 つのモジュールを含む 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 に答える