7-1-Android 超級補丁包技術(shù)-俞尚_第1頁
7-1-Android 超級補丁包技術(shù)-俞尚_第2頁
7-1-Android 超級補丁包技術(shù)-俞尚_第3頁
7-1-Android 超級補丁包技術(shù)-俞尚_第4頁
7-1-Android 超級補丁包技術(shù)-俞尚_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

騰訊俞尚(anlanyu)顛覆Android移動端的開發(fā)模式2016-4-222016-4-22?俞尚,2007年加入騰訊,T3.3高級工程師?早年QQ瀏覽器開發(fā)核心骨干,自研瀏覽器內(nèi)核,在算法和性能方面有比較深入的研究。?2012年開始是QQ空間Android團隊Leader,負責(zé)空間技術(shù)和團隊管理工作?主要在QQ空間架構(gòu)優(yōu)化,性能調(diào)優(yōu),移動網(wǎng)絡(luò),Android內(nèi)核等方面有些研究?一、技術(shù)背景–苦逼的現(xiàn)狀、面臨的問題、超級補丁包的優(yōu)勢–與其它補丁技術(shù)對比–實際應(yīng)用效果?二、技術(shù)原理?三、技術(shù)難點?四、其它問題6.1版本 規(guī)劃開發(fā)測試發(fā)布安裝6.2版本 規(guī)劃開發(fā)測試發(fā)布安裝發(fā)布成本高,用戶安裝成本也高版本周期長,并行開發(fā)更多需求,更多加班,苦不堪言發(fā)布成本高發(fā)布成本高開發(fā)周長用用戶更新慢風(fēng)險大?隨時發(fā)布?對開發(fā)透明?不足:需要重啟App???空間幾億用戶驗證?99%機型上驗證?4.x-6.x版本上驗證?Dexposed&Andfix–方法級的替換,不方便(舉例說明)–不支持資源替換–Dexposed在Art虛擬上很難實現(xiàn)–Andfix不支持Davik虛擬機javaMethod:?accessFlags的值是1,2,4,javaMethod:?accessFlags的值是1,2,4,8等?insSize>0?insns指向dexcache中的指令入口JninativeMethod:?accessFlags==ACC_NATIVEjninative化javaFuncexecuteCallMethodJnijavaallstructClassObject:Object{……intdirectMethodCount;Method*directMethods;intvirtualMethodCount;Method*virtualMethods;……}ustructstructMethod{ClassObject*clazz;u2accessFlags;u2u2u2insSize;DexProtoprototype;constchar*shorty;constu2*insns;intjniArgInfo;DalvikBridgeFuncnativeFunc;boolfastJni;boolnoRef;boolshouldTrace;constRegisterMap*registerMap;}methodIndex;registersSize;outsSize;2核心代碼:art::mirror::ArtMethod*smeth=(art::mirror::ArtMethod*)env->FromReflectedMethod(src);art::mirror::ArtMethod*dmeth=(art::mirror::ArtMethod*)env->FromReflectedMethod(dest);memcpy(smeth,dmeth,sizeof(art::mirror::ArtMethod));?優(yōu)勢:–支持類替換,對開發(fā)透明–支持資源替換–同時支持Davik和Art虛擬機–復(fù)雜度低,兼容性好(Java層實現(xiàn))?缺點:–需要重啟才能生效–Android系統(tǒng)代碼不能打補丁dexposedjava超級補丁兼容性類替換方法替換資源替換andfix?更新速度:–只要用戶上線,就會更新?更新成功率–99%?安裝包減少–75%?無需發(fā)布–不用上應(yīng)用市場,節(jié)省人力?不用安裝–用戶無感知6.3版本6.3版本6.5版本開發(fā)周期長,迭代慢質(zhì)量風(fēng)險大,無法及時修復(fù) 需求1需求3 需求評審設(shè)計&開發(fā)集成測試發(fā)布 需求1需求2需求3 需求評審設(shè)計&開發(fā)集成測試發(fā)布需需求效果未經(jīng)過灰度驗證求3求1快速開發(fā)簡單測試灰度發(fā)布快速開發(fā)簡單測試灰度發(fā)布求2快速開發(fā)簡單測試求3求1快速開發(fā)簡單測試灰度發(fā)布快速開發(fā)簡單測試灰度發(fā)布求2快速開發(fā)簡單測試灰度發(fā)布生成補丁集成測試補丁包全量發(fā)布開發(fā)中合流應(yīng)用市場全量發(fā)布集成測試開發(fā)周期短,需求獨立發(fā)布需求效果經(jīng)過灰度驗證后FeedsFeeds團隊相相冊團隊已經(jīng)發(fā)布66.3版本66.5版本質(zhì)質(zhì)量風(fēng)險小,有問題可以隨時回滾?一、技術(shù)背景?二、技術(shù)原理–從Patch中加載Class–從Patch中加載資源–怎么生成補丁包?三、技術(shù)難點?四、其它問題?能從多個APK加載Class嗎??能從多個Apk加載Resource嗎??如果有重復(fù)的資源和Class虛擬機怎么處理?esoruce代碼esoruce代碼?加載補丁包Davick/Art虛擬機ClasClassLoader補丁包補丁包代碼新版本代碼AndroidManifest新版本代碼AndroidManifest對新增或修改過的代碼和資源文件差異部分?生成補丁包代碼AndroidManif補丁包補丁包代碼?資源–Assets–Res–Resource.arsc?代碼–Dex–So?描述文件–AndroidManifest?一、技術(shù)背景?二、技術(shù)原理?三、技術(shù)難點生成補丁包難點(混淆,ID變化,無編譯)–加載補丁包難點?四、其它問題?R.java?Resource.arsc6.1代碼6.1代碼6.0class6.0classMap文件 6.0代碼ProguardMap文件uard66.1class–具體參考(/manual/usage.html)?資源混淆–非官方操作,自己解決吧00x7F030001---->0x7F030002?AAPT命令6.?AAPT命令6.0資源AAPTpublicpublic.xmlAAPT66.1資源?res/values/目錄下添加public.xml文件LayoutLayout.xml無法編譯?不用AAPT自己生成Resources.arsc?參考:m/category/android/android-resources/?一、技術(shù)背景?二、技術(shù)原理?三、技術(shù)難點–生成補丁包難點–加載補丁包難點(ISPREVARIFIED錯誤,無法增加Activity)?四、其它問題ClassLoader代碼ClassLoader代碼DavickDavick/Art(Context)esoruce(AssetManager)補丁包補丁包代碼就這么簡單?IllegalAccessError:Classrefinpre-verifiedclassresolvedtounexpectedimplementation調(diào)用?阻止類被打ISPREVERIFIED標(biāo)記allclasallclass?DexOpt時,如果調(diào)用的另一個類不在同一個Dex中,就不會打上ISPREVERIFIED標(biāo)記?因為AndroidManifest.xml是安裝時向系統(tǒng)注冊Activity等信息,運行時無法替換。沒有辦法增加Activity?預(yù)埋多個Activity?編譯補丁包時,把新增Activity名字修改為ChunkActivity。?算是部分解決問題(不能Export)?一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論