本發(fā)明涉及移動(dòng)終端技術(shù)領(lǐng)域,尤其涉及一種修復(fù)APP線上bug的方法和裝置。
背景技術(shù):
目前市面上發(fā)布的App大都會(huì)出現(xiàn)線上bug的情況。為了避免等待發(fā)布的新版本,通常采用熱修復(fù)技術(shù)來修復(fù)線上bug,即在App啟動(dòng)時(shí),下載修復(fù)腳本,利用Objective-C的動(dòng)態(tài)特性將線上bug的代碼替換掉,確保App正常運(yùn)行。但是,如果APP的線上bug發(fā)生在啟動(dòng)過程中,來不及下載并且加載補(bǔ)丁文件就出現(xiàn)APP崩潰的,導(dǎo)致用戶無法使用該APP。因此,需要一種修復(fù)APP線上bug的方法和裝置,以解決現(xiàn)有技術(shù)中存在的上述技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種修復(fù)APP線上bug的方法和裝置,及時(shí)修復(fù)APP啟動(dòng)后出現(xiàn)的線上bug,確保APP正常運(yùn)行。
本發(fā)明采用的技術(shù)方案是:一種修復(fù)APP線上bug的方法,包括:修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載補(bǔ)丁文件;所述修復(fù)設(shè)備將所述補(bǔ)丁文件發(fā)送至移動(dòng)終端;所述移動(dòng)終端將所述補(bǔ)丁文件存放至主APP指定的指定目錄下;在所述主APP啟動(dòng)時(shí),所述主APP根據(jù)所述補(bǔ)丁文件修復(fù)線上bug。
優(yōu)選地,所述修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載補(bǔ)丁文件,具體包括:所述修復(fù)設(shè)備安裝對(duì)應(yīng)所述主APP的擴(kuò)展APP;所述擴(kuò)展APP通過修復(fù)設(shè)備服務(wù)器發(fā)送補(bǔ)丁詢問請(qǐng)求至所述移動(dòng)終端服務(wù)器,以供所述述移動(dòng)終端服務(wù)器返回所述補(bǔ)丁文件至所述修復(fù)設(shè)備服務(wù)器;所述擴(kuò)展APP從所述修復(fù)設(shè)備服務(wù)器下載所述補(bǔ)丁文件。
優(yōu)選地,所述修復(fù)設(shè)備將所述補(bǔ)丁文件發(fā)送至移動(dòng)終端,具體包括:所述擴(kuò)展APP通過文件傳輸協(xié)議將所述補(bǔ)丁文件發(fā)送至所述主APP對(duì)應(yīng)的本地文件夾內(nèi)。
優(yōu)選地,所述補(bǔ)丁文件包括對(duì)應(yīng)日期的補(bǔ)丁ID,所述修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載補(bǔ)丁文件,具體包括:基于所述補(bǔ)丁ID,所述修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載最新的補(bǔ)丁文件。
優(yōu)選地,所述主APP根據(jù)所述補(bǔ)丁文件修復(fù)線上bug,具體包括:所述主APP從所述指定目錄下讀取所述最新的補(bǔ)丁文件;所述主APP根據(jù)所述最新的補(bǔ)丁文件修復(fù)所述線上bug。
本發(fā)明還提供了一種基于修復(fù)設(shè)備的修復(fù)APP線上bug的裝置,包括:修復(fù)設(shè)備下載模塊,用于修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載補(bǔ)丁文件;修復(fù)設(shè)備轉(zhuǎn)發(fā)模塊,用于所述修復(fù)設(shè)備將所述補(bǔ)丁文件發(fā)送至移動(dòng)終端;存儲(chǔ)模塊,用于所述移動(dòng)終端將所述補(bǔ)丁文件存放至主APP指定的指定目錄下;修復(fù)模塊,用于在所述主APP啟動(dòng)時(shí),所述主APP根據(jù)所述補(bǔ)丁文件修復(fù)線上bug。
優(yōu)選地,所述修復(fù)設(shè)備下載模塊,具體用于:所述修復(fù)設(shè)備安裝對(duì)應(yīng)所述主APP的擴(kuò)展APP;所述擴(kuò)展APP通過修復(fù)設(shè)備服務(wù)器發(fā)送補(bǔ)丁詢問請(qǐng)求至所述移動(dòng)終端服務(wù)器,以供所述述移動(dòng)終端服務(wù)器返回所述補(bǔ)丁文件至所述修復(fù)設(shè)備服務(wù)器;所述擴(kuò)展APP從所述修復(fù)設(shè)備服務(wù)器下載所述補(bǔ)丁文件。
優(yōu)選地,所述修復(fù)設(shè)備轉(zhuǎn)發(fā)模塊,具體用于:所述擴(kuò)展APP通過文件傳輸協(xié)議將所述補(bǔ)丁文件發(fā)送至所述主APP對(duì)應(yīng)的本地文件夾內(nèi)。
優(yōu)選地,所述補(bǔ)丁文件包括對(duì)應(yīng)日期的補(bǔ)丁ID,所述修復(fù)設(shè)備下載模塊,具體用于:基于所述補(bǔ)丁ID,所述修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載最新的補(bǔ)丁文件。
優(yōu)選地,所述修復(fù)模塊,具體用于:所述主APP從所述指定目錄下讀取所述最新的補(bǔ)丁文件;所述主APP根據(jù)所述最新的補(bǔ)丁文件修復(fù)所述線上bug。
采用上述技術(shù)方案,本發(fā)明至少具有下列效果:
本發(fā)明的基于修復(fù)設(shè)備的修復(fù)APP線上bug的方法,通過預(yù)先將補(bǔ)丁文件下載至移動(dòng)終端上,在APP啟動(dòng)后順利獲得該補(bǔ)丁文件,避免APP崩潰。
附圖說明
圖1為本發(fā)明第一實(shí)施例修復(fù)APP線上bug的方法的流程圖;
圖2為本發(fā)明第二實(shí)施例修復(fù)APP線上bug的方法的流程圖;
圖3為本發(fā)明第四實(shí)施例修復(fù)APP線上bug的方法的流程圖;
圖4為本發(fā)明第五實(shí)施例、第六實(shí)施例、第七實(shí)施例和第八實(shí)施例修復(fù)APP線上bug的裝置的方框圖。
具體實(shí)施方式
為更進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)說明如后。
需要說明的是,本發(fā)明中提到的移動(dòng)終端可以包括:手機(jī)、平板電腦或者智能手表等,修復(fù)設(shè)備也可以包括:手機(jī)、平板電腦或者智能手表等。
本發(fā)明提供的修復(fù)設(shè)備修復(fù)APP線上bug的方法,在App沒有啟動(dòng)的情況下將補(bǔ)丁文件下載至移動(dòng)設(shè)備上,當(dāng)APP啟動(dòng)后第一時(shí)間獲取補(bǔ)丁文件修復(fù)線上bug,解決了獲取修復(fù)腳本之前,APP崩潰的問題。下面將詳細(xì)地描述本發(fā)明修復(fù)設(shè)備的修復(fù)APP線上bug的方法及其各個(gè)步驟。
第一實(shí)施例
如圖1所示,本實(shí)施例公開的基于修復(fù)設(shè)備的修復(fù)APP線上bug的方法,包括:步驟S10:修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載補(bǔ)丁文件。步驟S20:修復(fù)設(shè)備將補(bǔ)丁文件發(fā)送至移動(dòng)終端。步驟S30:移動(dòng)終端將補(bǔ)丁文件存放至主APP指定的指定目錄下。以及步驟S40:在主APP啟動(dòng)時(shí),主APP根據(jù)補(bǔ)丁文件修復(fù)線上bug。
本實(shí)施例的修復(fù)APP線上bug的方法,利用修復(fù)設(shè)備下載補(bǔ)丁文件后發(fā)送至手機(jī)上,手機(jī)操作系統(tǒng)在后臺(tái)激活主APP,主APP將補(bǔ)丁文件保存至手機(jī)本地,在主APP下次執(zhí)行前臺(tái)啟動(dòng)時(shí)獲取補(bǔ)丁文件來修復(fù)主APP的線上bug,解決了主APP在啟動(dòng)過程中發(fā)生崩潰的問題。
第二實(shí)施例
如圖2所示,在第一實(shí)施例的基礎(chǔ)上,本實(shí)施例的修復(fù)APP線上bug的方法中,步驟S10:修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載補(bǔ)丁文件,具體包括:步驟S100:修復(fù)設(shè)備安裝對(duì)應(yīng)主APP的擴(kuò)展APP;步驟S101:擴(kuò)展APP通過修復(fù)設(shè)備服務(wù)器發(fā)送補(bǔ)丁詢問請(qǐng)求至移動(dòng)終端服務(wù)器,以供述移動(dòng)終端服務(wù)器返回補(bǔ)丁文件至修復(fù)設(shè)備服務(wù)器;步驟S102:擴(kuò)展APP從修復(fù)設(shè)備服務(wù)器下載補(bǔ)丁文件。
本實(shí)施例的修復(fù)APP線上bug的方法中,首先在修復(fù)設(shè)備上安裝了對(duì)應(yīng)主APP的擴(kuò)展APP,即移動(dòng)終端和修復(fù)設(shè)備分別安裝了同一款A(yù)PP,為了區(qū)別起見,安裝在移動(dòng)終端上的APP為主APP,安裝在修復(fù)設(shè)備上的APP為擴(kuò)展APP,兩者均是可以獨(dú)立運(yùn)行的常規(guī)APP,不過唯一不同的是,主APP登陸移動(dòng)終端服務(wù)器,而擴(kuò)展APP登陸修復(fù)設(shè)備服務(wù)器,其中移動(dòng)終端服務(wù)器與修復(fù)設(shè)備服務(wù)器可以交互。
本實(shí)施例的修復(fù)APP線上bug的方法可以在主APP啟動(dòng)之前,由擴(kuò)展APP從修復(fù)設(shè)備服務(wù)器下載補(bǔ)丁文件。
第三實(shí)施例
在第二實(shí)施例的基礎(chǔ)上,本實(shí)施例的修復(fù)APP線上bug的方法中,步驟S20:修復(fù)設(shè)備將補(bǔ)丁文件發(fā)送至移動(dòng)終端,具體包括:擴(kuò)展APP通過文件傳輸協(xié)議將補(bǔ)丁文件發(fā)送至主APP對(duì)應(yīng)的本地文件夾內(nèi)。
例如蘋果公司的iPhone和appleWatch可以相互傳送文件,尤其是watchOS2.0以后針對(duì)同一款A(yù)pp的Watch版本和iPhone版本之間可以通過蘋果提供的文件傳輸協(xié)議WatchConnectivity框架進(jìn)行文件傳輸。由此第二實(shí)施例通過appleWatch的擴(kuò)展App通過Applewatch服務(wù)器從移動(dòng)終端服務(wù)器下載補(bǔ)丁文件,本實(shí)施例將該補(bǔ)丁文件發(fā)送至移動(dòng)終端上運(yùn)行的iPhone操作系統(tǒng)指定的目錄下。
實(shí)施本實(shí)施例的前提條件是iPhone和appleWatch完成配對(duì)并保持聯(lián)通狀態(tài),由此iPhone和appleWatch之間可以通過WatchConnectivity框架進(jìn)行數(shù)據(jù)的傳輸。
第四實(shí)施例
如圖2和圖3所示,在第一實(shí)施例至第三實(shí)施例的基礎(chǔ)上,本實(shí)施例的修復(fù)APP線上bug的方法中,補(bǔ)丁文件包括對(duì)應(yīng)日期的補(bǔ)丁ID,步驟S10:修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載補(bǔ)丁文件,具體包括:步驟S104:基于補(bǔ)丁ID,修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載最新的補(bǔ)丁文件。
相應(yīng)地,步驟S40:主APP根據(jù)補(bǔ)丁文件修復(fù)線上bug,具體包括:步驟S400:主APP從指定目錄下讀取最新的補(bǔ)丁文件;步驟S401:主APP根據(jù)最新的補(bǔ)丁文件修復(fù)線上bug。
如圖2所示,APP開發(fā)人員發(fā)現(xiàn)bug后,修正出現(xiàn)bug的代碼,把修復(fù)代碼轉(zhuǎn)換為JS或者lua語言腳本,保存為補(bǔ)丁文件后,將補(bǔ)丁文件上傳至主APP對(duì)應(yīng)的移動(dòng)終端服務(wù)器上,同時(shí)生成一個(gè)對(duì)應(yīng)日期的補(bǔ)丁ID。在用戶啟動(dòng)主APP之前,啟動(dòng)AppleWatch上的擴(kuò)展APP之后,通過AppleWatch服務(wù)器向移動(dòng)終端服務(wù)器詢問是否有補(bǔ)丁文件,如果有則將補(bǔ)丁ID最新近的最新的補(bǔ)丁返回給擴(kuò)展APP。擴(kuò)展APP發(fā)現(xiàn)返回的數(shù)據(jù)中攜帶最新的補(bǔ)丁文件,則通過WatchConnectivity框架將最新的補(bǔ)丁文件發(fā)送至移動(dòng)終端上的主APP的Documents/Inbox目錄下(這是一個(gè)臨時(shí)存放地址)。然后主APP在前臺(tái)啟動(dòng)時(shí),判斷本地Documents/Inbox目錄下有沒有補(bǔ)丁文件,如果有補(bǔ)丁文件,則將補(bǔ)丁文件先轉(zhuǎn)移到另一個(gè)永久保存補(bǔ)丁文件的文件夾下,之后主APP讀取該永久保存補(bǔ)丁文件的文件夾下最新的補(bǔ)丁文件,然后把最新的補(bǔ)丁文件中的代碼解析出來,利用objective-c的動(dòng)態(tài)性和運(yùn)行時(shí)機(jī)制,替換主APP包中舊的錯(cuò)誤代碼,APP繼續(xù)順利執(zhí)行啟動(dòng)過程,線上bug得以修復(fù),不會(huì)crash。
第五實(shí)施例
如圖4所示,本實(shí)施例提供了一種基于修復(fù)設(shè)備的修復(fù)APP線上bug的裝置,包括:修復(fù)設(shè)備下載模塊10,用于修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載補(bǔ)丁文件;修復(fù)設(shè)備轉(zhuǎn)發(fā)模塊20,用于修復(fù)設(shè)備將補(bǔ)丁文件發(fā)送至移動(dòng)終端;存儲(chǔ)模塊30,用于移動(dòng)終端將補(bǔ)丁文件存放至主APP指定的指定目錄下;修復(fù)模塊40,用于在主APP啟動(dòng)時(shí),主APP根據(jù)補(bǔ)丁文件修復(fù)線上bug。
第六實(shí)施例
在第五實(shí)施例的基礎(chǔ)上,修復(fù)設(shè)備下載模塊10,具體用于:修復(fù)設(shè)備安裝對(duì)應(yīng)主APP的擴(kuò)展APP;擴(kuò)展APP通過修復(fù)設(shè)備服務(wù)器發(fā)送補(bǔ)丁詢問請(qǐng)求至移動(dòng)終端服務(wù)器,以供述移動(dòng)終端服務(wù)器返回補(bǔ)丁文件至修復(fù)設(shè)備服務(wù)器;擴(kuò)展APP從修復(fù)設(shè)備服務(wù)器下載補(bǔ)丁文件。
第七實(shí)施例
在第六實(shí)施例的基礎(chǔ)上,修復(fù)設(shè)備轉(zhuǎn)發(fā)模塊20,具體用于:擴(kuò)展APP通過文件傳輸協(xié)議將補(bǔ)丁文件發(fā)送至主APP對(duì)應(yīng)的本地文件夾內(nèi)。
第八實(shí)施例
在第五實(shí)施例的基礎(chǔ)上,補(bǔ)丁文件包括對(duì)應(yīng)日期的補(bǔ)丁ID,修復(fù)設(shè)備下載模塊10,具體用于:基于補(bǔ)丁ID,修復(fù)設(shè)備從移動(dòng)終端服務(wù)器下載最新的補(bǔ)丁文件。
相應(yīng)地,修復(fù)模塊40,具體用于:主APP從指定目錄下讀取最新的補(bǔ)丁文件;主APP根據(jù)最新的補(bǔ)丁文件修復(fù)線上bug。
通過具體實(shí)施方式的說明,應(yīng)當(dāng)可對(duì)本發(fā)明為達(dá)成預(yù)定目的所采取的技術(shù)手段及功效得以更加深入且具體的了解,然而所附圖示僅是提供參考與說明之用,并非用來對(duì)本發(fā)明加以限制。