阿里熱修復AndFix的使用教程
一般我們開發了的APP在上線之前都會進行全面的測試,等APP測試基本穩定後,公司會進行封版,待上線。這時如果開發人員又發現了bug,但是又封版了,不能再修復,防止引入新的問題。這時這個bug的修復就只能是在下一個版本再修復。但是,如果是一個小小的問題,我們就總是不停的修復後,釋出新版本,使用者就要不停的去下載安裝。這樣給使用者的體驗是很不好的,如果可以在使用者不需要解除安裝舊的版本再安裝新版本就能進行bug的修復。這時熱修復就出現了。這裡我們就講解阿里實現的熱修復功能的使用。
阿里的實現邏輯是生成一個差分包**.apatch,合併修復bug。
阿里熱修復的實現步驟如下:
阿里apatch工具下載地址
實行邏輯:每次啟動的時候,去後臺獲取差分包fix.apatch,儲存到本地,然後直接獲取本地記憶體卡里面的fix.apatch修復本地的Bug
1、依賴阿里的熱修復包,有兩種方式:方式一是通過上面的下載連結,直接下載原始碼依賴包,把依賴包匯入到我們的工程裡去。方式二是直接線上依賴,直接在build.gradle中加入依賴
dependencies {
compile 'com.alipay.euler:andfix:0.5.0@aar'
}
2、在我們的Application中初始化PatchManager
import android.app.Application;
import android.content.pm.PackageManager;
import android.util.Log;
import com.alipay.euler.andfix.patch.PatchManager;
import com.taobao.sophix.PatchStatus;
import com.taobao.sophix.SophixManager;
import com.taobao.sophix.listener.PatchLoadStatusListener;
/**
* @author : willkong
* @date : 2017/12/25 18:23
* @Description :
*/
public class MyApplication extends Application{
public static PatchManager mPatchManager;
@Override
public void onCreate() {
super.onCreate();
//初始化阿里的熱修復
mPatchManager = new PatchManager(this);
//初始化版本,獲取當前應用的版本
try {
String appVersion = this.getPackageManager().getPackageInfo(this.getPackageName(),0).versionName;
mPatchManager.init(appVersion);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
//載入之前的apatch包
mPatchManager.loadPatch();
}
}
3、在AndroidManifest中申明許可權
<!-- 網路許可權 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 外部儲存讀許可權,除錯工具載入本地補丁需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
在MainActivity中獲取到fix.apatch,修復bug
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt = findViewById(R.id.bt);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,2/0+"測試",Toast.LENGTH_SHORT).show();
}
});
File fixFile = new File(Environment.getExternalStorageDirectory(),"fix.apatch");
if (fixFile.exists()){
//修復bug
try {
MyApplication.mPatchManager.addPatch(fixFile.getAbsolutePath());
Toast.makeText(this,"修復成功",Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this,"修復失敗",Toast.LENGTH_SHORT).show();
}
}
}
}
4、生成一個金鑰jks,簽名生成一個有bug和一個沒bug的兩個包
5、從上面的網址下載得到生成差分包工具解壓包apkpatch-1.0.3.zip
6、在命令臺輸入命令:
C:\Users\willkong\Desktop\AndFix-master\tools>apkpatch.bat -f new.apk -t old.apk
-o out -k **.jks -p ****** -a ** -e ******
C:\Users\willkong\Desktop\AndFix-master\tools>是apkpatch.bat差分包生成工具的路徑。
生成差分包的命令是:
apkpatch.bat -f -t -o -k -p<> -a -e<>
-f : 沒有bug的新版本apk
-t : 有bug的舊版本apk
-o : 生成的補丁檔案所放的資料夾
-k : 簽名打包金鑰
-p :簽名打包金鑰密碼
-a : 簽名金鑰別名
-e : 簽名別名密碼(這裡一般和金鑰密碼一致)
7、把生成 的差分包改名為fix.apatch,複製到手機記憶體中,重新開啟程式,則程式就自動修復了bug
相關文章
- Alibaba-AndFix Bug熱修復框架的使用框架
- Andfix熱修復框架原理及原始碼解析-上篇框架原始碼
- Andfix熱修復框架原理及原始碼解析-下篇框架原始碼
- Alibaba-AndFix Bug熱修復框架原理及原始碼解析框架原始碼
- Tinker 熱修復框架 簡單上手教程框架
- 你值得知道的Android 熱修復,以及熱修復原理Android
- 你期待已久的熱修復—Tinker熱修復整合總結
- 熱修復初探
- Android熱修復原理(一)熱修復框架對比和程式碼修復Android框架
- 【Android 熱修復】美團Robust熱修復框架原理解析Android框架
- Android 熱修復Android
- Android熱更新方案之阿里AndFix 原理以及原始碼解析Android阿里原始碼
- Android熱修復原理Android
- robust 熱修復實踐
- 熱修復和外掛化
- Tinker熱修復整合總結
- Android 熱修復總結Android
- 熱修復預備知識
- 淺析“熱更新”(熱修復)解決方案
- 資料恢復工具Recoverit使用教程:如何修復損壞的影片資料恢復
- Flutter Android 端熱修復(熱更新)實踐FlutterAndroid
- 簡單易懂的tinker熱修復原理分析
- 熱修復框架原始碼剖析(上)框架原始碼
- Flutter 使用 bugly 進行異常上報與熱修復Flutter
- 深入探索Android熱修復技術原理讀書筆記 —— 熱修復技術介紹Android筆記
- 深入探索Android熱修復技術原理讀書筆記 —— 程式碼熱修復技術Android筆記
- 深入探索Android熱修復技術原理讀書筆記 —— 資源熱修復技術Android筆記
- 修復工具DBVERIFY的使用
- DexClassLoader熱修復的入門到放棄
- Android熱修復簡單總結Android
- 手把手教你寫熱修復(HOTFIX)
- tinker熱修復——補丁載入合成
- 手動實現最簡單的Android熱修復(最新最全詳細小白教程)Android
- directx修復工具win10怎麼用_win10系統directx修復工具使用教程Win10
- OCEval-動態執行ObjectiveC的熱修復方案Object
- Win10安全中心怎麼更新漏洞修復_win10使用安全中心更新漏洞修復教程Win10
- 熱修復(一)原理與實現詳解
- iOS 5分鐘整合熱修復(JSPatch)iOSJS