阿里百川熱修復

官網(wǎng):阿里百川HotFix

SDK集成

SDK下載.png
framework.png

有兩個framework百新,其中
AliHotFix.framework是必須導入項目的瞬矩,是熱修復SDK徒欣。
AliHotFixDebug.framework是調(diào)試工具攒磨,僅在補丁未全量發(fā)布的時候泳桦,使用它提供的方法來主動拉取某個補丁。拉取的方法是通過掃描百川熱修復控制臺上生成的二維碼娩缰,每一個上傳的補丁都會生成一個二維碼灸撰。在調(diào)試完成后請刪除此framework。

調(diào)用方法

didFinishLaunchingWithOptions方法中啟用熱修復:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 初始化AliHotFix
    [AliHotFix startWithAppID:@"15986-2"
                       secret:secret
                   privateKey:privateKey
                    publicKey:rsaPublicDerData
                encryptAESKey:aesEncryptKeyData];
}

在程序每一次重新進入前臺激活時拼坎,同步補丁浮毯。這是由于App用戶習慣的原因。
假如用戶從來不關(guān)閉App泰鸡,只是切到后臺掛起债蓝。那么在掛起的這段期間,我們發(fā)布了補丁鸟顺,當App從掛起狀態(tài)重新激活時惦蚊,就需要同步一次補丁。

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [AliHotFix sync];
}

其中的secretprivateKey在百川熱修復網(wǎng)站控制臺獲取讯嫂,其余三個參數(shù)需要用百川提供的工具來生成蹦锋,下文講解。

AliHotFixDebug.framework可在Debug模式下使用欧芽,僅支持真機掃碼:

#import <AliHotFixDebug/AliHotFixDebug.h>

// currentViewController 是需要喚起掃碼功能的VC
[AliHotFixDebug showDebug:currentViewController];

編寫補丁

AliHotFix支持luajavascript兩種語言編寫補丁莉掂,這里只說javascript。
可以借助在線轉(zhuǎn)換工具Patch Convertor把objective-c代碼大致轉(zhuǎn)換成javascript千扔。
但是工具無法做到100%完美轉(zhuǎn)換憎妙,所以在轉(zhuǎn)換完成后還需要人工一行一行檢查库正。
Patch Convertor不支持以下幾種OC/C的語法,需要手動轉(zhuǎn)換:

  • 宏/枚舉/常量
  • C函數(shù)調(diào)用
  • GCD函數(shù)
  • 指針/結(jié)構(gòu)體
  • 私有變量的Getting/Setting

具體的編寫方法參考JSPatch
https://github.com/bang590/JSPatch/wiki/JSPatch-基礎(chǔ)用法

打包補丁

文件目錄
javascript補丁文件必須以main.js命名厘唾,并且必須放在一個src目錄下褥符。
例如:patch/src/main.js
在打包時,將會對整個patch目錄進行打包

打包工具
打開終端抚垃,把AliHotFixCommand拖到終端喷楣,回車直接運行,它將會列出3個功能鹤树,分別是:
1.打包铣焊,2.生成RSA公私鑰,3.輸出密鑰代碼罕伯。
功能1打包需要在2和3完成后才能使用曲伊。
功能2生成本地公私鑰,用于SDK請求下發(fā)補丁時的加解密追他,以保證所請求的補丁正確坟募。
功能3借助了2的結(jié)果來生成代碼,用于貼到項目中作為SDK啟動參數(shù)邑狸。分別是:privateKey婿屹、publicKeyencryptAESKey推溃。

AliHotFixCommand.png

功能1的使用需要傳入4個參數(shù)昂利,分別是:
PATCH-DIRECTORY:patch包所在路徑
APP-VERSION:patch綁定的app版本
ENCRYPT-KEY:加密patch文件的密鑰(備注:長度不超過32位字符串)
PRIVATE-P12-FILE-PASSWORD:生成RSA密鑰時輸入的密碼

  1. AliHotFixCommand拖到終端,敲-pack
  2. 把存放有src/main.jspatch目錄拖到終端铁坎,敲空格
  3. 輸入這個patch需要修復的app版本蜂奸,然后空格
  4. 輸入自己定的字符串密鑰,這個密鑰在之前已經(jīng)定下了硬萍,并用于生成了RSA公私鑰扩所。然后空格
  5. 輸入RSA密鑰密碼,回車朴乖,等待處理完成

打包工具將會生成一個patch.zip的文件祖屏,這就是我們需要上傳的補丁包。

上傳補丁

  1. 每一個App版本可以包含多個補丁买羞,并且可以隨時啟用/停用某個補丁袁勺。
  2. 先新增版本,再于版本內(nèi)上傳補丁畜普。上傳xxx.zip文件期丰。
  3. 上傳完成的補丁并不會自動發(fā)布。此時它會生成一個二維碼,使用AliHotFixDebug可以掃碼下載此補丁并加載钝荡,進行補丁測試街立、調(diào)試。
  4. 在確認補丁正確后埠通,可進行灰度發(fā)布赎离,指定最大可以下發(fā)給隨機多少臺設(shè)備;或進行全量發(fā)布端辱,不限制下發(fā)數(shù)量蟹瘾。
  5. 注意:無法指定下發(fā)給某臺設(shè)備,即使灰度發(fā)布也不行掠手。灰度發(fā)布模式下狸捕,哪臺設(shè)備最先請求補丁喷鸽,就下發(fā)給哪臺設(shè)備,下發(fā)數(shù)量達到指定值則停止灸拍。

附加說明

  1. 所修改的目標方法做祝,必須在方法調(diào)用之前已把補丁加載完畢,然后在方法調(diào)用時才會生效鸡岗。
  2. 補丁的下載是異步的混槐,不會阻塞當前線程。補丁的下載受網(wǎng)絡(luò)環(huán)境影響轩性。
  3. 加載過的補丁將會存在于App沙盒声登,App每一次啟動都會加載它,即使斷網(wǎng)揣苏。App在同步補丁時發(fā)現(xiàn)沒有更高版本的補丁時悯嗓,會繼續(xù)使用本地存放的補丁。所以在百川控制臺停用了所有補丁后卸察,App再去同步補丁脯厨,依然等同于沒有更高版本補丁,并不會刪除本地補丁坑质。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末合武,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涡扼,更是在濱河造成了極大的恐慌稼跳,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吃沪,死亡現(xiàn)場離奇詭異岂贩,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門萎津,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卸伞,“玉大人,你說我怎么就攤上這事锉屈』绨粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵颈渊,是天一觀的道長遂黍。 經(jīng)常有香客問我,道長俊嗽,這世上最難降的妖魔是什么雾家? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮绍豁,結(jié)果婚禮上芯咧,老公的妹妹穿的比我還像新娘。我一直安慰自己竹揍,他們只是感情好敬飒,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芬位,像睡著了一般无拗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昧碉,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天英染,我揣著相機與錄音,去河邊找鬼被饿。 笑死税迷,一個胖子當著我的面吹牛倦零,可吹牛的內(nèi)容都是我干的十嘿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼偶宫,長吁一口氣:“原來是場噩夢啊……” “哼哥牍!你這毒婦竟也來了毕泌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嗅辣,失蹤者是張志新(化名)和其女友劉穎撼泛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澡谭,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡愿题,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潘酗。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡杆兵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仔夺,到底是詐尸還是另有隱情琐脏,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布缸兔,位于F島的核電站日裙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惰蜜。R本人自食惡果不足惜昂拂,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抛猖。 院中可真熱鬧格侯,春花似錦、人聲如沸樟结。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓢宦。三九已至,卻和暖如春灰羽,著一層夾襖步出監(jiān)牢的瞬間驮履,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工廉嚼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玫镐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓怠噪,卻偏偏與公主長得像恐似,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子傍念,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

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