Gradle ndk{} ブロックで LOCAL_SRC_FILES を定義するには、この機能がサポートされていないことに注意することが重要です。現在の Gradle プラグイン。 「実験的」プラグインでもディレクトリの追加のみが可能です。
このタスクを確実に実行するには、従来の Android.mk の使用をお勧めします。さらに、簡単にアクセスして構文を強調表示できるように、Android Studio でこれらのファイルを表示できるように、jni.srcDirs を [${jniSrc}] のままにすることをお勧めします。
従来の Android の場合。 mk アプローチは望ましくありません。通常の NDK ビルド タスクを無効にして、buildNative タスクを挿入できます。代わりに:
def ndkBuild = android.ndkDirectory import org.apache.tools.ant.taskdefs.condition.Os if (Os.isFamily(Os.FAMILY_WINDOWS)) { ndkBuild += '.cmd' } task buildNative(type: Exec, description: 'Compile JNI source via NDK') { commandLine '$ndkBuild', 'NDK_PROJECT_PATH="$jniSrc/..' } task cleanNative(type: Exec, description: 'Clean JNI object files') { commandLine '$ndkBuild', 'clean', 'NDK_PROJECT_PATH="$jniSrc/..' } clean.dependsOn 'cleanNative' tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn buildNative } tasks.all { task -> if (task.name.contains('compileDebugNdk') || task.name.contains('compileReleaseNdk')) task.enabled = false }
「com.android.tools.build:gradle-experimental:0.2.0」プラグインについても、同様のアプローチを採用できますが、異なるタスクの一致:
tasks.all { task -> if (task.name.startsWith('compile') && task.name.contains('MainC')) { task.enabled = false } if (task.name.startsWith('link')) { task.enabled = false } if (task.name.endsWith("SharedLibrary") ) { task.dependsOn buildNative } }
実験的なプラグイン 0.4.0 では、パターンによってファイルを NDK ビルドから除外できます:
android.sources { main { jni.source { srcDirs = ["~/srcs/jni"] exclude "**/win.cpp" } } }
以上がNDK DSL で LOCAL_SRC_FILES を定義できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。