12

Ho un progetto multi-modulo. Dalla radice del mio progetto (che contiene più moduli), voglio essere in grado di chiamare "gradle build" e utilizzare un diverso AndroidManifest in uno dei miei moduli a seconda di alcuni parametri che ho inserito. Qual è il modo migliore per realizzare Questo? Dovrei usare un file gradle.properties o posso specificare un diverso build.gradle in qualche modo nel mio file settings.gradle? Qualsiasi aiuto apprezzato!Come dire a Gradle di utilizzare un diverso AndroidManifest dalla riga di comando?

settings.gradle:

include 'ActionBarSherlock' 
include '<main_app>' 

build.gradle:

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4.2' 
    } 
} 

apply plugin: 'android' 

dependencies { 
    compile project(':ActionBarSherlock') 
} 

android { 
    buildToolsVersion "17.0" 
    compileSdkVersion 17 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 
    } 
} 

sto cercando il modo migliore per utilizzare un AndroidManifest.xml diversa, dire quello che ho in // test /AndroidManifest.xml. E ho bisogno di essere in grado di specificare questo cambiamento dalla riga di comando. Qualche idea?

risposta

13

Ho risolto questo problema utilizzando diversi tipi di build.

Ecco la mia build.gradle:

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4.2' 
    } 
} 

apply plugin: 'android' 

dependencies { 
    compile project(':facebook-android-sdk-3.0.1:facebook') 
    compile project(':google-play-services_lib') 
    compile project(':nineoldandroids') 
    compile project(':SlidingMenu-master:library') 
    compile project(':ViewPagerIndicator') 
    compile project(':volley') 
    compile project(':windowed-seek-bar') 
    compile files('compile-libs/androidannotations-2.7.1.jar', 'libs/Flurry_3.2.1.jar', 'libs/google-play-services.jar', 'libs/gson-2.2.4.jar', 'libs/picasso-1.1.1.jar', 'libs/crittercism_v3_0_11_sdkonly.jar', 'libs/gcm.jar', 'libs/apphance-library.jar') 
} 

android { 
    buildToolsVersion "17.0" 
    compileSdkVersion 17 

    signingConfigs { 
     debug { 
      storeFile file('keystores/debug.keystore') 
     } 
    } 

    buildTypes { 
     debug { 
      sourceSets { 
       main { 
        manifest.srcFile 'AndroidManifest.xml' 
        java.srcDirs = ['src'] 
        resources.srcDirs = ['src'] 
        aidl.srcDirs = ['src'] 
        renderscript.srcDirs = ['src'] 
        res.srcDirs = ['res'] 
        assets.srcDirs = ['assets'] 
       } 
      } 
     } 

     release { 
      zipAlign true 
      sourceSets { 
       main { 
        manifest.srcFile 'AndroidManifest.xml' 
        java.srcDirs = ['src'] 
        resources.srcDirs = ['src'] 
        aidl.srcDirs = ['src'] 
        renderscript.srcDirs = ['src'] 
        res.srcDirs = ['res'] 
        assets.srcDirs = ['assets'] 
       } 
      } 
     } 

     utest { 
      debuggable true 
      signingConfig signingConfigs.debug 

      sourceSets { 
       main { 
        manifest.srcFile 'utest/AndroidManifest.xml' 
        java.srcDirs = ['src'] 
        resources.srcDirs = ['src'] 
        aidl.srcDirs = ['src'] 
        renderscript.srcDirs = ['src'] 
        res.srcDirs = ['res'] 
        assets.srcDirs = ['assets'] 
       } 
      } 
     } 
    } 
} 

Si può vedere che per la mia uTest accumulo, che sto specificando un manifesto in una directory diversa. lavori.

+1

Sto riscontrando problemi con l'unione di diversi file AndroidManifest.xml che non dovrebbero essere uniti. Ad esempio, ho un debug e un qa buildType che vengono uniti insieme durante la creazione di debug. –

+0

Penso che sia di progettazione, in modo che tu possa avere permessi diversi per build differenti. –

+1

Questa risposta è più utile della documentazione dell'intero plugin;) –

Problemi correlati