Gradle生成未签名的发布APK

5
我有一个如下结构的项目:

Root
    \__main_project
    |
    \__modules
       \__
       |  library1
       |   
       \__
          library2

我在我的Gradle中有以下配置:

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.0'

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
    }

    signingConfigs {
        release {
            storeFile file('/home/home/.signing/test.keystore')
            storePassword 'testtest'
            keyAlias 'testtest'
            keyPassword 'testtest'
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

为了构建我的项目,我运行以下命令:

./gradlew :main_project:assembleRelease

但是它仅生成main_project-release-unsigned.apk文件

我的问题是,当我指定了所有必需的配置时,为什么它会生成未签名的apk文件。

谢谢。

https://dev59.com/DHrZa4cB1Zd3GeqP7NO8#20876737 - Gabriele Mariotti
我知道即使是调试版本也会使用debug.keystore进行签名,但我不明白为什么它生成的apk名称是unsigned?这对我来说很奇怪。 - endryha
2个回答

10

如Google所建议的,配置build.gradle文件的“官方”方法在此说明中解释。

基本上,您需要添加一个“signinConfig”,其中指定密钥库的位置和密码。然后,在发布版本构建类型中,引用该签名配置。

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("myreleasekey.keystore")
            storePassword "password"
            keyAlias "MyReleaseKey"
            keyPassword "password"
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
...

然后使用"assembleRelease"任务构建应用程序。


1
尝试使用./gradlew assembleRelease命令。您可能还需要增强buildTypes的发布部分。
buildTypes {
    release {
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.release
        zipAlign true
    }
}

请参阅如何使用Gradle创建已签名的发布apk文件?上的task askForPasswords,了解如何提示输入密码,以避免将密码存储在该文件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接