ホームページ >バックエンド開発 >C++ >Android NDK DSL で LOCAL_SRC_FILES を定義するにはどうすればよいですか?

Android NDK DSL で LOCAL_SRC_FILES を定義するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-16 04:11:03976ブラウズ

How to Define LOCAL_SRC_FILES in Android NDK DSL?

NDK DSL での LOCAL_SRC_FILES の定義

Android NDK DSL を使用すると、モジュールのネイティブ ソース ファイルを指定できます。ただし、古いバージョンの DSL では、LOCAL_SRC_FILES を手動で定義する直接的な方法はありませんでした。

実験的なプラグイン ソリューション

実験的な Android Gradle プラグイン 0.4.0 では、パターンに基づいて NDK ビルドからソース ファイルを除外できるようになりました。例:

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

古いプラグインの回避策

残念ながら、古いバージョンの DSL では、LOCAL_SRC_FILES を直接定義することはできません。代わりに、従来の Android.mk ファイルを使用してネイティブ ソース ファイルを管理することをお勧めします。

デフォルトの NDK ビルド タスクを無効にして、カスタム タスクを挿入してネイティブ ソース ファイルをコンパイルできます。

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
}

警告

この回避策ではデバッグ可能なセットアップが生成されない可能性があることに注意してください。これに対処するには、ndk-build を使用して静的ライブラリを構築し、ライブラリからシンボルを取得するために必要なオブジェクトとリンクします。

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

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