Android studio(Gradle)不会创建签名的apk

时间:2016-02-20 04:39:15

标签: android android-gradle build.gradle gradlew

为了模拟Espresso的服务器响应,我决定创建一个新的Build Type。我试图通过项目设置来做到这一点,但我得到了一些错误,所以我决定手动添加它。

我在build.gradle文件中有以下配置 - 在我的项目的根目录中:

androidConfiguration = {
        signingConfigs {
            debug {
                storeFile file("$rootProject.projectDir/debug.keystore")
                storePassword "android"
                keyAlias "androiddebugkey"
                keyPassword "android"
            }

            release {
                storeFile file("$rootProject.projectDir/androd-prod.keystore")
                storePassword System.getenv("KEYSTORE_PASSWORD")
                keyAlias System.getenv("KEY_ALIAS")
                keyPassword System.getenv("KEY_PASSWORD")
            }
        }
}

我在主模块的mock文件中添加了新的build.gradle构建类型。

    buildTypes {
        mock {
            // Setup default urls
            buildConfigField "String", "MY_URL_BASE", "\"\""

            // Enabling multidex support.
            multiDexEnabled true

            dexOptions {
                incremental true
                javaMaxHeapSize "4g"
            }

            applicationIdSuffix '.mock'
            versionNameSuffix '-mock'
            debuggable true
        }

        debug {...}

        release {
            signingConfig signingConfigs.release
            ...
        }

        applicationVariants.all { variant ->
            variant.outputs.each { v ->
                def f = v.outputFile
                def sha = 'git rev-parse --short HEAD'.execute().text.trim()
                def fname = f.name.replace(".apk", "-${defaultConfig.versionName}-${defaultConfig.versionCode}-${sha}.apk")
                v.outputFile = new File(f.parent, fname)
            }
        }
    }

我运行./gradlew clean aGM命令并且应用程序编译成功。但是,我的构建配置上有x个符号。所以,任何想法我的错误在哪里? enter image description here

1 个答案:

答案 0 :(得分:2)

将此行添加到mock buildType以使用默认的debug signingConfig:

buildTypes {
    mock {
        signingConfig signingConfigs.debug
    }
}

这也将启用gradle任务installMock,该任务在没有signedConfig的情况下将无法使用。 assembleMock只是在没有它的情况下创建一个未签名的构建。