2015-06-05 17 views
5

Vorrei inserire un codice di script comune gradle nel file condiviso .gradle. Quindi, posso riutilizzarlo usando la dichiarazione apply from:.Gradle: parametri passanti a 'apply from: <file> `

La domanda è se è possibile passare i parametri allo script applicato? Per esempio, mi piacerebbe riutilizzare il seguente piastra della caldaia:

apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' 
apply plugin: 'org.robolectric' 

configurations { 
    apt 
} 

android { 
    compileSdkVersion rootProject.ext.compileSdkVersion 
    buildToolsVersion rootProject.ext.buildToolsVersion 

    defaultConfig { 
     minSdkVersion rootProject.ext.minSdkVersion 
     targetSdkVersion rootProject.ext.targetSdkVersion 
     versionCode rootProject.ext.versionCode 
     versionName rootProject.ext.versionName 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

Il problema è qui: apply plugin: 'com.android.application'. Mi piacerebbe riutilizzare questo codice per progetti applicativi o progetti di librerie Android. Quindi ho bisogno di alcuni parametri, al fine di decidere quale plugin per applicare:

// assuming <isApplicationProject> - is a script parameter 
if (isApplicationProject) { 
    apply plugin: 'com.android.application' 
} else { 
    apply plugin: 'com.android.library' 
} 

Naturalmente, posso solo definire alcune proprietà a livello di progetto in questo caso particolare, ma mi piacerebbe sapere se è possibile passare parametri su richiamo dello script

risposta

2
  1. applicare da: è linea include <> non è possibile passare i parametri.
  2. tuttavia viene eseguito nello stesso contesto e loro sullo stesso progetto, in modo da poter fare qualcosa di: ext.isUsingApp=true; apply from: 'xxx'
  3. se questa è l'unica differenza vi consiglio di fare qualcosa di quanto segue:
    myinclude .gradle:

    apply plugin: 'com.neenbedankt.android-apt' 
    apply plugin: 'org.robolectric' 
    
    configurations { 
        apt 
    } 
    
    android { 
        compileSdkVersion rootProject.ext.compileSdkVersion 
        buildToolsVersion rootProject.ext.buildToolsVersion 
    
        defaultConfig { 
         minSdkVersion rootProject.ext.minSdkVersion 
         targetSdkVersion rootProject.ext.targetSdkVersion 
         versionCode rootProject.ext.versionCode 
         versionName rootProject.ext.versionName 
        } 
        buildTypes { 
         release { 
          minifyEnabled true 
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
         } 
        } 
    } 
    

poi nella vostra build.gradle app:

apply plugin: 'com.android.application' 
apply from: '../includes/myinclude.gradle' 

poi nelle vostre librerie build.gradle:

apply plugin: 'com.android.library' 
apply from: '../includes/myinclude.gradle' 

per un semplice booleano alcuna necessità di creare parametri.

Problemi correlati