Gradle-experimental 0.6.0-alpha1 準拠の build.gradle ファイルがあります。
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 21
buildToolsVersion = "23.0.2"
defaultConfig.with {
applicationId = "com.company.application"
minSdkVersion.apiLevel = 21
targetSdkVersion.apiLevel = 21
}
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-rules.pro'))
}
}
android.ndk {
moduleName = "moduleName"
}
}
dependencies {
compile project(':libcocos2dx')
}
また、エンジンとして cocos2dx を使用しています。次のようなフォルダー階層があります。
- クラス (私のプロジェクトのすべての C++ コードが含まれています)
- proj.android/src/main/projectName/jni (cocos2d がフックするための main.cpp ファイルが含まれています)
また、proj.android 以外の別のフォルダーにある他の多くの cpp クラスもあります (たとえば、cocos2d cpp ファイルは proj.android/../../../dependencies/XXXX/cocos2d-x にあり、エンジン ファイルは proj.android/../../../dependencies/XXXX/engine にあり、すべての C++ コードは proj.android/../Classes にあります (すべての cocos2dx プロジェクトと同様)。
最新の gradle 実験的プラグイン (gradle-experimental-0.6.0-alpha1) を使用してアプリケーションを構築しようとしています。
最初にそのままビルドして、プロジェクトをコンパイルして実行しようとしましたが、gradle ビルドに C++ ソース ファイルを含めていなかったため、空でした (libMyApp.so は生成されませんでした)。
次に、ソースファイルフォルダーへのシンボリックリンクを作成して、gradleがそれらを選択できるようにしました。
ln -s proj.android/../../../dependencies/XXXX/cocos2d-x proj.android/src/main/projectName/jni
(./gradlew assembleDebug)をビルドしているとき、シンボリックにリンクされたC++ファイルをコンパイルしますが、何を試しても、ヘッダーの最初のインクルードで毎回失敗します。
ここで説明されているように、次を使用してソースファイル/ヘッダーインクルードを追加しようとしました:
android.sources {
main {
jni {
source {
srcDir "src"
}
exportedHeaders {
srcDir "src"
}
}
}
}
しかし、欠落している「.h」ヘッダーを見つけることができませんでした。cocos2Dx、gradle-experimental、および android-studio を使用して結果的な C++ プロジェクトをビルドしようとしたことがある場合は、経験を共有してください。コンパイルできるようになったら、ある種のガイドをコンパイルしようとします(いつか:))
参考までに:最新のgradleドキュメント:
https://docs.gradle.org/2.9/userguide/nativeBinaries.html
便利なリンク: