android 热修复视频,Android热修复
所謂熱修復,簡單來說就是不以下載新版本apk的方式來修改應用的bug,而是在應用啟動后從服務器下拉補丁包實現動態修復bug。所以在應用出現bug后,我們只需要打一個補丁,用戶無需下載安裝新的版本。主要是針對一些緊急的bug的修復。
常規修復
熱修復
修復bug,首先我們要能夠獲取應用出現的bug。而應用是安裝在用戶手中的,開發人員是無法直接獲取的,所以我們要收集用戶端出現的bug。有一些三方的開源庫已經實現了改功能,如:騰訊的buglay,這里我們自己簡單實現一下。
收集異常
如果我們要收集,那么首先能夠捕獲到異常,然后現將異常信息保存在本地文件中,等應用再次啟動聯網后上傳到服務器即可。
注意:我們不僅保存異常的信息,還應該將應用的一些信息,如:版本號等;手機信息,如:手機型號,系統版本等保存,因為應用在不同型號的手機上可能存在差異化。這樣更有利于我們的調試。
Thread.UncaughtExceptionHandler
這是系統給我們提供的一個接口,如果我們想全局捕獲異常,只要實現該接口即可。
下面看一下具體的代碼:
public class ExceptionCrashHandler implements Thread.UncaughtExceptionHandler {
private static ExceptionCrashHandler instance;
private Context mContext;
private Thread.UncaughtExceptionHandler mDefaultExceptionHandler;
//構造方法私有化
private ExceptionCrashHandler() {}
/**
* 獲取實例
* @return
*/
public static ExceptionCrashHandler getInstance() {
if (instance == null) {
synchronized (ExceptionCrashHandler.class) {
if (instance == null) {
instance = new ExceptionCrashHandler();
}
}
}
return instance;
}
/**
* 初始化操作
* @param context
*/
public void init(Context context) {
this.mContext = context;
//設置全局捕獲異常類為本類
Thread.currentThread().setUncaughtExceptionHandler(this);
//獲取系統默認的全局異常捕獲類,用于輸出異常信息
mDefaultExceptionHandler = Thread.currentThread().getDefaultUncaughtExceptionHandler();
}
/**
* 全局捕獲異常
*/
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
mDefaultExceptionHandler.uncaughtException(thread, throwable);//系統默認的處理(打印異常信息)
//保存信息到文件,等應用下次啟動上線后上傳到服務器
saveInfoToSd(throwable);
}
這里我們采用的是單例模式,實現UncaughtExceptionHandler接口需要重寫uncaughtException(Thread thread, Throwable throwable) 方法,該方法在出現異常時,自動回調。我們需要在里面實現我們的邏輯,主要是將異常的信息保存在本地。我們還調用了mDefaultExceptionHandler.uncaughtException()方法,只要是執行默認的異常處理,方便我們的調試。否則我們在后臺的日志中就看不到異常輸出了。
簡單測試
工具類已經寫好,我們簡單測試一下,頁面上有一個按鈕,當點擊按鈕時執行下面的代碼:
public void btTest(View view){
int num = 2 / 0;//該代碼一定會拋出異常。
}
阿里熱修復-AndFix
1.添加依賴
2.使用
patchManager = new PatchManager(context);
patchManager.init(appversion);
patchManager.loadPatch();//加載之前的補丁
patchManager.addPatch(path);//添加新的補丁
path:是補丁包的路徑
生成補丁包
andfix給我們提供了生成補丁包的工具
通過命令生成補丁包
apkpatch.bat -f -t -o -k -p -a -e
-f : 沒有Bug的新版本apk
-t : 有bug的舊版本apk
-o : 生成的補丁文件所放的文件夾
-k : 簽名打包密鑰
-p : 簽名打包密鑰密碼
-a : 簽名密鑰別名
-e : 簽名別名密碼(這樣一般和密鑰密碼一致)
總結
以上是生活随笔為你收集整理的android 热修复视频,Android热修复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python应声虫代码_前端大牛们都学过
- 下一篇: android如何调用接口方法,在And