无法获得installRelease gradle任务以显示在Android Studio中

Gre*_*reg 1 android gradle android-studio

我有assembleRelease,它有效,以及assembleDebug和installDebug.

这是我的build.gradle中的一块,我认为它会让任务显示出来,但列表仍然没有.切换构建变体对正在出现的gradle任务没有任何影响.

有任何想法吗?

谢谢!

编辑1 - 我的顶级build.gradle文件("Project:trunk")包含

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
dependencies {
}
Run Code Online (Sandbox Code Playgroud)

我的app级build.bradle文件是

import java.util.regex.Pattern
apply plugin: 'com.android.application'
android {

    compileSdkVersion 19
    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId "com.xyz"
        minSdkVersion 16
        targetSdkVersion 17
    }
    dependencies {
        compile "com.google.android.gms:play-services:3.1.+"
        compile "ch.acra:acra:4.5.0"
    }

    signingConfigs {
        release {
            storeFile file('redact')
            keyAlias 'asdf'
            storePassword System.getenv("ANDROIDKEYPW")
            keyPassword System.getenv("ANDROIDKEYPW")

        }
        debug {
            keyAlias 'asdf'
            storeFile file('redact')
            storePassword System.getenv("ANDROIDKEYPW")
            keyPassword System.getenv("ANDROIDKEYPW")
        }
    }

    buildTypes {
        release {
            minifyEnabled true
            debuggable false
            signingConfig signingConfigs.release

            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            debuggable true

        }
    }
    productFlavors {
    }
}

task incrementVersionCode << {
    println(":incrementVersionCode - Incrementing Version Code...")
    def manifestFile = file("src/main/AndroidManifest.xml")
    def patternVersionCode = Pattern.compile("versionCode=\"(\\d+)\"")
    def manifestText = manifestFile.getText()
    def matcherVersionCode = patternVersionCode.matcher(manifestText)
    matcherVersionCode.find()
    def mVersionCode = Integer.parseInt(matcherVersionCode.group(1))
    def mNextVersionCode = mVersionCode + 1
    def manifestContent = matcherVersionCode.replaceAll("versionCode=\"" + mNextVersionCode + "\"")
    println(":incrementVersionCode - current versionCode=" + mVersionCode);
    println(":incrementVersionCode - next versionCode=" + mNextVersionCode);
    manifestFile.write(manifestContent)
}
task incrementVersionName << {
    println(":incrementVersionName - Incrementing Version Name...")
    def manifestFile = file("src/main/AndroidManifest.xml")
    def patternVersionNumber = Pattern.compile("versionName=\"(\\d+)\\.(\\d+)\\.(\\d+)\"")
    def manifestText = manifestFile.getText()
    def matcherVersionNumber = patternVersionNumber.matcher(manifestText)
    matcherVersionNumber.find()
    def majorVersion = Integer.parseInt(matcherVersionNumber.group(1))
    def minorVersion = Integer.parseInt(matcherVersionNumber.group(2))
    def pointVersion = Integer.parseInt(matcherVersionNumber.group(3))
    def mVersionName = majorVersion + "." + minorVersion + "." + pointVersion
    def mNextVersionName = majorVersion + "." + minorVersion + "." + (pointVersion + 1)
    def manifestContent = matcherVersionNumber.replaceAll("versionName=\"" + mNextVersionName + "\"")
    println(":incrementVersionName - current versionName=" + mVersionName);
    println(":incrementVersionName - new versionName=" + mNextVersionName);
    manifestFile.write(manifestContent)
}
task release << {
    println(":release - Build and Version Increment")
}
task debug << {
    println(":debug - Build")
}
incrementVersionName.mustRunAfter build
incrementVersionCode.mustRunAfter build
assembleRelease {}.dependsOn incrementVersionCode
assembleRelease {}.dependsOn incrementVersionName

dependencies {
}
Run Code Online (Sandbox Code Playgroud)

Com*_*are 5

添加signingConfig signingConfigs.release到您的release构建类型:

buildTypes {
    release {
        minifyEnabled true
        debuggable false
        signingConfig signingConfigs.release
    }

    // other good stuff here
}
Run Code Online (Sandbox Code Playgroud)

您的release闭包内部signingConfigs会创建一个命名的签名配置.但是,release由于名称不会导致它自动被release构建类型使用.您可以命名签名配置gregRocks,然后signingConfig signingConfigs.gregRocksrelease构建类型中使用,并获得相同的结果.