2016-12-01 2 views
0

Je souhaite accéder à versionCode et versionName dans defaultConfig à partir d'une tâche Gradle. J'utilise le plugin gradle expérimental. J'ai essayé model.android.defaultConfig.versionCode mais il ne reconnaît pas android ...Comment accéder à versionCode à partir de la tâche dans Gradle Experimental Plugin

apply plugin: 'com.android.model.application' 

apply from: "../config.gradle" 
apply from: "../gitversion.gradle" 
def config = ext.configuration 

model { 
    android { 
     compileSdkVersion = config.compileSdkVersion 
     buildToolsVersion = config.buildToolsVersion 

     defaultConfig { 
      applicationId = 'eu.tss.apitest' 
      minSdkVersion.apiLevel = config.minimumSdkVersion 
      targetSdkVersion.apiLevel = config.targetSdkVersion 
      defaultConfig { 

      versionCode = 1 
      versionName = '1.0' 
      ext.printVersions(versionCode,versionName) 
     } 
     buildTypes { 
      release { 
       minifyEnabled false 
       proguardFiles.add(file('proguard-android.txt')) 
      } 
     } 

    } 
    android.lintOptions { 

     abortOnError false 
    } 
} 

dependencies { 
    println rootProject.getName() 
    compile 'com.android.support:appcompat-v7:25.0.0' 
    compile project(':tssapiandroid') 
    compile project(path: ':tssuielements') 
} 

task printVersions{ 

    //I would like to access versionCode here:) 
} 

Répondre

0
' String versioncode = "-1"; 


          PackageManager manager = context.getPackageManager(); 
          PackageInfo info = null; 
          try { 
           info = manager.getPackageInfo(context.getPackageName(), 0); 
          } catch (PackageManager.NameNotFoundException e) { 
           e.printStackTrace(); 
          } 
info.versionCode;' 
2

Créer méthode dans votre build.gradle:

def getVersionCode = { -> 
    // calculate versionCode code or use hardcoded value 
    return 1 
} 

Utilisez cette méthode defaultConfig:

android { 
    defaultConfig { 
     versionCode getVersionCode() 
    } 
} 

Utilisez la même méthode dans votre tâche personnalisée:

task printVersions{ 
    print "Version code is " + getVersionCode() 
} 

solution alternative est d'accéder à la propriété versionCode directement:

task printVersions{ 
    print "Version code is $project.android.defaultConfig.versionCode" 
} 
+0

Je veux accéder à ce qui est réellement dans android.defaultConfig.versionCode de cette tâche PrintVersion. – emKaroly

+0

cochez "solution alternative" dans ce cas. –

+0

Ne fonctionne pas je reçois: Erreur: (65, 0) Impossible d'obtenir la propriété inconnue 'android' pour le projet ': app' de type org.gradle.api.Project. J'utilise un plugin expérimental donc il y a un modèle avant android mais projeect.model.android.defaultConfig.versionCode ne fonctionne pas non plus. – emKaroly