android熱補丁
㈠ andfix原理
AndFix,全稱是Android hot-fix,是一個Android熱補丁框架。
原理是:apkpatch將兩個apk做一次對比,然後找出不同的部分。可以看到生成的apatch了文件,後綴改成zip再解壓開,裡面有一個dex文件。通過jadx查看一下源碼,裡面就是被修復的代碼所在的類文件,這些更改過的類都加上了一個_CF的後綴,並且變動的方法都被加上了一個叫@MethodReplace的annotation,通過clazz和method指定了需要替換的方法。然後客戶端sdk得到補丁文件後就會根據annotation來尋找需要替換的方法。最後由JNI層完成方法的替換。
如果本地保存了多個補丁,那麼AndFix會按照補丁生成的時間順序載入補丁。具體是根據.apatch文件中的PATCH.MF的欄位Created-Time。
局限性:不支持YunOS
無法添加新類和新的欄位
需要使用加固前的apk製作補丁,但是補丁文件很容易被反編譯,也就是修改過的類源碼容易泄露。
使用加固平台可能會使熱補丁功能失效。
andfix與Nuwa對比,
Nuwa是另一個熱補丁框架。
㈡ android熱修復與加固沖突嗎
針對Android平台,Dexposed支持函數級別的在線熱更新,例如對已經發布在應用市場上的宿主APK,當我們從crash統計平台上發現某個函數調用有bug,導致經常性crash,這時,可以在本地開發一個補丁APK,並發布到伺服器中,宿主APK下載這個補丁APK並集成後,就可以很容易修復這個crash。
Dexposed是基於久負盛名的開源Xposed框架實現的一個Android平台上功能強大的無侵入式運行時AOP框架。
Dexposed的AOP實現是完全非侵入式的,沒有使用任何註解處理器,編織器或者位元組碼重寫器。集成Dexposed框架很簡單,只需要在應用初始化階段載入一個很小的JNI庫就可以,這個載入操作已經封裝在DexposedBridge函數庫裡面的canDexposed函數中,源碼如下所示:
/**
* Check device if can run dexposed, and load libs auto.
*/
public synchronized static boolean canDexposed(Context context) {
if (!DeviceCheck.isDeviceSupport(context)) {
return false;
}
//load xposed lib for hook.
return loadDexposedLib(context);
}
private static boolean loadDexposedLib(Context context) {
// load xposed lib for hook.
try {
if (android.os.Build.VERSION.SDK_INT > 19){
System.loadLibrary("dexposed_l");
} else if (android.os.Build.VERSION.SDK_INT == 10
|| android.os.Build.VERSION.SDK_INT == 9 ||
android.os.Build.VERSION.SDK_INT > 14){
System.loadLibrary("dexposed");
}
return true;
} catch (Throwable e) {
return false;
}
}
Dexposed實現的hooking,不僅可以hook應用中的自定義函數,也可以hook應用中調用的Android框架的函數。Android開發者將從這一點得到很多好處,因為我們嚴重依賴於Android SDK的版本碎片化。
㈢ Android開發Tinker熱更新的問題
通過閱讀官方的技術文檔,始終沒有發現有對這個情況的相關配置項,所以只能從別處下手,最後發現,通過在 app mole 的 「build.gradle」 文件中,注釋掉依賴插件腳本,最終解決掉這個問題:
說兩句:
目前運行調試一切正常,不過要始終留意後續是否會出現問題;重要的一點是,當要打包新版本時,一定要解開這個注釋。
2、can』t the get signConfig for this build
問題:
執行 buildTinkerPatchRelease 打 Release 版本補丁包時報以下錯誤:
Error:Execution failed for task ':app:tinkerPatchRelease'.
> can't the get signConfig for this build
1
2
解決:
android {
...
// 簽名配置【buildTypes中調用了signingConfigs,則signingConfigs{}要置於buildTypes{}前面】
signingConfigs {
release {
try {
storeFile file("MyProject.jks")
storePassword "111111"
keyAlias "zhangzeqiao"
keyPassword "111111"
} catch (ex) {
throw new InvalidUserDataException(ex.toString())
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
debug {
...
signingConfig signingConfigs.release
}
}
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
其中要特別注意,signingConfigs{} 方法體要置於 buildTypes{} 方法體前面,不然會報以下錯誤:
㈣ 安卓聖安地列斯能用熱咖啡補丁嗎
也可以的,方法差不多,但我的先root了手機,你要是不行就root後再試
㈤ android熱更新框架哪個好
一.基礎知識
1.阿里的熱更新框架已經開源 了。但已經很久沒有更新過新版本了。當前的版本只支持到了 Android 4.4。由於 5.0 起新的 ART 虛擬機、更嚴格的 SELinux 策略以及對 64 位的支持之類的事,使得 Xposed 都在開發上做了很多調整。我不知道 Dexposed 現在是否支持,但至少阿里沒有開源。
2.在本地動態執行遠端下發的代碼是極度危險的行為。利用此方法執行非法代碼等或用於繞過 Google Play 等市場的審查是違反相關協議的,也是對用戶極度不負責任的行為。
3.在一些訪問非常密集的地方使用熱更新可能會對效率產生相對比較大的影響,應該避免使用.
4.我們可以對 Java 的 ScriptEngine 進行一些封裝成為一個 HotPatch 類使得它更適合做熱更新的工作。
5.首先,檢查熱更新補丁的管道一定要建立在 https 上,因為下發代碼是極其危險的,如果被劫持,後果是無法想像的。其次,請求時最好自動帶上 Android 版本、手機型號、地區、版本號等信息,以方便更精確地下發,千萬不能下發錯。
6.Java在運行時載入對應的類是通過ClassLoader來實現的,ClassLoader本身是一個抽象來,Android中使用PathClassLoader類作為Android的默認的類載入器
7.我們的如果想做hotpatch,一定要保證我們的hotpacth dex文件出現在dexElements列表的前面。
二.常用的熱更新技術框架:
基於QQ空間的HotFix →→ 要使用到android dex分包方案→拆分dex的項目的話,可以參考一下谷歌的multidex方案實現.
大眾點評的NuWa←項目補丁自動化做的很完整
alibaba/AndFix
阿里巴巴的DexPosed
dalvik_patch實現multidex
使用React-Native實現app熱部署的一次實踐
alibaba/AndFix
三、常用的熱更新技術框架比較
Advantage
disadavantage
NuWa
1,可以新增類和欄位,
2,兼容到6.0系統
1,基本原理是classloader,類載入器
2,不能修改資源文件,如圖片布局等(可通過動態布局實現)
AndFix
1, 支持Android2.3到6.0版本
2, 支持arm與x86系統架構
3, 支持dalvik和ART的runtime
4, 不需要重啟App即可應用補丁
1,不能新增類和欄位,
2,不能修改資源文件,
3,不能修改manifest文件
4,不能新增成員變數
5,不能使用加固後的apk製作pacth文件
四、github地址
網路的同學的實現 HotFix
點評的同學的實現 Nuwa
阿里的同學的實現 AndFix
另:AndFix對static的支持不太好,下面是試驗的Demo:
添加了一個靜態的欄位addString:
通過AndFix來製作patch會直接報錯:
㈥ Android Studio創建項目後,修改代碼後,需要保存嗎
不需要,androidstudio編寫代碼,都是自動保存的,不需要手動保存。不過建議把代碼放到伺服器保存一份,比如GitHub,這樣一個可以算是備份,二來你在其他地方也可以拉代碼編寫
㈦ 2016年,移動開發領域有哪些最佳實踐值得參考
參考下面
從開發角度看,移動相關的架構、開發也有很多獨特之處。在即將於4月21~23日舉行的QCon北京2016上,就准備了很多移動開發方面的最佳實踐,來自騰訊、阿里巴巴、網路、京東、華為、美團、網易、和滴滴出行等公司的專家將分享他們的一手經驗。
本次QCon,有「移動開發挑戰」和「移動測試技術」兩個移動相關的專題,其他專題也有與移動相關的產品設計、大數據和架構方面的演講。
移動開發挑戰
移動開發挑戰專題,出品人是美團網高級技術專家、美團客戶端平台團隊負責人陳曉亮。先來看看這個專題會有哪些精彩內容。
隨著3G、4G網路的普及,Wi-Fi熱點的增多,移動網路上的音視頻需求越來越多。移動互聯網的很多領域對音視頻通話有強需求,例如社交、情侶、在線教
育、移動醫療、O2O
等。讓App能通話,是一件既炫酷又實用的事情。不過移動互聯網的音視頻通話存在方方面面的挑戰,比如中國東北網通用戶,和中國南方電信用戶通話,網
絡不好怎麼辦;通話卡頓,如何診斷問題出在哪裡;如何評估某次通話的傳輸質量好不好;機場、學校、公司這些場所,有防火牆封埠怎麼辦。種種問題,聲網首
席音視頻架構師孫雨潤將在演講《移動互聯網的音視頻傳輸挑戰》中一一解答。
手機App在音視頻方面的應用產品,近兩年呈井噴狀態。觀眾在流暢地觀看著視頻畫面的同時,背後其實包含了大量的技術難題。網易杭州研究院多媒體技術專家
郭再榮也將談談《移動端音視頻應用優化之道》。本次分享將從手機攝像頭數據採集開始,把視頻編碼、數據傳輸、視頻解碼、畫面顯示整條鏈路中的技術難點和優
化方法進行詳細講解。另外,還會對音視頻開發者最關心的一些問題如直播延時、畫面清晰度、手機端資源消耗等展開討論。
很多團隊要同時維護多個項目,還要快速迭代,穩定性、容錯能力都非常重要。網路的鳳巢App團隊就是這樣,在同一時間要開發和維護數個項目。網路移動開發
平台針對Android和iOS兩個平台,通過對基礎功能抽取並單獨封裝SDK完成非業務剝離,剝離後的通用功能整體為一個SDK,每個獨立功能又單獨封
裝為SDK,即SDK插件化;這樣SDK不但具備可插拔功能,而且在開發者角度上具備自動獲取更新功能。網路移動端架構師李禕嵩將分享《網路移動開發平台
最佳實踐》。
隨著移動互聯網蓬勃發展,App規模越來越大,對App發布迭代速度和質量有更高的要求,技術開發同學面臨著更大的挑戰。怎樣讓App發布更快更靈活,以
及上線後更快地修復各種Crash和緊急Bug,讓用戶免去下載安裝的操作,在最短的時間內升級用戶手中的App,是Android開發人員面臨的一個重
要的技術課題。騰訊社交平台部Android平台組組長俞尚將分享《Android超級補丁包技術》。QQ空間團隊在去年實現class替換熱補丁包技術
的基礎上,更進一步在業內首創超級補丁包技術,實現了App上Dex和資源替換覆蓋,在開發人員和用戶都完全透明無感知的情況下,可把任意App直接升級
到最新版本。補丁技術已經在空間、微信和QQ等騰訊公司重量級產品上得到推廣和應用,在此希望和業內其他團隊在技術上做些分享和交流。
前端技術和移動端開發結合越來越緊密。Weex是阿里巴巴提出的移動應用的全新技術解決方案,能夠將傳統Native的性能和HTML5的靈活和開發體驗
巧妙結合,同時在大規模工程實踐和在微觀問題上的無侵入性運用方面具備非常大的優勢。淘寶無線前端架構負責人趙錦江(勾股)和阿里技術專家徐凱(鬼道)將
分享《Weex——靈活的移動端高性能動態化方案》,希望從前端開發體驗和理念上,以及從Native端的渲染能力上,完整的呈現。
㈧ 求安卓俠盜獵車手SA 熱咖啡補丁
熱咖啡補丁被封了,下不到了,如果在貼吧關系不錯的話可以去貼吧問問,因為這個補丁讓rockstar當時股票跌了不少。
㈨ RiskWare/android/mtracker.a這個是不是病毒
這是非法獲得root許可權的程序(內置於母程序),作為子程序被母程序調用。其實網路一鍵root和360一鍵root都有類似的模塊。無法單獨從這個名字看出是哪個病毒。有一種模塊叫Rootkit,不過應該不是這個。
SDK開發者應盡可能地避免使用雲控、熱補丁等動態代碼載入技術,要謹慎接入具有動態更新能力的SDK,防止惡意SDK影響自身應用的口碑;
用戶在下載手機軟體時,應通過正規應用市場進行,避免直接在網頁上點擊安裝不明軟體。
最後,用戶應養成良好的安全使用手機的習慣,藉助第三方安全軟體對手機進行安全檢測,移除存在安全風險的應用。
㈩ 騰訊開源的c++項目
1、Android熱修復框架Tinker。2、微信客戶端跨平台組件Mars。3、小程序組件化開發框架wepy。4、輕量級高性能的Hybrid框架VasSonic。5、微信團隊前端開發工具WeFlow。
Tinker是微信官方的Android熱補丁解決方案,它支持動態下發代碼、So庫以及資源,讓應用能夠在不需要重新安裝的情況下實現更新。當然,你也可以使用Tinker來更新你的插件。Mars是微信官方的終端基礎組件,目前已接入微信Android、iOS、Mac、Windows、WP等客戶端。WePY是一款讓小程序支持組件化開發的框架,通過預編譯的手段讓開發者可以選擇自己喜歡的開發風格去開發小程序。框架的細節優化,Promise,AsyncFunctions的引入都是為了能讓開發小程序項目變得更加簡單,高效。