Android AndFix(熱修復)
https://github.com/alibaba/AndFix
AndFix
AndFix是一個解決線上錯誤,而不是重新分配Android應用程式的解決方案。它是作為Android庫分發的。
Andfix是“的縮寫而固醇熱-修復”。
AndFix支援從2.3到7.0的Android版本,包括ARM和X86架構,Dalvik和ART執行時,都是32位和64位。
AndFix的補丁的壓縮檔案格式是.apatch。它從你自己的伺服器傳送到客戶端來修復你的應用程式的錯誤。
原理
AndFix的實現原理是方法體的替換,
方法替換
AndFix判斷這些方法應該被java自定義註釋所替代,並通過掛鉤來替換它。art_replaceMethod
在ART或dalvik_replaceMethod
Dalvik中有本地的方法。
有關詳細資訊,在這裡。
修復過程
積分
如何獲得?
直接將AndFix aar新增到您的專案中作為編譯庫。
對於你的maven依賴,
< dependency > < groupId > com.alipay.euler </ groupId > < artifactId >和fix </ artifactId > < version > 0.5.0 </ version >< type > aar </ type > </ dependency >
對於你的gradle依賴,
依賴{ 編譯' com.alipay.euler:andfix:[email protected] ' }
如何使用?
- 初始化PatchManager,
patchManager = 新的 PatchManager(上下文); patchManager 。的init(appversion); //當前版本
- 載入補丁,
patchManager 。loadPatch();
一般來說,您應該儘可能早地載入補丁,在應用程式的初始化階段(如Application.onCreate()
)。
- 新增補丁,
patchManager 。addPatch(路徑); //下載的補丁檔案路徑
當一個新的補丁檔案被下載後,它將立即生效addPatch
。
開發工具
AndFix提供了一個稱為apkpatch的修補工具。
如何獲得?
該apkpatch
工具可以在這裡找到。
如何使用?
-
準備兩個android包,一個是線上包,另一個是你通過編碼修復bug後的包。
-
.apatch
通過提供兩個包來生成檔案,
usage: apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <***> -a <alias> -e <***>
-a,--alias <alias> keystore entry alias.
-e,--epassword <***> keystore entry password.
-f,--from <loc> new Apk file path.
-k,--keystore <loc> keystore path.
-n,--name <name> patch name.
-o,--out <dir> output dir.
-p,--kpassword <***> keystore password.
-t,--to <loc> old Apk file path.
現在你得到應用程式的救星,補丁檔案。然後你需要以某種方式派遣它到你的客戶端,推或拉。
有時候,你的團隊成員可能會修復對方的錯誤,而不是隻產生一個.apatch
。對於這種情況,你可以.apatch
使用這個工具合併檔案,
usage: apkpatch -m <apatch_path...> -o <output> -k <keystore> -p <***> -a <alias> -e <***>
-a,--alias <alias> keystore entry alias.
-e,--epassword <***> keystore entry password.
-k,--keystore <loc> keystore path.
-m,--merge <loc...> path of .apatch files.
-n,--name <name> patch name.
-o,--out <dir> output dir.
-p,--kpassword <***> keystore password.
執行示例
- 將samplesI / AndFixDemo匯入到您的IDE中,使用AndFix(庫專案或aar)附加AndFixDemo依賴項。
- 構建專案,將包儲存為1.apk,然後安裝在裝置/模擬器上。
- 修改com.euler.test.A,引用com.euler.test.Fix。
- 生成專案,將包儲存為2.apk。
- 使用apkpatch工具製作補丁。
- 重新命名補丁檔案out.apatch,然後將其複製到SD卡。
- 執行1.apk並檢視日誌。
注意
ProGuard的
如果啟用ProGuard,則必須儲存mapping.txt,以便新版本的build可以使用“-applymapping”。
有必要保持下面的課程,
-
本地方法
com.alipay.euler.andfix.AndFix
-
註解
com.alipay.euler.andfix.annotation.MethodReplace
為確保在執行混淆和靜態分析工具(如ProGuard)後可以找到這些類,請將以下配置新增到ProGuard配置檔案中。
-keep class * extends java.lang.annotation.Annotation
-keepclasseswithmembernames class * {
native <methods>;
}
自修改程式碼
如果你使用它,比如Bangcle。要生成補丁檔案,你最好使用原始apk。
安全
以下是重要的,但是不在AndFix的範圍之內。
- 驗證補丁檔案的簽名
- 驗證優化檔案的指紋
API文件
javadoc庫可以在這裡找到。
相關推薦
Android AndFix(熱修復)
https://github.com/alibaba/AndFix AndFix AndFix是一個解決線上錯誤,而不是重新分配Android應用程式的解決方案。它是作為Android庫分發的。 Andfix是“的縮寫而固醇熱-修復”。 AndFix支援從2.3到7
android--------阿裏 AndFix 熱修復
void xtend width directory adb src 進入 情況 style AndFix,全稱是Android hot-fix。是阿裏開源的一個熱補丁框架,允許APP在不重新發布版本的情況下修復線上的bug。 支持Android 2.3 到 6.0,並且支
Andfix熱修復框架原理及源代碼解析-上篇
ren oid 聯系 pass 重命名 命名 key () 提示 熱補丁介紹及Andfix的使用 Andfix熱修復框架原理及源代碼解析-上篇 Andfix熱修復框架原理及源代碼解析-下篇 1.不知道怎樣使用的同學,建議看看我上一篇寫的介紹熱補丁和An
android原生熱修復流程和原理分析實現
首先apk就是一個壓縮檔案,解壓apk檔案的內容如下圖: 安卓原生熱修復主要原理圖和流程圖如下,我花了好長時間才繪好,中間改了好幾次,應該來說是很直觀明白的,其中有截取了BaseDexClassLoader的關鍵原始碼,還有DexPathList的原始碼 a.現將打
andfix熱修復之生成dex檔案
熱修復中用到把修改好的java檔案編譯成class再打包生成dex 步驟: 1、配置dx.bat到環境變數 選擇androidsdk\build-tools中任一版本的都行。 配置dx.bat的路徑到系統的PATH路徑。 3、將要生成dex的class檔案 連同全路徑資料夾拷貝
android中熱修復與外掛化(一)
簡介 目前android技術最前沿莫屬熱修復與外掛化的技術點,當下用得最多的就是阿里的Andfix,和微信的Tinker框架,針對原始碼的實現,再次做個記錄。 熱修復給我們解決的問題 剛上線的APP應用,由於測試的疏忽,發現了一個嚴重的bug
包建強的培訓課程(15):Android App熱修復技術
Android外掛化和熱修復 一.簡介 本課程是目前對Android熱修復技術最全的整理和講解,涉及熱修復的歷史、技術流派,詳細介紹了業界各種熱修復技術的原理和接入方式,並對每種熱修復技術的優缺點進行評測。 本課程系列適合於: l從事Android開發2-3年的中高階技術人
AndFix熱修復的理解
一、 AndFix的熱修復方式: 二、AndFix的修復流程: 上圖大致的流程是: 1、檢測bug 2、分析原因 3、建立分支-修改bug-測試 4、生成.patch檔案 5、驗證是否修復 6、完成 AndFix熱修復的主要方式是以替換方法的方式進行修復; 優點
AndFix 熱修復使用
1.Eclipse 首先去官網下載資源包,androidStudio 使用 compile 'com.alipay.euler:andfix:[email protected]' 2.建立一個新專案,新建一個類繼承application,在manifest.xm
JAndFix: 基於Java實現的Android實時熱修復方案
簡述 JAndFix是一種基於Java實現的Android實時熱修復方案,它並不需要重新啟動就能生效。JAndFix是在AndFix的基礎上改進實現,AndFix主要是通過jni實現對method(ArtMethod)結構題內容的替換。JAndFix是通過Unsafe物件
Android應用熱修復
一、修復的工具 當前主要有兩個主流的熱修復工具: 1.阿里系:使用了DeXposed(修改了國外的),一年沒有維護了,現在又搞了一個andfix,是一種黑客技術。自己去實現了底層的zyqote。從底層C的二進位制來入手的。 2.騰訊系:tinker Ja
Android中熱修復框架Robust原理解析+並將框架程式碼從"閉源"變成"開源"(上篇)
一、前言Android中熱修復框架比較多,每家公司都有對應的方案和框架,比如阿里的AndFix框架,關於這個框架在之前的文章已經詳細講解了,不瞭解的同學可以點選這裡:AndFix熱修復框架原理分析 。本
Android Bugly 熱修復 快速接入
介紹 1、Bugly目前採用 2、Bugly已經搭建了管理後臺,對每個版本補丁進行管理。 3、實現自動下載補丁包、合成、並應用補丁。 接入Bugly 1、新增外掛依賴,工程根目錄下“build.gradle”檔案中新增: builds
Andfix熱修復框架原理及原始碼解析-上篇
1.不知道如何使用的同學,建議看看我上一篇寫的介紹熱補丁和Andfix的使用,這樣你才有一個大概的框架。通過使用Andfix,其實我們心中會有一個大概的輪廓,它的工作原理,大概就是,所謂的補丁檔
android Tinker 熱修復 樂固加固後友盟打多渠道包之後的補丁失效
現在的需求是這樣的,我想把這個包用騰訊樂固加固,然後生成多渠道包,希望這個補丁能修復所有這些渠道的包,經過測試,直接操作修復失敗,解決步驟如下: 參考熱修復api文件sdk接入,發現支援加固,處理方
Android Tinker熱修復
應該都遇到過剛上線的app,突然發現一個嚴重的bug需要修復,怎麼辦,以前的做法修改bug,然後重新打包app,測試,發新版本。即使是僅僅改動一行程式碼,也需要這麼繁瑣的操作來修復bug。 後來,出現熱修復技術,使用者在使用過程中不知不覺bug就修復了。
Android熱修復之AndFix使用教程
AndFix的github地址 AndFix 全稱Android hot-fix,是alibaba的Android熱修復框架,支援Android 2.3到6.0的版本,支援arm與X86系統架構,支援Dalvik和ART Runtime。 原理 AndFix的原理就是方法的替換,把有bug的方法替換成
Android熱修復與外掛化(四)AndFix
一、熱修復技術種類 技術對比 二、AndFix的基本介紹 官網 整合階段: 1、在gradle中新增依賴
Android熱修復框架——AndFix
一直關注App的熱修復的技術發展,之前做的應用也沒用使用到什麼熱修復開源框架。在App的熱修復框架沒有流行之前,做的應用上線後發現一個小小的Bug,就要馬上發一個新的版本。今天看了熱修復技術,感覺挺好玩的,就實現了使用的全過程。下面記錄使用開源框架阿里巴巴的AndFix過程
關於Android APP線上熱修復bug方案的調研(一)(AndFix)
調研背景: App釋出出去後,如果發現有緊急或重要bug如何進行修復呢? 重新發布一版APK?但這樣代價太大.... 那麼有沒有一種方案能夠不用更新整個APK,而只把伺服器上的很小的補丁檔案下載下來進行修復bug呢? 本文的調研也