1. 程式人生 > >Android AndFix(熱修復)

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自定義註釋所替代,並通過掛鉤來替換它。

AndFixart_replaceMethod在ART或dalvik_replaceMethodDalvik中有本地的方法

有關詳細資訊,在這裡

修復過程

圖片

積分

如何獲得?

直接將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] ' 
}

如何使用?

  1. 初始化PatchManager,
patchManager =  新的 PatchManager(上下文);
patchManager 的init(appversion); //當前版本
  1. 載入補丁,
patchManager loadPatch();

一般來說,您應該儘可能早地載入補丁,在應用程式的初始化階段(如

Application.onCreate())。

  1. 新增補丁,
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.

執行示例

  1. 將samplesI / AndFixDemo匯入到您的IDE中,使用AndFix(庫專案或aar)附加AndFixDemo依賴項。
  2. 構建專案,將包儲存為1.apk,然後安裝在裝置/模擬器上。
  3. 修改com.euler.test.A,引用com.euler.test.Fix。
  4. 生成專案,將包儲存為2.apk。
  5. 使用apkpatch工具製作補丁。
  6. 重新命名補丁檔案out.apatch,然後將其複製到SD卡。
  7. 執行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呢?       本文的調研也