2015-06-05 14 views
5

Chciałbym umieścić wspólny kod skryptowy gradle w udostępnionym pliku .gradle. Następnie mogę użyć go ponownie, używając instrukcji apply from:.Gradle: przekazywanie parametrów do `apply from: <file>`

Pytanie brzmi, czy możliwe jest przekazanie parametrów do zastosowanego skryptu? Na przykład, chciałbym ponownie wykorzystać następujące płyty kotła:

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

Problemem jest tutaj: apply plugin: 'com.android.application'. Chciałbym ponownie użyć tego kodu do projektów aplikacji lub projektów biblioteki Androida. Więc muszę trochę parametr w celu podjęcia decyzji, które wtyczki do stosowania:

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

Oczywiście, mogę tylko określić pewne właściwości projektu na poziomie w tym konkretnym przypadku, ale chciałbym wiedzieć, czy to możliwe, aby przejść parametry po wywołaniu skryptu:

Odpowiedz

2
  1. zastosowanie od: jest linia to <> nie można przekazać parametrów.
  2. jednak działa na tym samym kontekście i do nich na tym samym projekcie, więc można zrobić coś: ext.isUsingApp=true; apply from: 'xxx'
  3. jeśli to jedyna różnica radzę Ci zrobić coś następującego:
    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' 
         } 
        } 
    } 
    

następnie w aplikacji build.gradle:

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

następnie w swoim bibliotekami build.gradle:

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

prostego Boolean ma potrzeby tworzenia parametru.

Powiązane problemy