2016-12-01 61 views
0

我想从gradle任务访问defaultConfig中的versionCode和versionName。我正在使用实验gradle插件。我试图model.android.defaultConfig.versionCode但它不承认机器人......如何从Gradle实验性插件中的任务访问versionCode

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:) 
} 

回答

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

在创建方法您build.gradle

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

使用此方法defaultConfig

android { 
    defaultConfig { 
     versionCode getVersionCode() 
    } 
} 

在您的自定义任务中使用相同的方法:

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

替代解决方案是直接访问versionCode属性:

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

我想访问什么是真正的android.defaultConfig.versionCode从打印版本任务。 – emKaroly

+0

在这种情况下检查“替代解决方案”。 –

+0

不工作,我得到:错误:(65,0)无法获取类型为org.gradle.api.Project的项目':app'的未知属性'android'。我使用的是实验性插件,所以在android之前有模型,但projeect.model.android.defaultConfig.versionCode也不工作。 – emKaroly

相关问题