android - 无法让 installRelease gradle 任务显示在 Android Studio 中

标签 android android-studio gradle

我有 assembleRelease,它可以工作,还有 assembleDebug 和 installDebug。

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

有什么想法吗?

谢谢!

编辑 1 - 我的顶级 build.gradle 文件(“项目:主干”)包含

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
dependencies {
}

我的应用级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 {
}

最佳答案

添加signingConfig signingConfigs.release给你的release构建类型:

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

    // other good stuff here
}

你的 release signingConfigs 内部关闭创建一个命名的签名配置。然而,release作为名称不会导致它自动被 release 使用构建类型。您可以将签名配置命名为 gregRocks , 然后使用 signingConfig signingConfigs.gregRocksrelease构建类型,并得到相同的结果。

关于android - 无法让 installRelease gradle 任务显示在 Android Studio 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31297492/

相关文章:

android - BroadcastReceiver 和 intent-filter?

Android match_parent 向后兼容问题不会编译 eclipse

java - 如果 Kotlin 中的 try catch 失败返回什么?

java - Gradle-构建 : Cannot convert the provided notation to a File or URI

groovy - Gradle 找不到 JavaFX 类

android - 无法从 ML Kit : FirebaseMLException: The load task failed 加载自定义模型

android - 如何处理互联网连接中断?

debugging - Android Studio IDE : Break on Exception

tabs - 在Android Studio中启动后不显示运行标签

java - Gradle 运行任务在控制台中运行时接受输入,但不作为 IDEA 运行配置