2016-06-14 1 views
0

i ont une bibliothèque qui utilise toutes nos applications. , sauf pour le code partagé et les ressources que je voulais partager le code gradle. chaque application est construite: some_app/ | - settings.gradle - build.gradle | - mylib/ | -build.gradle - other_lib/ - app/ | - build.gradleexécuter du code gradle commun dans le projet de base Android fichier gradle

je suis en ce moment parler de la build.gradle dans le répertoire racine. Celui qui définit la fermeture de buildScript avec fermeture de dependecies et allprojects {}.

J'ai essayé d'appliquer à partir de: './mylib/gradle_files/baseProject.gradle' cela fonctionne, mais alors mon application ne peut pas trouver le plugin android. pour une raison quelconque, les dépendances classpath n'ont pas été injectées dans le script de construction! i alors essayé de créer une liste et l'utiliser:

ext.projectBaseDependencies = ['com.android.tools.build:gradle:2.1.2', 'com.google.gms:google-services:3.0.0'] 

J'ai ensuite utilisé la liste dans ma fermeture:

apply from: './mylib/gradle_files/baseProject.gradle' 

buildscript { référentiels { jcenter() } dépendances { classpath projectBaseDependencies } }

ne fonctionne pas, gradle ne trouve pas ma variable définie dans baseProject.gradle. J'ai une intuition qui s'appliquent de travaux après la fermeture buildscript est évaluée :-(

Est-il possible de partager le code de script gradle dans toutes les applications? S'appliquent pas de, ce qui peut fonctionner? Configuration sauter et config dans afterEvaluate { ?} clause

Répondre

0

Pourquoi ne pas utiliser un fichier Gradle dans votre bibliothèque commune Si votre bibliothèque commune comprend un fichier build.gradle, vous pouvez appliquer le plug-in de la bibliothèque Android:

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 

     consumerProguardFiles "proguard-rules.pro" 
    } 
} 

dependencies { 
    // Your common dependencies here 
} 

vous pouvez ensuite inclure la bibliothèque dans votre projet settings.gradle:

include ':mobile' 
project(':common').projectDir = new File("/Users/example/path/to/common") 

Ensuite, ajoutez à vos dépendances dans le du projet build.gradle:

dependencies { 
    compile project(':common') 
    // Your other project dependencies 
} 
+0

cela ne permet maintenant les propriétés d'actions du buildscript lui-même, pour le fichier gradle DELA application et le fichier gradle des bibliothèques je n'ai pas problème à utiliser 'apply from:' il est juste dans la construction de la racine, le fichier gadle et la fermeture de bildScript {} – codeScriber