android bundleRelease不签名aab

时间:2019-06-08 08:17:59

标签: android google-play release signing

我已经编写了一个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

似乎一切井井有条,但Play商店不接受aab:

The Android App Bundle was not signed.

我如何构建可发布的aab?

4 个答案:

答案 0 :(得分:2)

如果任何人仍在寻找解决方案-在发布配置中将debuggable设置为false。您的应用程序构建gradle文件应具有以下内容-

this.players.then(res => console.log(res)).catch(err => console.log(err))

答案 1 :(得分:1)

似乎我在这里How to create a release signed apk file using Gradle?找到了解决方案,显然buildType需要一个 signingConfig 条目。添加该块后,这些块在我的构建文件中的外观如下。

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

我期望已经在那里很奇怪吗?由于我既不是IntelliJ也不是Gradle的粉丝,因此我将对整个构建和发布过程的感受归结为对工具链的经验不足。重要的是该应用程序已在Play商店中。

答案 2 :(得分:0)

您可以使用./gradlew :app:bundleRelease 代替 ./gradlew bundleRelease

对我有用!

答案 3 :(得分:0)

我遇到了类似的问题,我的风味签名不正确。我在 buildTypes 中指定了签名默认值,然后在 productFlavors 中覆盖。

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

 productFlavors {
    myFlavor {
        signingConfig ...
    }

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