一、環(huán)境隔離
- 發(fā)布賬號不要添加任何測試設備,檢查device列表【重災區(qū):設備device】
- 每次上傳都使用修改序列號相關信息的虛擬機 (虛擬機可以使用VMWare Fusion, 配合修改虛擬機序列號腳本一起使用) ,在新建賬戶中上傳【重災區(qū):上傳電腦】
- 在虛擬機中和主機共享應用程序,使用低版本Xcode的appLoader上傳,注:我的是Xcode10.1
- 測試應用功能必須使用單獨的測試賬號,這個賬號不要做其他用,避免關聯(lián),【重災區(qū):device】
- 打包上傳必須使用4G網,不能使用可能被標記的公司wifi和公共網,【重災區(qū):網絡環(huán)境】
- 新建管理員賬戶并在此基礎上進行代碼修改打包【隱藏的重災區(qū):打的包中能看到文件路徑】
- 發(fā)布賬號不要在Xcode中登錄,使用虛擬機創(chuàng)建證書并導出P12共享出來
- AppleID綁定的手機號使用單獨的手機號,并且不能綁定其他AppleID
- ITC后臺配置文案,所有網絡鏈接地址替換,截屏修改;多次或者重新提交,內容也都要改
- ITC銀行賬戶專號專用(特別是含內購類商品)
二、代碼部分
Pod SDK部分混淆 —— 權重低
圖片資源改名,json,txt等文本類修改文本內容,圖片修改md5并使用CarTool查看和對比前后md5是否修改完成,使用工具MD5Change和腳本添加tag值的更改會在打包后還原,壓縮圖片可行,但是壓縮后md5可能會不變,多次壓縮需要驗證是否真正修改成功,使用腳本或者手動添加像素可行 —— 權重極高
類名修改替換,屬性名修改替換,函數名修改替換,枚舉類型名及枚舉值名修改替換,通知名修改替換,常量字符串修改或者使用base64等加密解密的方式放入加密后的字符串,在代碼中使用的時候再進行解密,僅添加前綴還不夠,可以嘗試在前中后都添加自定義字符串,也不影響閱讀和后續(xù)維護 —— 權重高
本地化文案的key值修改,value使用base64等加密解密的方式放入加密后的字符串,在代碼中使用的時候解密 —— 權重高
icon修改,啟動圖替換,項目改名并使用別的Xcode進行創(chuàng)建 —— 權重高
非Pod管理的第三方工具也要進行資源修改替換和以上各種修改 —— 權重高
Release環(huán)境下的log去除,建議把log只放在debug這種非上線環(huán)境下 —— 權重低
三、工具部分:
- 文本對比 BeyondCompare
- Asset打包后的文件Asset.car,提取資源的工具 CarTool
- 類名批量修改工具
- 函數名批量修改腳本
- 文本批量base64工具或者手動替換base64
- 資源圖片添加像素的批量修改腳本
- 圖片壓縮 imageOptim
- 熊貓壓縮網站 TinyPng
四、過包經驗補充部分
- 包覆蓋問題:如果賬號被封或者改包失敗被一直無限延審或者一直O(jiān)ther,需要在徹底封號前用空包提交覆蓋提交1個小時后撤回,并改掉所有信息。
- 中英雙語的iTC后臺主語言設置為英文
- 第一個內購版本提交的時候,不要有多余的沒在界面上能體現(xiàn)的內購項目。