2015-06-05 5 views
5

Ich würde gerne einen gemeinsamen Code gradle Skript in gemeinsame .gradle Datei. Dann kann ich es mit apply from: Anweisung wiederverwenden.Gradle: Parameter übergeben an "anwenden von: <file>`

Die Frage ist, ob es möglich ist, Parameter an angewendetes Skript zu übergeben? Zum Beispiel, würde Ich mag das folgende Kesselblech wieder zu verwenden:

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' 
     } 
    } 
} 

Das Problem dabei ist: apply plugin: 'com.android.application'. Ich möchte diesen Code entweder für Anwendungsprojekte oder Android-Bibliotheksprojekte wiederverwenden. Also ich brauche einige Parameter anwenden, um die Plug-in zu entscheiden:

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

Natürlich kann ich definiere nur einige Projektebene Eigenschaft in diesem speziellen Fall, aber ich würde gerne wissen, ob es möglich ist, passieren Parameter beim Aufruf des Skripts

Antwort

2
  1. gelten von: ist Zeile enthalten <> Sie können keine Parameter übergeben.
  2. aber es auf dem gleichen Kontext und daher auf dem gleichen Projekt laufen wird, so dass Sie etwas von tun können: ext.isUsingApp=true; apply from: 'xxx'
  3. wenn das der einzige Unterschied ist, ich Ihnen etwas von der folgenden tun würde Ihnen raten:
    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' 
         } 
        } 
    } 
    

dann in Ihrem build.gradle App:

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

dann in Ihrem Libs build.gradle:

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

für eine einfache Boolesche keine Notwendigkeit, Parameter zu erstellen.

Verwandte Themen