※ 引述《ADSL1234567B (只是個路人 )》之銘言
> 繼續用 debug key 簽署,你 build apk 要注意 release 版用的是哪一把金鑰。
> 如果你用 Google Play App Signing 這服務,就還有辦法把 key 換掉,但你已經是手動上傳簽署過的 apk,基本上這個 bundle ID 沒救了,就只能用當初使用的 debug key。
可是無論是debug key或release版的金鑰,無論是debug產生apk檔或正式發布產生的apk檔,
不是一定都至少會產生一種已經簽證金鑰的apk檔嗎?
(好像要用命令提示字元java apksigner.jar ...之類的指令才能查詢apk檔案是否有簽證與簽證的版本)
所以我不知道要如何產生一個無金鑰的apk檔?哪怕是debug在手機上產生apk的方式也有debug金鑰。
雖然我從來就沒有用debug金鑰成功發布過,更不曉得Google Play App Signing是什麼東西。
因為我都一直沿用在eclipse就產生過的keystore檔案給予apk檔金鑰。
然而該金鑰就只有V1版本的一組,不知道如何沿用的同時額外再產生V2版本的舊keystore檔金鑰?
因為當我要發布應用程式時就遇到這個問題了,該apk檔沒有V2版本的金鑰不讓我發布API 30的版本。
然而當我更新某個應用程式時,目標設在API 29時,卻顯示警告訊息
您的應用程式目前的目標 API 級別是 29,但目標 API 級別至少須為 30,才能確保應用程式採用最新的 API,讓安全性與執行效能達到最佳狀態。
自 2021 年 8 月起,新應用程式必須指定 Android 11 (API 級別 30) 以上的目標版本。
自 2021 年 11 月起,應用程式更新必須指定 Android 11 (API 級別 30) 做為目標版本。
然而我把該App的目標API級別為30時,導致我無法發布此apk檔。出現的錯誤訊息是:
您上傳的 APK 含有無效的簽名 (進一步瞭解簽署功能)。apksigner 提供的錯誤訊息如下:ERROR: MIN_SIG_SCHEME_FOR_TARGET_SDK_NOT_MET: Target SDK version 30 requires a minimum of signature scheme v2; the APK is not signed with this or a later signature scheme
雖然我不太了解英文那段話的意思,
但問題是我目前使用的密鑰(keystore檔)是當初用eclipse產生的,並沒有所謂的v2簽證。
那以後我不就不能再更新舊的App了嗎?因為已經使用了原來沒有v2簽證的keystore檔的金鑰。
另外我也不知道以後發布新的應用程式,能否沿用舊的keystore檔的金鑰(並添加v2簽證)?
又或者乾脆使用新的金鑰,但我又擔心會發生另類問題,是否有v2簽證、舊的App該怎麼重新發布?
而且我也不明白為何現在看到金鑰的副檔名是jks,而不是keystore。
我只知道我一直沿用舊的keystore,不然到時候要更新App時會遭遇樓主所說的阻攔(無法完成簽署)。
另外又有傳言以後發布新的應用程式時都要使用Android App Bundle的格式才能上架,這該怎麼辦?
是要修改應用程式apk檔的格式,還是金鑰檔案的格式?
更何況我還不懂什麼是Android App Bundle,也不知道怎麼做才能變成那樣的格式。
此外,我還不曉得Android API版本的市佔率如何(怎麼現在連官方的網站都沒有?),
因為我考慮多少等級以下的API版本市占率已經低到可以忽略。