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 サイトの他の関連記事を参照してください。