0
作为使用NDK的Android应用程序的一部分,我需要将一些常量从C/C++世界导出到Java中。出于显而易见的原因,我宁愿有这种自动化。我正在使用Android Studio和NDK支持。如何生成在Android Studio中使用Gradle构建Java源代码?
如何从shell脚本中随时生成一些.java
文件,每当应用程序构建时,该脚本将由Gradle运行?理想情况下,这个.java
文件将放置在某个构建中介体目录中,并且不必位于应用程序源目录中。
举个例子,shell脚本会产生这样的Java源:
public enum Type {
FOO,
BAR
}
从这个C++源:
enum class Type {
FOO,
BAR
}
仅供参考这里的摇篮的简化版本文件我开始from Android Studio:
apply plugin: 'com.android.model.application'
model {
compileOptions.with {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.2"
defaultConfig.with {
applicationId = "..."
minSdkVersion.apiLevel = 18
targetSdkVersion.apiLevel = 23
}
defaultConfig.multiDexEnabled = true
}
android.ndk {
platformVersion = "18"
moduleName = "jni"
...
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-rules.txt'))
ndk.with {
CFlags.add("-Werror")
cppFlags.add("-Werror")
}
}
}
android.productFlavors {
create("arm7") {
ndk.abiFilters.add("armeabi-v7a")
}
}
}
repositories {
...
}
dependencies {
...
}
apply plugin: 'com.google.gms.google-services'
感谢。如何通过运行shell脚本而不是定义java源代码? – Pol
请参阅编辑。我添加了一个如何在'type:Exec'闭包中运行脚本的例子。您只需使脚本指向'sourceSets.main.java.srcDirs'中定义的dir。如果您的脚本以非零值退出,“shellScriptToGenerateSources”任务将失败。 – JBirdVegas
再次感谢。我只是很难将你的Gradle示例与Android Studio使用的格式进行协调(请参阅我的更新问题) - 如何将更改合并到Android Studio Gradle文件中? – Pol