ホームページ >バックエンド開発 >C++ >NDK DSL で LOCAL_SRC_FILES を定義できますか?

NDK DSL で LOCAL_SRC_FILES を定義できますか?

DDD
DDDオリジナル
2024-11-23 09:55:17342ブラウズ

Can I define LOCAL_SRC_FILES in NDK DSL?

NDK DSL で LOCAL_SRC_FILES を定義できますか?

Gradle ndk{} ブロックで LOCAL_SRC_FILES を定義するには、この機能がサポートされていないことに注意することが重要です。現在の Gradle プラグイン。 「実験的」プラグインでもディレクトリの追加のみが可能です。

推奨アプローチ

このタスクを確実に実行するには、従来の Android.mk の使用をお勧めします。さらに、簡単にアクセスして構文を強調表示できるように、Android Studio でこれらのファイルを表示できるように、jni.srcDirs を [${jniSrc}] のままにすることをお勧めします。

NDK ビルドの無効化

従来の 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
}

Gradle Experimental Plugin

「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
        }
}

NDK からファイルを除外ビルド

実験的なプラグイン 0.4.0 では、パターンによってファイルを NDK ビルドから除外できます:

android.sources {
    main {
       jni.source {
            srcDirs = ["~/srcs/jni"]
            exclude "**/win.cpp"
        }
    }
}

以上がNDK DSL で LOCAL_SRC_FILES を定義できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。