Android AndFix修復方式的限制


這里閱覽了很多網上關於修復的資料,一一貼在這里便於查看:

https://github.com/alibaba/AndFix  這是官方處  要了解使用,一定得看看這里。

http://www.jianshu.com/p/479b8c7ec3e3 如果你看不懂官方的,就看看這里。

http://blog.csdn.net/lpftobetheone/article/details/50435371  適合初步了解使用,一個簡單的Demo(這篇文章里面有對補丁只能加載一次問題的解決)

http://www.cnblogs.com/common1140/p/5287040.html  這一篇更貼近於我們的實際開發,如何使用修復- 產生 - 上傳補丁 -下載補丁

https://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731290eef12ad0d17f39d4a&scene=1&srcid=1106Imu9ZgwybID13e7y2nEi#wechat_redirect 這里是尋找原理的地方

下面說一下修復的幾種方式:

AndFix修復:

① 不支持YunOS
② 無法添加新類和新的字段
③ 需要使用加固前的apk制作補丁,但是補丁文件很容易被反編譯,也就是修改過的類源碼容易泄露。
④ 使用加固平台可能會使熱補丁功能失效(看到有人在360加固提了這個問題,自己還未驗證)。

⑤ andfix不支持布局資源等的修改

⑥ 官網:AndFix supports Android version from 2.3 to 7.0, both ARM and X86 architecture, both Dalvik and ART runtime, both 32bit and 64bit.

⑦ 應用patch不需要重啟。但由於從實現上直接跳過了類初始化,設置為初始化完畢,所以像是靜態函數、靜態成員、構造函數都會出現問題,復雜點的類Class.forname很可能直接就會掛掉。

⑧ AndFix的一個潛在問題:

    加載一次補丁后,out.apatch文件會copy到getFilesDir目錄下的/apatch文件夾中,在下次補丁更新時,會檢測補丁是否已經添加在apatch文件夾下,已存在就不會復制加載sdcard的out.apatch。

源碼:

public void addPatch(String path) throws IOException { File src = new File(path);
    File dest = new File(mPatchDir, src.getName());
    if(!src.exists()){ 
    throw new FileNotFoundException(path); }
  
if (dest.exists()) {
     Log.d(TAG, "patch [" + path + "] has be loaded."); return; }
   FileUtil.copyFile(src, dest);
// copy to patch's directory Patch patch = addPatch(dest); if (patch != null) {
    loadPatch(patch); }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM