Android 上傳Apk至Google play store總結(jié)

本篇文章為本人第一次上傳Google Play的工作總結(jié),可能文章過于基礎(chǔ),大佬勿噴足陨,本文全部命令環(huán)境皆為 Windows。預(yù)計(jì)閱讀時(shí)間:10分鐘
update time : 2021年01月22日11:37:21

jks簽名問題

本地通過 gradlew resguardxxxRelease (自定義 resguardTask打包)生成正式版Apk娇未,提交Google play 提示密鑰時(shí)間即將到期墨缘。(心里納悶了 怎么會(huì)快到期了呢?)我們 通過 keytool 命令獲取 jks 中詳細(xì)信息:
確定 JDK bin文件夾下 有沒有Keytool 零抬。(如果沒有運(yùn)行 jarsigner.exe 文件镊讼,生成),然后使用

keytool -list -v -keystore  xxx.jks

生成簽名的時(shí)平夜,可以指定一個(gè)有效時(shí)間蝶棋,這個(gè)時(shí)間默認(rèn)為 25 年,并且 Google Play 也有硬性規(guī)定忽妒,上架的 App 簽名有效期必須在 2033-10-22 日期之后(一臉懵逼玩裙,其實(shí)就算25年也不行)。如果一直提示密鑰時(shí)間即將到期段直,可以嘗試將有效時(shí)間修改的更長(zhǎng)甚至為1000年

代碼問題

缺少64位CPU so包問題

在 Google Play 上發(fā)布的應(yīng)用必現(xiàn)支持 64 位架構(gòu)吃溅,這個(gè)意味著上架的應(yīng)用要包含多份架構(gòu)的 SO 包,
如果只有 'armeabi'鸯檬,是不行的决侈。為支持 64 位,增加 ,'arm64-v8a' 架構(gòu)喧务。

通過命令行 adb shell getprop ro.product.cpu.abi
根據(jù)返回值 可以看到手機(jī)默認(rèn)的so 文件夾赖歌。arm64-v8a 是64位的枉圃。另外,一般手機(jī)內(nèi)存超過4G 都是64位的俏站,因?yàn)?2支持的最大內(nèi)存是4G.

歷史VersionCode 問題

如果存在歷史提交app bundle記錄,需要更新 app version_code 序號(hào)痊土,一般自動(dòng)加一肄扎。
2020年4月12日 左右 ,對(duì)app 要求版本 target_sdk = 28左右

SSL Handler Err 警告

項(xiàng)目中使用 WebViewClient 對(duì)onReceivedSslError()方法回調(diào) 赁酝,不能使用mHandler.proceed() 直接同意犯祠,需要給用戶提示,讓用戶手動(dòng)同意認(rèn)可證書酌呆。
代碼塊示例 :

@Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        final SslErrorHandler mHandler = handler;
        AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
        builder.setMessage(view.getContext().getString(R.string.SSL_err));
        builder.setPositiveButton(view.getContext().getString(R.string.SSL_next), (dialog, which) -> mHandler.proceed());
        builder.setNegativeButton(view.getContext().getString(R.string.cancel), (dialog, which) -> mHandler.cancel());
        builder.setOnKeyListener((dialog, keyCode, event) -> {
            if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
                mHandler.cancel();
                dialog.dismiss();
                return true;
            }
            return false;
        });
        AlertDialog dialog = builder.create();
        dialog.show();
    }

上架后測(cè)試問題

這里首先說一下 App bundle

Google 官方推出 App Bundle 已經(jīng)有一段時(shí)間了衡载,簡(jiǎn)單了解后明白它算是一個(gè)比較成熟的官方動(dòng)態(tài)化組件技術(shù),不過對(duì)于在國(guó)內(nèi)上線的應(yīng)用來說隙袁,基本感受不到這個(gè)技術(shù)帶來的便利痰娱。再加上2019年底 Google 部分條件限制,現(xiàn)在提交正式版本 必須提交 App bundle 版本菩收,簡(jiǎn)單總結(jié)bundle:將所有情況下的資源全部提交到應(yīng)用市場(chǎng)上梨睁,下載時(shí)通過動(dòng)態(tài)判斷安裝符合用戶手機(jī)的資源包、語(yǔ)言包和abi包娜饵。

so 文件問題

上架下載APP 發(fā)現(xiàn)登錄一直進(jìn)不去坡贺,報(bào)錯(cuò)提示網(wǎng)絡(luò)請(qǐng)求 Put Body為空,(這里牽扯 ndk 請(qǐng)求字段加密和解密的問題)最開始以為 so 包是因?yàn)?bundle 動(dòng)態(tài)打包的原因沒有將so打進(jìn)去箱舞,驗(yàn)證問題:

下載 bundletool.jar

使用命令反編譯aab包


java -jar bundletool-all.jar build-apks --bundle= %YMCapp.aab% --output=%YMCapp.apks% --ks=%YMC.jks% --ks-pass=pass:%kspass% --ks-key-alias=%alias% --key-pass=pass:%keypass%

%YMCapp.aab% : aab文件遍坟,app bundle文件
%YMCapp.apks% : 輸出apks (本質(zhì)是zip ,修改后綴解壓)
%YMC.jks% : jks文件
%kspass% :key store 密碼
%alias% : 別名
%keypass% :key 密碼

命令行中需要替換的 最好都用絕對(duì)路徑

默認(rèn) bundle 生成的 aab包中晴股,分為Base Apks 和 Split apks 愿伴,針對(duì)不同分辨率、cpu架構(gòu)和語(yǔ)言都有不同的apk可供安裝电湘,Split apk中則針對(duì) lib 和 MATH文件進(jìn)行了區(qū)分(后期總結(jié)暫時(shí)沒有圖片公般,最好自己打包aab體會(huì))

發(fā)現(xiàn)沒有問題,認(rèn)為是分包的問題胡桨,默認(rèn)關(guān)閉aab 智能分包

bundle {
        density {
            enableSplit = false  // 樣式 尺寸文件
        }
        language {
            enableSplit = false  // 語(yǔ)言文件
        }
        abi {
            enableSplit = false  // abi so文件
        }
    }

經(jīng)過后期反編譯apk官帘,發(fā)現(xiàn)so包都有打入apk,那就不應(yīng)該了昧谊!整個(gè)人都是蒙蔽的

轉(zhuǎn)機(jī)
有位同事 告訴我不會(huì)是產(chǎn)品 默認(rèn)勾選了 google signing吧刽虹?我整個(gè)人瞬間醒了

Google play默認(rèn)簽名

來到Google play console后臺(tái),發(fā)現(xiàn)Google 是默認(rèn)不可關(guān)閉 signing 簽名配置的呢诬。從Google上下載的應(yīng)用重新簽名打包涌哲,這個(gè)時(shí)候?qū)е掠谀愕膽?yīng)用簽名證書 MD5胖缤,SHA1,SHA-256統(tǒng)統(tǒng)發(fā)生了改變,所以凡是使用到這些配置的第三方都受到了影響阀圾。(此時(shí)內(nèi)心萬(wàn)馬奔騰)由于本人參與的項(xiàng)目 哪廓,與服務(wù)器通信的所有信息都是通過so 加密的,so文件又對(duì)app簽名進(jìn)行了校驗(yàn)初烘,簽名改變涡真,so加密不通過返回空字符串,最終導(dǎo)致了 put body 的數(shù)據(jù) 都是空的后果肾筐。


image.png

你的應(yīng)用加入了簽名計(jì)劃哆料,前面第一個(gè)是googlePlay給你的新簽名,右上角可以下載簽名證書吗铐,后面的是你上傳應(yīng)用的簽名證書东亦。有了簽名證書,
理論上 第一種方案:我們可以打兩套包唬渗,專門為GooglePlay打一個(gè)渠道典阵。
第二種方案 :替換GooglePlay 簽名文件

這里著重實(shí)現(xiàn)第二種方案,


image.png

Pepk.jar

下載pepk后 按照官網(wǎng)提示


java -jar %pepk.jar% --keystore=%YMCapp.jks% --alias=%alias% --output=%output.zip% --encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a --signing-keystore=%YMCapp.jks% --signing-key-alias=%alias%

%pepk.jar% : pepk 工具地址
%YMCapp.jks%:jks 文件
%alias% :別名
%output.zip% : 輸出文件(將該文件提交到GooglePlay中)

命令行中需要替換的 最好都用絕對(duì)路徑

替換好后镊逝,最好重新上傳一個(gè)包萄喳,包簽名才能生效。

參考文章

遛了 ....

接入Google Analytics

google Analytics 接入?yún)⒖疾┛?/a>

關(guān)于Google Play商店不允許使用TBS SDK的問題

為了減少您的apk包大小增量蹋半,及時(shí)動(dòng)態(tài)發(fā)版解決安全隱患他巨,TBS SDK采用了后臺(tái)動(dòng)態(tài)下發(fā)內(nèi)核的方案。由于Google Play 禁止任何二進(jìn)制代碼的下發(fā)(包括so减江、dex染突、jar)和插件化技術(shù)的使用,如果您有多渠道打包能力辈灼,您可以在海外版本接入僅保留接口的SDK份企,保證編譯通過,僅使用系統(tǒng)webview巡莹,下載地址司志,在其他渠道使用標(biāo)準(zhǔn)SDK版本以便正常使用X5能力

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市降宅,隨后出現(xiàn)的幾起案子骂远,更是在濱河造成了極大的恐慌,老刑警劉巖腰根,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件激才,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瘸恼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門劣挫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人东帅,你說我怎么就攤上這事压固。” “怎么了靠闭?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵帐我,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我阎毅,道長(zhǎng)焚刚,這世上最難降的妖魔是什么点弯? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任扇调,我火速辦了婚禮,結(jié)果婚禮上抢肛,老公的妹妹穿的比我還像新娘狼钮。我一直安慰自己,他們只是感情好捡絮,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布熬芜。 她就那樣靜靜地躺著,像睡著了一般福稳。 火紅的嫁衣襯著肌膚如雪涎拉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天的圆,我揣著相機(jī)與錄音鼓拧,去河邊找鬼。 笑死越妈,一個(gè)胖子當(dāng)著我的面吹牛季俩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梅掠,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼酌住,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了阎抒?” 一聲冷哼從身側(cè)響起酪我,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎且叁,沒想到半個(gè)月后祭示,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年质涛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了稠歉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡汇陆,死狀恐怖怒炸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毡代,我是刑警寧澤阅羹,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站教寂,受9級(jí)特大地震影響捏鱼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜酪耕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一导梆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迂烁,春花似錦看尼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至却盘,卻和暖如春狰域,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纤掸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓拓颓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親描孟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驶睦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容