2014-10-09 15 views
5

all!Gradle get corrente build type

Sto cercando di ottenere Gradle per generare file diversi (Android.mk e Application.mk) per le build di rilascio e debug. Il modo predefinito, facendo il plugin gradle per Android, non mi va bene, perché non consente di modificare Application.mk, lo voglio. Il problema principale è che non riesco a identificare il tipo di build corrente. Ho provato la seguente:

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 
} 

Ma scoperto che l'impostazione di parametri viene eseguita 2 volte, cioè per ogni tipo di costruzione, indipendentemente dal tipo di generazione corrente. Il che porta al fatto che per qualsiasi tipo di build imposta le opzioni di debug. Qualcuno può consigliarmi come risolvere questo problema?

+0

https://groups.google.com/forum/#!topic/adt-dev/iSZuHNSdJHI – CommonsWare

+0

possibile duplicato di [Come ottenere buildType corrente nella configurazione di Gradle Android] (http://stackoverflow.com/questions/ 25739163/how-to-get-current-buildtype-in-android-gradle-configuration) – bummi

+0

Ho risposto qui: http://stackoverflow.com/a/42839705/468360 (soluzione più semplice) – Codeversed

risposta

2

Aggiungere un'attività che dipende ogni attività assembleXxx e proprietà impostazione dopo che è invocato

veder la mia answer per problema simile.