常見審核問題
相信很多開發者肯定遇到過由於簽名的問題導致應用審核被拒的情況,比如:
-
新版本和在架版本簽名不一致
-
微信等賬號登錄、支付提示簽名和平台配置不一致
-
集成HMS的相關服務如PUSH失敗,map地圖加載不出來,原因是證書指紋不匹配
-
應用上架后,不同渠道應用更新不了,提示簽名不一致
等等
而你肯定有疑問,明明簽名一致,自己本地測試也沒有問題,為什么一到華為審核就被拒???如果你有遇到以上問題,那你很可能是華為AGC的應用簽名服務對你應用進行了重簽名導致的。
什么是應用簽名?
要解決這些疑問,先要了解什么是應用簽名?
網上一大堆資料,反正記住以下兩點:
-
簽名很重要,應用必須要有簽名,沒有簽名不讓上架。
-
簽名不能變,一旦變了,很多東西全亂套了,證書指紋會變,鑒權會變,應用更新不了等。反正依賴簽名的很多服務都無法使用。
所以一般開發者在開發應用的時候都會使用Android Studio或者命令的方式給應用簽名。
什么是AGC應用簽名服務?
而AGC應用簽名服務是干嘛的呢?說白了就是AGC提供了另一種給你的應用簽名的方式!
一共有兩種方式:
第一種是AGC完完全全給你的應用生成新簽名。簽名一定會改變,而且是宇宙唯一的。
對應界面叫做:“讓 AG Connect 創建並管理我的應用簽名密鑰”
為什么僅適用於新應用呢?剛剛前面講到,這種方式AGC會給你生成一個新的簽名,如果你已經有在架應用,那使用這種方式不可能生成一個和在架應用一樣的簽名了,所以當然用不了。
第二種是你自己上傳簽名文件,AGC不會給你生成新的簽名,只是使用你上傳的簽名文件給你的應用簽名。至於新的簽名是什么,取決於你上傳了什么,AGC只是保管一下。對應界面叫做:“導出並上傳密鑰和證書”
就是說你自己使用某個工具和命令把你的簽名導出成一個zip包的簽名文件,然后上傳到AGC,AGC用這個簽名文件給你應用簽名。所以你要是有在架應用的話,一定要傳一個和在架應用一樣的簽名文件,否則你的應用最終新老版本簽名就不一致了。
值得注意的是,目前這種方式已經支持校驗能力,如果傳的簽名和在架版本不一樣就會提示,且不允許上傳。
舉個例子,你有一款應用,自己本地用Android Studio簽名的,假設應用的簽名是A,然后你使用了AGC的應用簽名服務,選擇第一方式,那AGC會生成一個新的簽名B,你的應用上架審核和最終發布時簽名就被改成B了。所以很可能你本地測試時簽名是A,審核測試時應用的簽名是B。
如果你選擇第二方式,你需要傳一個zip的簽名文件,如果zip文件是通過是簽名A生成的,最終你的應用上架審核和發布時簽名就是A;如果是B生成的,簽名就是B;是C生成的,簽名就是C。反正就是你傳啥最終簽名就是啥。
如何選擇?
所以小伙伴千萬不要選錯了,也不要傳錯了。那應該怎么選擇呢?其實也很簡單。
一般來說,新應用如果只考慮在華為上架那就選第一種方式;如果要在多個渠道商店上架,那就選第二種方式,並且上傳和其他商店一樣的簽名文件。如果有些鑒權支付等服務依賴簽名,那就選第二種方式。
已上架應用的話只能選第二種方式了,只要保證你傳的簽名文件和在架版本一樣就可以。
講到這里,再回到最初的問題就知道很可能是選錯了簽名方式,或者傳錯了簽名文件導致應用簽名被改變了。遺憾的是簽名服務一旦使用不支持刪除,當前的解決方案只能是通過刪除應用來刪除簽名,然后重新創建應用,選擇正確的簽名方式、上傳正確的簽名文件。
題外話:
-
應用簽名≠應用簽名服務;簽名是必須的,應用簽名服務是可選的。
-
APK包可以選用應用簽名服務,AAB包必須要用。
-
簽名變了,對應證書指紋也會改變,依賴的服務需要配置新的證書指紋。
欲了解更多詳情,請參見:
AGC應用簽名服務:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-app_bundle
原文鏈接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202381566447710293&fid=0101271690375130218
作者:鼓樓趙又廷
