當前位置:首頁 » 操作系統 » 配修源碼

配修源碼

發布時間: 2023-04-01 18:37:56

『壹』 大家好,小弟一直不明白對linux或uboot源碼包打補丁的原因。在網上查了資料也沒有詳細的介紹。

1、配置源碼需要重新編譯,而重新編譯系統會花費大量的時間,而且Linux系統並不是修改源碼就能編譯通過,還涉及到很多的Makefile,那麼要你單獨一個個的修改工作量也會比較大。但是源碼補丁可以自動識別和替換需要的,方便了一些並不是太熟悉Linux的人,而且減輕了用戶的工作量。
2、既然是補丁,肯定都是針對某一些特殊情況開發的,並不是所有人都會遇到這些情況,也並不是所有人都需要這些補丁。Linux發布的源碼都是一些Linux比較大的升級時候發布一次的,而源碼是提供給所有人的,那麼也不是每個人都需要這個補丁的源碼呀,一般都只是下載和自己所從事專業有關的。

補丁的話隨便你自己,因為不是所有人都需要那個補丁,就算你不裝,也沒什麼問題的

『貳』 DTSHD+TrueHD ATI-5770源碼輸出實戰

【IT168 emufan】PC上看藍光早已不是什麼稀罕事,HTPC遍地開花,為了追求發燒級的視聽效果,接入大屏電視或者投影機和多聲道影院音響系統,是HTPC取代影碟機成為核心設備的必然之路,視頻方面顯卡們輕車熟路,24P、Ycbcr編碼、16-235灰階輸出,都可以達到影碟機的水準,但音頻方面一直存在短板,在DVD時代,通過光纖或者同軸介面輸出DTS和AC3源碼(BitStream)到Av功放實現外部解碼十分普遍,而藍光時代,對於無損壓縮編碼的音軌而言,在PC上實現DTSHD和TrueHD的Bitstream卻變得異常艱難,在ATI 5000系列顯卡上市之前,要在PC上實現這一功能,需要搭配特定音效卡,目前為止,包括華碩的Xonar HDAV 1.3 Delux/Slim和Auzentech X-Fi HomeTheater HD,售價都要1000多元,我們之前也已經測試過華碩的兩塊音效卡,如果你對源碼輸出這檔子事還不是很清楚,可以看看HDAV1.3豪華版的測試文章


小貼士:無損源碼輸出目的和條件
我們所熟悉的DTS和AC3都是人耳聽覺特性刪減細節信息來實現的有損壓縮多聲道音軌,帶寬的限制同樣將采樣率和采樣精度限制在一個較低的水平,藍光影碟的大容量和高帶寬允許影碟採用像多聲道LPCM這樣的無損無壓縮音軌,但是LPCM還是很浪費帶寬,杜比和DTS公司分別推出了各自的無損壓縮編碼,那就是DTSHD和TrueHD,這就好比Mp3和APE,不僅可以完全還原原始錄音,在動態范圍和信噪比以及細節還原上表現都更為出色。之所以要將無損音軌輸出到外部解碼器,主要是因為PC本身的解碼能力受到軟體限制,不能達到最佳要求,同時PC音效卡的模擬輸出效果也遠不如AV功放自身解碼並優化放大的效果,除了超級發燒友們玩兒前後級之外,使用次世代AV功放接收bitstream源碼是普遍希望的搭配。

DTSHD MA(以及有損的DTSHD HR)和TrueHD(以及有損的dd plus)的源碼輸出都是在HDMI 1.3標准敲定之後才得以實現的,不僅需要硬體上的更新(比如PS3和PS3 slim),軟體上的配合同樣重要,華碩的HDAV 1.3需要搭配TotalMedia Theatre,Auzentech X-Fi HomeTheater HD需要POWER DVD9,都只在播放藍光光碟或者鏡像、藍光文件夾時,才可以實現HD音軌的源碼輸出。

實戰過程使用了一款ATI 5770顯卡,搭配安橋支持無損音軌解碼的AV功放SR507,顯卡具備DVI+HDMI+DP介面,我們使用HDMI介面輸出到SR507HDMI輸入,DVI介面連接Dell 3007,通過雙屏擴展模式給SR507輸出1920x1080解析度,至少對PC而言必須要和視頻一起輸出,且解析度為1080 720這樣的標准視頻解析度,顯卡只通過HDMI輸出AV功放、再由功放輸出到電視或者投影機是通常使用方法,不過雙HDMI輸出可是高檔藍光機才具備的功能哦,各有各的優點,這里限於空間就只用雙屏模式,由於只需判斷功放信號來源格式顯示信息,只用耳機監聽工作是否正常。
ATI 5770顯卡的驅動程序並無特殊需求,操作系統我們使用了Windows 7,win7上對HDMI音頻的使用更為方便,關鍵是最新版本的PowerDVD9,目前還只有這款預覽版的內部PD9可以實現無損源碼輸出,正式版還需要等到cyberlink官方的升級補丁。

首先將系統默認音效卡選為ATI HDMI音效卡,我們注意到在支持屬性里,已經包含了DTSHD和TrueHD的信息,LPCM的采樣率和采樣精度支持都很全面。

和TMT不同,筆者發現這版PD9不能在安裝好後就直接進設置找源碼輸出選項,只有在在開始播放藍光之後,在進入音頻設置,才會出現“non decode hight-defination audio to external device”選項,否則只有解碼為PCM和不解碼輸出DTS和AC3到外部設備選項

選了這個選項就開始輸出源碼了,AV功放上對應的信息指示燈亮起,便表明源碼輸出正常,不過ddplus出問題了,測試過幾部藍光之後,發現DTS HD MA和DTS HD HR以及TrueHD都工作正常,而DDplus只能源碼輸出AC3,還好現在藍光影碟幾乎沒有使用這一音軌格式的,可能是軟體的bug吧。在源碼輸出時,PD9的信息框顯示輸出播放中的壓縮的音軌格式。

ATI顯卡的內置HDMI音效卡通常全系列都保持同一規格,因此低價位低功耗的顯卡會成為HTPC的絕配,當然還需要搭配支持無損音軌解碼的AV功放才有用武之地,下面就推薦三款目前最為熱門的入門級次世代Av功放。此外,PD9隻能播放藍光光碟或者ISO鏡像,盡管一些高清PT網站已經開始提供這種ISO,不過大多數人可能都沒有機會下載這些龐然大物,如果手頭有些帶有無損音軌的remux 的TS文件,可以通過tsmuxer製成BDMV格式,這款軟體也支持將srt字幕的加入,再通過NERO或者IMGburn製作UDF2.5的鏡像文件,並通過daemon等虛擬光碟機載入。

低價位入門次世代功放推薦:
天龍 AVR 1610 參考價格 2400元

主要的規格
輸出入端子
HDMI端子:輸入3/輸出1
合成影像端子:輸入1/輸出2
s影像端子:輸入1
色差端子:輸入4/輸出2
音聲輸入:數碼光纖2,同軸數碼1,模擬6
音聲輸出:模擬2,後環繞/前置1
其它特性
額定輸出/前置75W+75W,中置75W,環繞75W+75W(8Ω、20Hz-20kHz、THD0.08%)
實際最大輸出功率/前置:130W+130W、中置:130W、環繞:130W+130W、(6Ω、JEITA)
外形尺寸(含腳,端子,)W434×H171×D378mm
重量9.2kg.
雅馬哈RX-V465 參考價格 2950元

140W×5ch高功率;
兼容HD音頻格式:Dobly TrueHD ;DTS-HD Master Audio ;
192kHz/24-bit DACs(美國Burr-Brown) 用於所有聲道
高畫質1080p兼容HDMI(4輸入/1輸出)
支持Deep Color(30/36 bit)和x.v.Color
100/120Hz和1080p24Hz刷新率
自動人聲同步補償
新場景按鈕功能
前板迷你插孔用於攜帶型音頻連接
YPAO(雅馬哈自動調音系統)
iPod功能可搭配雅馬哈通用底座YDS-11
藍牙功能可搭配雅馬哈無線音頻接收器YBA-10
新預設碼遙控器
環繞聲表現CINEMA DSP (17DSP程序)
自適應DRC
壓縮格式音質增強
深夜聆聽模式和寂靜影院
音頻延遲調整人聲同步(0~240ms)
安橋 SR507 參考價格 3200元

160W/聲道,6Ω,1kHz ,JEITA ,單聲道驅動
DTS-HD Master Audio,DTS-HD High Resolution Audio,DTS-HD Express,Dolby TrueHD,Dolby Digital Plus 解碼功能
DTS-ES Discrete/Matrix,DTS Neo:6,DTS 96/24,Dolby Digital EX,Dolby Pro Logic IIx 解碼功能
DTS 虛擬環繞聲技術
HDMI (1.3a版本) 支持Deep Color,x.v. Color,LipSync(唇音同步校正),Dolby TrueHD(杜比TrueHD),DTS-HD Master Audio(主體音頻),DVD-Audio,Super Audio CD及CEC
HDMI 音頻和視頻處理 (1080p;4組輸入和1組輸出)
Audyssey 2EQ 房間聲學修正技術
用於保持理想聆聽音量和動態 范圍的Audyssey 動態音量技術
用於響度修正的Audyssey Dynamic EQ技術
用於游戲的4種DSP模 式 :ROCK , 運動 , 動作 , RPG
用於攜帶型播放機的前面板音頻輸入
用於壓縮音樂文件的音樂優化器
H.C.P.S. (大電流電源供應) 巨型大電流變壓器
高級32bit DSP音效處理晶片
WRAT (寬頻放大技術)
Theater-Dimensional 虛擬環繞功能
純音頻模式
帶有模式鍵LED的新設計的預編程RI (相互控制) 遙控器
Universal Port 以簡易連接Onkyo 最新iPod 機座
W x H x D: 435 x 151.5 x 329 mm
重量: 10 kg

『叄』 怎樣查看和修改軟體的源代碼

exe文件信息一般不能直接更改,因為是編譯好的,並且一般都加了殼。
想改的話,得用脫殼了吧。不同的文件有可能用了不同的軟體加了殼。
用各類脫殼工具測試並脫殼後,再反編譯,有可能得到相關文件信息並更改。

(一)殼的概念

作者編好軟體後,編譯成exe可執行文件。 1.有一些版權信息需要保護起來,不想讓別人隨便改動,如作者的姓名,即為了保護軟體不被破解,通常都是採用加殼來進行保護。 2.需要把程序搞的小一點,從而方便使用。於是,需要用到一些軟體,它們能將exe可執行文件壓縮, 3.在黑客界給木馬等軟體加殼脫殼以躲避殺毒軟體。實現上述功能,這些軟體稱為加殼軟體。

(二)加殼軟體最常見的加殼軟體ASPACK ,UPX,PEcompact 不常用的加殼軟體WWPACK32;PE-PACK ;PETITE NEOLITE

(三)偵測殼和軟體所用編寫語言的軟體,因為脫殼之前要查他的殼的類型。 1.偵測殼的軟體fileinfo.exe 簡稱fi.exe(偵測殼的能力極強) 2.偵測殼和軟體所用編寫語言的軟體language.exe(兩個功能合為一體,很棒) 推薦language2000中文版(專門檢測加殼類型) 3.軟體常用編寫語言Delphi,VisualBasic(VB)---最難破,VisualC(VC)

(四)脫殼軟體。 軟體加殼是作者寫完軟體後,為了保護自己的代碼或維護軟體產權等利益所常用到的手段。目前有很多加殼工具,當然有盾,自然就有矛,只要我們收集全常用脫殼工具,那就不怕他加殼了。軟體脫殼有手動脫和自動脫殼之分,下面我們先介紹自動脫殼,因為手動脫殼需要運用匯編語言,要跟蹤斷點等,不適合初學者,但我們在後邊將稍作介紹。

加殼一般屬於軟體加密,現在越來越多的軟體經過壓縮處理,給漢化帶來許多不便,軟體漢化愛好者也不得不學習掌握這種技能。現在脫殼一般分手動和自動兩種,手動就是用TRW2000、TR、SOFTICE等調試工具對付,對脫殼者有一定水平要求,涉及到很多匯編語言和軟體調試方面的知識。而自動就是用專門的脫殼工具來脫,最常用某種壓縮軟體都有他人寫的反壓縮工具對應,有些壓縮工具自身能解壓,如UPX;有些不提供這功能,如:ASPACK,就需要UNASPACK對付,好處是簡單,缺點是版本更新了就沒用了。另外脫殼就是用專門的脫殼工具來對付,最流行的是PROCDUMP v1.62 ,可對付目前各種壓縮軟體的壓縮檔。在這里介紹的是一些通用的方法和工具,希望對大家有幫助。我們知道文件的加密方式,就可以使用不同的工具、不同的方法進行脫殼。下面是我們常常會碰到的加殼方式及簡單的脫殼措施,供大家參考: 脫殼的基本原則就是單步跟蹤,只能往前,不能往後。脫殼的一般流程是:查殼->尋找OEP->Dump->修復 找OEP的一般思路如下: 先看殼是加密殼還是壓縮殼,壓縮殼相對來說容易些,一般是沒有異常,找到對應的popad後就能到入口,跳到入口的方式一般為。 我們知道文件被一些壓縮加殼軟體加密,下一步我們就要分析加密軟體的名稱、版本。因為不同軟體甚至不同版本加的殼,脫殼處理的方法都不相同。

常用脫殼工具: 1、文件分析工具(偵測殼的類型):Fi,GetTyp,peid,pe-scan, 2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid 3、mp工具:IceDump,TRW,PEditor,ProcDump32,LordPE 4、PE文件編輯工具PEditor,ProcDump32,LordPE 5、重建Import Table工具:ImportREC,ReVirgin 6、ASProtect脫殼專用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只對ASPr V1.1有效),loader,peid(1)Aspack: 用的最多,但只要用UNASPACK或PEDUMP32脫殼就行了 (2)ASProtect+aspack:次之,國外的軟體多用它加殼,脫殼時需要用到SOFTICE+ICEDUMP,需要一定的專業知識,但最新版現在暫時沒有辦法。 (3)Upx: 可以用UPX本身來脫殼,但要注意版本是否一致,用-D 參數 (4)Armadill: 可以用SOFTICE+ICEDUMP脫殼,比較煩 (5)Dbpe: 國內比較好的加密軟體,新版本暫時不能脫,但可以破解 (6)NeoLite: 可以用自己來脫殼 (7)Pcguard: 可以用SOFTICE+ICEDUMP+FROGICE來脫殼 (8)Pecompat: 用SOFTICE配合PEDUMP32來脫殼,但不要專業知識 (9)Petite: 有一部分的老版本可以用PEDUMP32直接脫殼,新版本脫殼時需要用到SOFTICE+ICEDUMP,需要一定的專業知識 (10)WWpack32: 和PECOMPACT一樣其實有一部分的老版本可以用PEDUMP32直接脫殼,不過有時候資源無法修改,也就無法漢化,所以最好還是用SOFTICE配合 PEDUMP32脫殼 我們通常都會使用Procmp32這個通用脫殼軟體,它是一個強大的脫殼軟體,他可以解開絕大部分的加密外殼,還有腳本功能可以使用腳本輕松解開特定外殼的加密文件。另外很多時候我們要用到exe可執行文件編輯軟體ultraedit。我們可以下載它的漢化注冊版本,它的注冊機可從網上搜到。ultraedit打開一個中文軟體,若加殼,許多漢字不能被認出 ultraedit打開一個中文軟體,若未加殼或已經脫殼,許多漢字能被認出 ultraedit可用來檢驗殼是否脫掉,以後它的用處還很多,請熟練掌握例如,可用它的替換功能替換作者的姓名為你的姓名注意位元組必須相等,兩個漢字替兩個,三個替三個,不足處在ultraedit編輯器左邊用00補。

常見的殼脫法:

(一)aspack殼 脫殼可用unaspack或caspr 1.unaspack ,使用方法類似lanuage,傻瓜式軟體,運行後選取待脫殼的軟體即可. 缺點:只能脫aspack早些時候版本的殼,不能脫高版本的殼 2.caspr第一種:待脫殼的軟體(如aa.exe)和caspr.exe位於同一目錄下,執行windows起始菜單的運行,鍵入 caspr aa.exe脫殼後的文件為aa.ex_,刪掉原來的aa.exe,將aa.ex_改名為aa.exe即可。使用方法類似fi 優點:可以脫aspack任何版本的殼,脫殼能力極強缺點:Dos界面。第二種:將aa.exe的圖標拖到caspr.exe的圖標上***若已偵測出是aspack殼,用unaspack脫殼出錯,說明是aspack高版本的殼,用caspr脫即可。 (二)upx殼 脫殼可用upx待脫殼的軟體(如aa.exe)和upx.exe位於同一目錄下,執行windows起始菜單的運行,鍵入upx -d aa.exe (三)PEcompact殼 脫殼用unpecompact 使用方法類似lanuage傻瓜式軟體,運行後選取待脫殼的軟體即可 (四)procmp 萬能脫殼但不精,一般不要用 使用方法:運行後,先指定殼的名稱,再選定欲脫殼軟體,確定即可脫殼後的文件大於原文件由於脫殼軟體很成熟,手動脫殼一般用不到。

三、壓縮與脫殼

現在脫殼一般分手動和自動兩種,手動就是用TRW2000、TR、SOFTICE等調試工具對付,對脫殼者有一定水平要求。而自動就稍好些,用專門的脫殼工具來脫,最常用某種壓縮軟體都有他人寫的反壓縮工具對應,有些壓縮工具自身能解壓,如UPX;有些不提供這功能,如:ASPACK,就需要UNASPACK對付。很多文件使用了一些壓縮加殼軟體加密過,這就需要對文件進行解壓脫殼處理後,才能漢化。這種壓縮與我們平時接觸的壓縮工具如winzip,winrar等壓縮不同,winzip和winrar等壓縮後的文件不能直接執行,而這種 EXE 壓縮軟體,EXE文件壓縮後,仍可以運行。這種壓縮工具把文件壓縮後,會在文件開頭一部分,加了一段解壓代碼。執行時該文件時,該代碼先執行解壓還原文件,不過這些都是在內存中完成的,由於微機速度快,我們基本感覺不出有什麼不同。這樣的程序很多,如 The bat,Acdsee,Winxfile等等。

要脫殼就應先了解常用壓縮工具有哪些,這樣知己知彼,如今越來越多的軟體商喜歡用壓縮方式發行自己的產品,如The bat!用UPX壓縮,ACDSEE3.0用ASPACK壓縮等。它有以下因素:一是:微機性能越來越好,執行過程中解壓使人感覺不出來,用戶能接受(給軟體加殼,類似WINZIP 的效果,只不過這個加殼壓縮之後的文件,可以獨立運行,解壓過程完全隱蔽,都在內存中完成。解壓原理,是加殼工具在文件頭里加了一段指令,告訴CPU,怎麼才能解壓自己。現在的CPU都很快,所以這個解壓過程你看不出什麼異常。因為軟體一下子就打開了,只有你機器配置非常差,才會感覺到不加殼和加殼後的軟體運行速度的差別。)。 二是:壓縮後軟體體積縮小,便於網路傳輸。三是:增加破解的難度。首先,加殼軟體不同於一般的winzip,winrar等壓縮軟體.它是壓縮exe可執行文件的,壓縮後的文件可以直接運行.而winzip,winrar等壓縮軟體可壓縮任何文件,但壓縮後不能直接運行。很多站點不允許上傳可執行文件,而只能上傳壓縮的文件,一方面處於速度考慮,也是為了安全性考慮。用加殼軟體壓縮的文件就是體積縮小,別的性質沒改變。還是EXE文件,仍可執行,只是運行過程和以前不一樣了。壓縮工具把文件壓縮後,在文件開頭一部分,加了一段解壓代碼。執行時該文件時,該代碼先執行解壓還原文件,不過這些都是在內存中完成的,由於微機速度快,我們基本感覺不出有什麼不同。

『肆』 java基於SSM學校宿舍報修系統求源代碼

1、連最沒有用的積分都沒有,白給?
2、ssm整合
1、基本概念
1.1、Spring

Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是為了解決企業應用開發的復雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。 簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。
1.2、SpringMVC

Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定製。
1.3、MyBatis

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為MyBatis 。MyBatis是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將介面和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成資料庫中的記錄

『伍』 kubernetes修改源代碼,突破cpu的request限制

由於業務方配置Deployment時設置resource的request過大,以及linux內核在4.19版本之前的關於cgroup的cpu限流問題,導致node的資源使用率並不高的情況下,毀鎮node卻不能被調度更多的Pod,故採取修改kubernetes源碼的方式來解決。

使用和修改的版本是v1.16.9。

默認情況下,kubernetes對於node節點的resource的request到達100%的時候,就不再允許Pod被調度到該節點上,可以用 kubectl describe node <NODE> 來查看,在Allocated resources這一項:

默認情況下這一項是不可以超過100%的。

現在的思路就是讓kubernetes可以突破這個限制,可以超過100%,最高不超過200%。

修改的是 pkg/scheler/algorithm/predicates/predicates.go 文件的 PodFitsResources 方法,修改如下這一行:

只要把 allocatable.MilliCPU 乘以2,就可以達到200%那個效果了。

影響到的組件有 kube-scheler 和 kubelet ,其中 kubelet 被影響的位置是 pkg/kubelet/lifecycle/predicate.go 的 Admit 方法中的這判余洞一行:

kube-scheler 和 kubelet 都需要重新部署,首先將所有節點的 kubelet 都替換成hack之後的 kubelet 再重啟,然後替換master節點的 kube-scheler 。

最終效果如下:

能夠超過100%啦,間接地實現一種cpu超賣的效果。

有點喜感的是,使用hack之後的 kubelet ,在 kubectl get nodes 顯示的版本號後綴帶了 -dirty ,這個是掘枯指修源碼後git未做版本提交導致的,如果提交版本之後,後綴就是版本的hash,如果打上tag,那後綴就是tag。

『陸』 求高手修復選股指標源代碼

這段代碼的顯示效果是下圖樣式嗎。

如果是可以修復,下圖就是修復好的效果。

『柒』 熱修復Tinker(二)補丁包載入源碼分析

<p>

前面一篇Tinker相關的文章已經介紹了Tinker熱修復框架的使用與整個的修復流程,那麼這一篇就要開啟Tinker的源碼解析之路了。

首先簡單說一下Tinker的原理,Tinker其實也是類似multidex的dex方式,將目標dex插入到數組最前面,主要是通過對比原dex文件(存在bug)與現dex文件(bug已修復)生成差異包,生成的差異包作為補丁包下發給客戶端,客戶端做一系列校驗之後,將下發的差異包與本應用的dex文件合並成成全量的dex文件,並進行opt優化,當再次啟動APP時候則載入優化過的全量dex文件,將dex文件插入到DexPathList 中 dexElements的前面。

所以Tinker其實是兩個流程,一個是載入補丁包,另外一個是載入dex文件,兩個的載入流程相對較長,這里分開說明,唯碰這一篇呢,主要介紹載入補丁包的流程。

<p>

載入補丁橘大包的方法如下

往下看發現調用了TinkerInstaller的onReceiveUpgradePatch方法

TinkerInstaller.java

這里調用了PatchListener的onPatchReceived方法

而PatchListener是一個介面,他的具體實現為SamplePatchListener方法,onPatchReceived在SamplePatchListener的父類DefaultPatchListener有實現,我們看下DefaultPatchListener中的onPatchReceived方法
如下

DefaultPatchListener.java

首先這個檢測了一下這個插件是否可用,通過SamplePatchListener的patchCheck方法來檢測

SamplePatchListener.java

這里對插件是否可用進行了判斷,就不進行詳細分析了

當插件可用時候returnCode為ERROR_PATCH_OK,當不可用則會log出來失敗的errorcode

成功則調用

來啟圓山豎動TinkerPatchService這個IntentService,並且把插件的路徑給傳遞到IntentService

TinkerPatchService通過onHandleIntent來接收傳遞過來的數據

TinkerPatchService.java

這里首先調用了PatchReporter的onPatchServiceStart方法,而PatchReporter的實現為SamplePatchReporter

SamplePatchReporter.java

這里主要看UpgradePatchRetry的onPatchServiceStart方法

UpgradePatchRetry.java

這里主要也做了一些驗證,並且把文件復制一份到/data/data/tinker.sample.android/tinker_temp/路徑下,然後把相關信息寫入到配置文件中

在回到TinkerPatchService的onHandleIntent方法

主要看

這個方法的實現在UpgradePatch中

UpgradePatch.java

這里首先初始化相關數據與相關驗證,再將補丁文件拷貝到目標目錄中

路徑為/data/data/tinker.sample.android/tinker/patch-xxxxxx/patch-xxxxxx.apk

接下來就是調用DexDiffPatchInternal,BsDiffPatchInternal,ResDiffPatchInternal這些類的方法進行dexDiff差分的計算相關

至於相關差分的計算,由於比較復雜,我暫時還沒有深入去看,暫時埋個坑在這里,等後面找時間去填上這個坑

在回到TinkerPatchService的onHandleIntent方法

後面調用了PatchReporter的onPatchResult,這個方法主要刪除了上面拷貝在/data/data/tinker.sample.android/tinker_temp/的文件

接下來啟動了AbstractResultService,並把插件的路徑傳遞過去了

AbstractResultService的實現在SampleResultService類裡面,SampleResultService的onPatchResult刪除了原始的插件文件。

到這里插件載入分析就基本結束了

<p>

插件載入分析結束了,但是卻沒有去分析dexDiff差分的計算,而這個dexDiff差分計算則是區分的Tinker與其他相同方案的熱修復庫,dexDiff是基於 Dex 的文件結構來下手,將產生變化的結構提取出來,產生的補丁非常小,而且在 diff 的過程中也處理了一些會造成補丁包很大的場景,所以等後面有時間將這一塊補上,下一篇文章則是對dex文件載入進行源碼分析了,peace~~~

熱點內容
編程師加班 發布:2024-04-27 00:49:24 瀏覽:909
lol四川伺服器雲空間 發布:2024-04-27 00:42:08 瀏覽:933
卡宴怎麼看配置 發布:2024-04-27 00:41:08 瀏覽:941
央視影音緩存視頻怎麼下載視頻 發布:2024-04-27 00:25:55 瀏覽:583
手機緩存的視頻怎麼看 發布:2024-04-27 00:11:05 瀏覽:57
shell腳本平方計算公式 發布:2024-04-26 23:29:26 瀏覽:187
比較實惠的雲伺服器 發布:2024-04-26 23:24:57 瀏覽:974
怎麼增加電腦緩存 發布:2024-04-26 23:23:46 瀏覽:451
android調試gdb 發布:2024-04-26 23:22:27 瀏覽:99
androidsocket服務 發布:2024-04-26 22:49:53 瀏覽:980