簡體   English   中英

將 Android App Bundle 上傳到 Google Play 控制台 - 密鑰簽名錯誤

[英]Uploading Android App Bundle to Google Play Console - key signing error

我正在嘗試將全新的 .aab 文件上傳到 Google Play 控制台,但不斷收到此錯誤:

上傳失敗
您上傳的 APK 或 Android App Bundle 已使用密鑰進行簽名,該密鑰還用於對交付給用戶的 APK 進行簽名。 因為您注冊了 Google Play 的 App Signing,所以您應該在上傳之前使用新密鑰對您的 APK 或 Android App Bundle 進行簽名。

我完全被難住了,因為我在生成應用程序包時為此應用程序包生成了一個新密鑰,即通過 Build > Generate Signed Bundle / APK... Android Studio 中的菜單項,所以它是一個全新的密鑰,未被其他應用程序使用。
我什至嘗試創建一個全新的密鑰庫,其中包含一個新密鑰,但總是出現相同的錯誤。 這是其他人遇到的一些怪癖嗎?

在為此應用程序注冊 Google Play 應用程序簽名時,我選擇了“讓 Google 管理和保護您的應用程序簽名密鑰(推薦)”選項,並從我閱讀的所有文檔中選擇了您用於對應用程序進行簽名的密鑰with first 成為“上傳密鑰”,所以看起來我做的一切都是正確的,但沒有骰子。

有沒有人對此有任何建議或過去的經驗?

我面臨同樣的問題,在我的情況下signinConfig已設置,我犯了一個簡單的錯誤,我忘記將 app debuggable 更改為false 因此,即使我從菜單或 gradle 命令生成,構建也已成功生成,但它是可調試的,因此 Play 商店不接受簽名的 apk 並給我和類似Upload Failed The Android Bundle was not Signed in

好吧,經過大量的尖叫和喊叫,包括在聊天中聯系 Google Play Console 支持(他們只是一級支持,所以......沒有太大幫助)和電子郵件(他們把我放在太難的籃子里並說他們不能為應用程序開發提供支持 - 什么?問題在於將應用程序上傳到 Play Console,而不是應用程序開發!),我發現了這個自我回答的問題https://stackoverflow.com/a/54359729/845205 .

基本上,無論何時執行與登錄 Android Studio 相關的任何操作,請確保您正在執行 Clean & Rebuild Project。 出於某種原因,它認為我的新應用程序使用了我舊應用程序中的密鑰並繼續使用該密鑰進行簽名。 (我想解決方案畢竟是應用程序開發支持!)

確保在 build.gradle 文件中將 app debuggable 更改為 false

在此處輸入圖片說明

“通過 Android Studio 中的 Build > Generate Signed Bundle / APK... 菜單項,因此它是一個全新的密鑰,其他應用程序未使用。”

並不真地。 Android Studio 使用的密鑰庫與 Android SDK 安裝相關聯,因此從您的 Studio 創建的所有應用程序都使用相同的密鑰進行簽名。

發生的情況是您必須創建另一個應用程序,使用該密鑰庫對其進行簽名,並將其上傳到 Play 管理中心,從而使其成為用於簽署提供給最終用戶的 APK 的密鑰。 同時,您創建了另一個在 Play Signing 中注冊的應用:對於這個應用,上傳證書是從您上傳的第一個 APK 中提取的。 由於您也使用 Studio 簽署了該 APK,因此使用了相同的密鑰庫。 Play 檢測到這兩個應用程序的證書相同,並且由於您將相同的密鑰用於兩個不同的目的(第一個應用程序的應用程序簽名密鑰和第二個應用程序的上傳密鑰),Play 拒絕了它。 原因是應用簽名密鑰比上傳密鑰重要得多(后者可以重置而第一個不能),因此您不應將它們用於兩個不同的目的。

換句話說,您需要創建一個不同的密鑰庫來為您在 Play 簽名中注冊的應用程序簽名(理想情況下,每個應用程序一個),並確保您永遠不會將該密鑰庫用作另一個應用程序的應用程序簽名密鑰。

我在我們的應用程序中遇到了這個錯誤。 我們對所有應用程序使用相同的上傳密鑰。

因此,當您創建新應用程序時,請確保選擇Use an existing key that you sign an app with選項Use an existing key that you sign an app with而不是(Google recommended)選項,即向他們發送唯一的上傳密鑰。

真正令人討厭的部分是這個選項只能選擇一次,所以我們不得不刪除我們的應用程序並重新創建它。

嘗試從控制台刪除有關新應用程序的所有內容,然后首先生成新密鑰並使用新密鑰重建應用程序。 然后你可以重新上傳新的apk。

我的解決方案原來是改變構建變體的問題

回顧一下,當我嘗試將我簽名的 .aab 包文件上傳到 Google Play Console 以供開發人員使用時,我收到此錯誤Android App Bundle 未簽名。

請記住,此錯誤是模棱兩可的,可能是由本頁其他答案中可見的許多問題引起的。 我最初使用release版本變體上傳了我的應用程序。 忘記了我最初使用的變體,我嘗試上傳debug構建變體並出現此錯誤。

我的修復:上傳與原始版本相同的構建變體。 他們必須匹配!

以下解決方案對我有用。 將以下兩行添加到您的 gradle 文件中。

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

我遇到了同樣的問題,我通過刪除我的應用程序並再次添加它來播放控制台來解決它。

另一種情況是,如果您在應用程序 build.gradle 中設置了簽名配置。 在制作捆綁包時,您在簽名部分指定的內容似乎無關緊要 - 即使您制作新的或選擇其他密鑰庫 - 它也會使用 gradle 文件中指定的那個。

我也面臨這個問題,我加入這行signingConfig signingConfigs.release在android系統>應用程序>的build.gradle> {buildType{release{ signingConfig signingConfigs.release }}}

就我而言,這是因為我在我的項目中選擇了調試文件夾而不是發布文件夾作為 Android App Bundle 的目標。

我需要 App Bundle 進行內部測試,所以我想這就是我很自然地選擇它的原因。

我知道這是一個老問題,但由於我剛剛遇到這個問題並且沒有列出我的解決方案,所以我想分享它以便它可以幫助未來的一些堆棧。

我簽署應用程序的問題是條目testCoverageEnabled true位於

buildTypes{ release { ... }}

即使設置了debuggable false ,谷歌的錯誤消息是Upload Failed The Android Bundle was not Signeddebuggable version was uploaded

將 testCoverageEnabled 標志設置為 false 解決了我的問題。

從 CI/CD 將 aab 上傳到 Playstore 時遇到類似問題,添加

signingConfig 簽名配置.release

在發布配置中如下

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

確保您已在 build.gradle 中包含簽名配置,如下所示

signingConfigs {
    release {
        storeFile file("$projectDir/dummy.keystore")
        keyAlias 'dummyAlias'
        storePassword 'dummyPassword'
        keyPassword 'dummyPassword'
    }
}

就我而言,我有

可調試的真

in. 正確值為false

buildTypes
     {
         release {

只需創建一個新密鑰,它就會上傳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM