我有一个 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 文件)
我还有许多其他 cpp 类,它们位于 proj.android 之外的不同文件夹中(例如 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) 构建我的应用程序。
我首先尝试按原样构建它,项目编译并运行但为空(没有生成 libMyApp.so),因为我没有在我的 gradle 构建中包含任何 C++ 源文件。
然后我创建了一些指向源文件夹的符号链接,以便 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 doc:
https://docs.gradle.org/2.9/userguide/nativeBinaries.html
有用的链接: