android bundleRelease 不签署 aab

问题描述 投票:0回答:6

我已经编写了一个 Android 应用程序,但发布过程的最后一步仍然让我望而却步。我假设当我运行 gradle bundleRelease 时,它会生成我可以在 Play 商店上传的 aab 文件。但是 Play 商店说捆绑包未签名。但是,构建过程说它正在签名:

> Task :app:preBuild UP-TO-DATE
> Task :app:preReleaseBuild UP-TO-DATE
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :app:generateReleaseResValues UP-TO-DATE
> Task :app:generateReleaseResources UP-TO-DATE
> Task :app:mergeReleaseResources UP-TO-DATE
> Task :app:checkReleaseManifest UP-TO-DATE
> Task :app:createReleaseCompatibleScreenManifests UP-TO-DATE
> Task :app:mainApkListPersistenceRelease UP-TO-DATE
> Task :app:processReleaseManifest UP-TO-DATE
> Task :app:bundleReleaseResources UP-TO-DATE
> Task :app:checkReleaseDuplicateClasses UP-TO-DATE
> Task :app:mergeExtDexRelease UP-TO-DATE
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:generateReleaseBuildConfig UP-TO-DATE
> Task :app:prepareLintJar UP-TO-DATE
> Task :app:generateReleaseSources UP-TO-DATE
> Task :app:javaPreCompileRelease UP-TO-DATE
> Task :app:processReleaseResources UP-TO-DATE
> Task :app:compileReleaseJavaWithJavac UP-TO-DATE
> Task :app:transformClassesWithDexBuilderForRelease UP-TO-DATE
> Task :app:mergeDexRelease UP-TO-DATE
> Task :app:mergeReleaseShaders UP-TO-DATE
> Task :app:compileReleaseShaders UP-TO-DATE
> Task :app:generateReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseJniLibFolders UP-TO-DATE
> Task :app:transformNativeLibsWithMergeJniLibsForRelease UP-TO-DATE
> Task :app:processReleaseJavaRes NO-SOURCE
> Task :app:transformResourcesWithMergeJavaResForRelease UP-TO-DATE
> Task :app:buildReleasePreBundle UP-TO-DATE
> Task :app:collectReleaseDependencies UP-TO-DATE
> Task :app:configureReleaseDependencies UP-TO-DATE
> Task :app:packageReleaseBundle UP-TO-DATE
> Task :app:signingConfigWriterRelease UP-TO-DATE
> Task :app:signReleaseBundle
> Task :app:bundleRelease

gradle 构建脚本中有一个签名部分:

android {
    ...
    signingConfigs {
        release {
            storeFile file(...)
            storePassword '...' 
            keyAlias '...'
            keyPassword '...'
        }
    }

如果我在运行构建之前删除所有 aab 文件,则会在

中生成一个 app.aab
..\app\build\outputs\bundle\release

似乎一切正常,除了游戏商店不接受 aab:

The Android App Bundle was not signed.

如何构建可发布的 aab?

android google-play release signing
6个回答
14
投票

如果有人仍在寻找解决方案 - 在发布配置中将 debuggable 设置为 false。你的应用构建 gradle 文件应该有以下 -

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
            debuggable = false
        }
    }

5
投票

看来我在这里找到了解决方案How to create a release signed apk file using Gradle?, apparently an signingConfig entry is needed in the buildType.下面是添加它后块在我的构建文件中的样子。

android {
    ...
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
}

我以为它已经存在了,这很奇怪吗?由于我既不是 IntelliJ 也不是 Gradle 的粉丝,我将把我对整个构建和发布过程的感受归结为对工具链缺乏经验。重要的是该应用程序在 Play 商店中。


1
投票

我有一个类似的问题,我的口味签名不正确。我在

buildTypes
中指定了签名默认值,然后在
productFlavors
中覆盖。

buildTypes { 
    stage { 
        signingConfig ... 
     } 
    release { 
        signingConfig ...
    }  
}

 productFlavors {
    myFlavor {
        signingConfig ...
    }

Running

./gradlew bundleMyFlavorStage
buildTypes.stage
抓取了错误的签名配置,而不是产品风味覆盖。我的解决方案是从
signingConfig
buildTypes.stage
中删除
buildTypes.release
并将覆盖保留在
productFlavors
.


0
投票

你可以使用

./gradlew signReleaseBundle instead of ./gradlew bundleRelease


0
投票

你可以使用

./gradlew :app:bundleRelease
代替
./gradlew bundleRelease


-2
投票

感谢 debuggable = false ......

© www.soinside.com 2019 - 2024. All rights reserved.