ホームページ > バックエンド開発 > C++ > gradle.build ndk {} DSL で LOCAL_SRC_FILES を定義できますか?

gradle.build ndk {} DSL で LOCAL_SRC_FILES を定義できますか?

Linda Hamilton
リリース: 2024-11-29 00:54:11
オリジナル
557 人が閲覧しました

Can You Define LOCAL_SRC_FILES in the gradle.build ndk {} DSL?

NDK で LOCAL_SRC_FILES を定義します

質問:

gradle で ndk をビルドすることは可能ですか. {} DSL で LOCAL_SRC_FILES を定義しますか?

背景:

jni モジュール gradle.build ファイルで、次の構成を使用します:

android {
    def jniSrc = System.getProperty("user.home") + "/srcs/jni"

    defaultConfig {
        ndk {
            moduleName "core"
            stl "gnustl_shared"
            cFlags "-std=c++11"
        }
    }

    ...
ログイン後にコピー

jni ソース コードには、次の命令が含まれています。さまざまなプラットフォーム (Android、iOS、WinRT) のコード。目標は、Android で動作しない Android.mk 内のコードを除外することです。

答え:

残念ながら、現在の Gradle プラグインは ndk {} DSL での LOCAL_SRC_FILES の定義をサポートしていません。回避策は次のとおりです:

従来の方法:

従来の Android.mk ファイルを保持します。これにより、特定のコードを確実に除外できます。 Android Studio でコードの引用と構文の強調表示を行うには、cppFlags および cFlags 設定を使用することをお勧めします。

実験的アプローチ (buildNative タスク):

通常の NDK ビルド タスクを無効にし、ネイティブ コードをビルドするための buildNative タスクを挿入します。これは実験的なプラグイン「com.android.tools.build:gradle-experimental:0.2.0」で機能します。

高度なアプローチ (静的ライブラリ):

ネイティブ コードが複数のディレクトリ (Android 固有のファイルとプラットフォームに依存しないファイル) に分割されている場合は、静的ライブラリを構築することを検討できます。 library を作成し、それをリンクして必要なシンボルを取得します。このアプローチにより、ndk-build を使用して静的ライブラリを構築し、リンク時にそれを必要なオブジェクトとともに使用することができます。

更新:

実験的なプラグインでは、compileJavaTask.dependsOn buildNative を使用してタスクcompileTask.dependsOn buildNativeを置き換えることができます。

アップデート 2:

単一のローカル ソース ファイルを Android Studio プロジェクトにリンクできるため、問題は解決されます。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート