2014-10-09 41 views
5

所有!Gradle獲得當前構建類型

我想讓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次,即,對於每種類型構建的,而不管當前構建的類型。這導致了對於任何類型的構建都設置了調試選項的事實。任何人都可以告訴我如何解決這個問題?

+0

https://groups.google.com/forum/#!topic/adt-dev/iSZuHNSdJHI – CommonsWare 2014-10-09 20:28:50

+0

[如何在Android Gradle配置中獲取當前buildType]可能的副本(http://stackoverflow.com/questions/ 25739163 /如何獲取當前buildtype在Android的gradle配置) – bummi 2014-12-12 14:19:51

+0

我在這裏回答:http://stackoverflow.com/a/42839705/468360(最簡單的解決方案) – Codeversed 2017-03-16 16:31:11

回答

2

添加這取決於每個assembleXxx任務和財產任務建立後,調用

看到我answer了類似的問題。