5
我想讓Gradle生成不同的文件(Android.mk和Application.mk),用於發佈和調試版本。默認的方式,gradle android插件這樣做不適合我,因爲它不允許修改Application.mk,我想。主要問題是我無法確定當前的構建類型。 我嘗試以下:
android {
...
defaultConfig {
project['CONFIGURATION_FLAGS'] = ''
project['APP_ABI'] = ''
project['APP_PLATFORM'] = 'android-9'
project['APP_STL'] = 'gnustl_static'
project['NDK_TOOLCHAIN_VERSION'] = 'clang'
}
buildTypes {
release {
project['CONFIGURATION_FLAGS'] = '-fvisibility=hidden'
project['APP_ABI'] = 'armeabi x86'
}
debug {
project['CONFIGURATION_FLAGS'] = '-g -DDEBUG -DENABLE_LOG'
project['APP_ABI'] = 'armeabi'
}
}
}
task processTemplates {
def templatesDir = System.getProperty('user.dir') + '/app/templates'
def jniDir = System.getProperty('user.dir') + '/app/src/main/jni'
// Android.mk
def configFlags = project['CONFIGURATION_FLAGS']
def androidMk = file(templatesDir + '/Android.mk').text
androidMk = androidMk.replaceAll '<CONFIGURATION_FLAGS>', configFlags
def newAndroidMk = new File(jniDir + '/Android.mk')
newAndroidMk.text = androidMk
// Application.mk
def appAbi = project['APP_ABI']
def appPlatform = project['APP_PLATFORM']
def appStl = project['APP_STL']
def toolchain = project['NDK_TOOLCHAIN_VERSION']
def applicationMk = file(templatesDir + '/Application.mk').text
applicationMk = applicationMk.replaceAll '<APP_ABI>', appAbi
applicationMk = applicationMk.replaceAll '<APP_PLATFORM>', appPlatform
applicationMk = applicationMk.replaceAll '<APP_STL>', appStl
applicationMk = applicationMk.replaceAll '<NDK_TOOLCHAIN_VERSION>', toolchain
def newApplicationMk = new File(jniDir + '/Application.mk')
newApplicationMk.text = applicationMk
}
但是發現的參數的設置,執行2次,即,對於每種類型構建的,而不管當前構建的類型。這導致了對於任何類型的構建都設置了調試選項的事實。任何人都可以告訴我如何解決這個問題?
https://groups.google.com/forum/#!topic/adt-dev/iSZuHNSdJHI – CommonsWare 2014-10-09 20:28:50
[如何在Android Gradle配置中獲取當前buildType]可能的副本(http://stackoverflow.com/questions/ 25739163 /如何獲取當前buildtype在Android的gradle配置) – bummi 2014-12-12 14:19:51
我在這裏回答:http://stackoverflow.com/a/42839705/468360(最簡單的解決方案) – Codeversed 2017-03-16 16:31:11