麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

集成熱修復(fù)

2019-11-09 14:16:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

轉(zhuǎn)自http://www.jianshu.com/p/950dbb33a370

前言

在iOS中有很多種熱修復(fù)方案,在這里我就不一一介紹了

這里有一篇介紹熱修復(fù)的文章:iOS中的HotFix方案總結(jié)詳解

我選擇的熱修復(fù)方案是jspatch我覺(jué)得JSPatch的優(yōu)點(diǎn)有:

非侵入式上手快相關(guān)服務(wù)成熟

上代碼

大神可以看重點(diǎn),如果是和我一樣的菜雞就可以按照博客一步一步做,最后一定會(huì)成功讓JSPatch跑起來(lái)的

第一步:創(chuàng)建Demo,在ViewController里添加一個(gè)Label,聲明一個(gè)test方法來(lái)給Label.text賦值

OC:

Swift:

為了方便label就直接在StoryBoard里拖進(jìn)來(lái)了(不喜歡拖控件的小伙伴可以用代碼創(chuàng)建)

Swift中為每個(gè)變量和方法添加dynamic是保證Swift方法都可以被動(dòng)態(tài)替換,這里涉及到Swift Runtime的知識(shí)就不詳細(xì)講述了按例貼一篇文章:

Swift Runtime分析:還像OC Runtime一樣嗎?


第二步:打開(kāi)JSPatch網(wǎng)站下載SDK:http://jspatch.com/Index/sdk


第三步:項(xiàng)目配置(這步稍微會(huì)有些復(fù)雜)

將解壓后的SDK直接拖入工程中,然后在TARGETS -> Build Phases -> Link Binary With Libraries -> + 添加 libz.dylib(或libz.tbd) 和 javaScriptCore.framework。

在AppDelegate里寫(xiě)以下代碼:

OC

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [JSPatch startWithAppKey:@"你的AppKey"]; //用來(lái)檢測(cè)回調(diào)的狀態(tài),是更新或者是執(zhí)行腳本之類(lèi)的,相關(guān)信息,會(huì)打印在你的控制臺(tái) [JSPatch setupCallback:^(JPCallbackType type, NSDictionary *data, NSError *error) { }]; [JSPatch setupDevelopment]; [JSPatch sync]; return YES;}

Swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. JSPatch.startWithAppKey("你的Appkey") JSPatch.setupCallback { (type, data, error) in PRint(type) print(data) } JSPatch.setupDevelopment() JSPatch.sync() return true }

到這一步項(xiàng)目配置就完成了,下一步開(kāi)始發(fā)補(bǔ)丁到項(xiàng)目中


第四步:打開(kāi)JSPatch官網(wǎng)點(diǎn)擊左上角注冊(cè) -> http://www.jspatch.com/

注冊(cè)或登錄注冊(cè)

第五步:創(chuàng)建你的App,名字可以隨便寫(xiě),AppID也可以不填


第六步:點(diǎn)擊添加APP版本,創(chuàng)建一個(gè)App版本

介紹一下創(chuàng)建之后的APP:

appKey是之后在你項(xiàng)目中激活JSPatch要用到的添加App版本 是按照你App的Version來(lái)創(chuàng)建的(如果version沒(méi)寫(xiě)對(duì)會(huì)下載不到補(bǔ)丁)

第七步:創(chuàng)建一個(gè)main.js文件并在里面寫(xiě)上以下代碼:

OC

defineClass('ViewController', { test : function() { self.label().setText("label的text被改掉了"); },})

Swift

defineClass('HotFixDemo.ViewController', { test : function() { self.label().setText("label的text被改掉了"); },})

Swift覆蓋方法和類(lèi)的時(shí)候要加上項(xiàng)目名,所以規(guī)范應(yīng)該是 項(xiàng)目名.類(lèi)名(方法名) 注冊(cè)類(lèi)的時(shí)候也要加上項(xiàng)目名

第八步:點(diǎn)擊剛剛創(chuàng)建的1.0,將保存好的JS上傳到JSPatch服務(wù)器上,

選擇文件選擇剛剛創(chuàng)建的main.js (上傳補(bǔ)丁的時(shí)候最少要有一個(gè)main.js 如果需要上傳多個(gè)文件點(diǎn)擊右側(cè)加號(hào)就可以了)

一定先勾選開(kāi)發(fā)預(yù)覽,這樣才能保證測(cè)試成功

一切都操作完之后選擇提交

運(yùn)行你的項(xiàng)目,如果命令行中顯示以下內(nèi)容就代表你的你的項(xiàng)目已經(jīng)更新補(bǔ)丁了

因?yàn)檠a(bǔ)丁是先下載再生效的,所以下一次運(yùn)行你才能看到效果

可以看到我的代碼給label賦值為aaaa,通過(guò)JSPatch將label.text替換掉了

如果遇到什么問(wèn)題可以留言給我,我會(huì)及時(shí)回復(fù)并更新博客內(nèi)寫(xiě)的不足的地方

一些其他的資料:

JSPatch文檔

iOS黑科技之不發(fā)版線上干掉bug(JSPatch)

Objective-C代碼轉(zhuǎn)換成Javascript

可能遇到的坑

JSPatch網(wǎng)站上的版本要一定要和工程里的一樣label的名字別寫(xiě)錯(cuò)了..我順手就給寫(xiě)成別的名字了Swift一定要在方法和屬性前加dynamic,如果不是繼承自NSObject的Swift類(lèi)不能被動(dòng)態(tài)替換Swift替換類(lèi)和方法要比OC在類(lèi)/方法名之前添加工程名如果項(xiàng)目跑起來(lái)控制臺(tái)輸出沒(méi)有找到文檔就是網(wǎng)站上配置錯(cuò)了

基本使用姿勢(shì)

發(fā)現(xiàn)bug->在項(xiàng)目里修復(fù)bug->將修改后的有問(wèn)題的類(lèi)和方法翻譯成js并上傳網(wǎng)站->發(fā)布補(bǔ)丁

8月27日補(bǔ)充

JS一定要加密,下面是方法截圖和文檔:

文檔:http://jspatch.com/Docs/rsa

加密方法:

補(bǔ)充:自己按照文檔和這篇博客集成后測(cè)試崩潰,后來(lái)經(jīng)過(guò)調(diào)試發(fā)現(xiàn)JS代碼寫(xiě)的不正確(自己不會(huì)JS),發(fā)現(xiàn)在JSPatch上有轉(zhuǎn)換和檢測(cè)JS代碼的工具,很方便。推薦使用PSPatch!
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产成人综合在线观看 | 亚洲精品91| 奶子吧naiziba.cc免费午夜片在线观看 | 免费国产成人高清在线看软件 | av噜噜噜噜 | 久久国产精品小视频 | 91网站永久免费看 | 久久久一区二区三区精品 | 羞羞视频免费网站日本动漫 | 精品亚洲一区二区三区 | 成人在线免费小视频 | 成人在线视频一区 | 国产欧美日韩视频在线观看 | 亚欧美一区二区 | 精品国产1区2区3区 av视屏 | 曰韩黄色片 | 青青草成人免费视频在线 | 98国内自拍在线视频 | 国产精品99久久久久久大便 | 视频一区二区三区中文字幕 | 久久久中文 | 久久国产免费 | 国产免费一区二区三区 | 羞羞视频免费观看网站 | 欧美日韩亚洲成人 | 看91| 亚洲综合无码一区二区 | 国产成人在线视频 | 国产精品视频久 | 免费在线观看毛片视频 | 久久国产中文 | 午夜精品久久久久久久99热浪潮 | 中文字幕免费在线观看视频 | 日韩大片在线永久观看视频网站免费 | 久色婷婷| 精品一二三区视频 | 久久网站免费 | 国产精品久久久久一区二区 | 天天操天天看 | 福利在线免费 | 九九热视频在线 |