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