Androidstudio如何修改aar中的類及再次引用

本文主要來敘述主題:當引入外部的aar包,但是由於類似接口/主機IP/常量類等等發生變動,突發情況下,想要修改aar包中需要改動的邏輯或類,當然前提是要經過人家版權方的同意與授權,並且只做授權範圍內的使用。開源項目的aar包當然依據實際情況下進行合理運用。

廢話這麼多,正文開篇。

 

                                                                            

 

一、創建要修改的java類


這裏我們主要針對的是要修改的java文件(類)

想要修改的java類(arr包中),在當前主項目中建立一個同名java類,將aar包中的這個類的內容CTRL+C,CTRL+V到新建的java類中,當然依賴的aar包暫時不要進行解除依賴,不然後續我們需要編譯,新建的類中的各種依賴包都會報錯。

涉及的類我們姑且創建叫Test.java

  • 最重要的一步:建立同名java類

               那麼這個類建在主項目的哪個文件夾下呢?

              我們追求完全一致的原則,當然包名,包名結構,文件夾一定要與aar中類的全路徑一致。

              爲什麼要保持一致:因爲我們的新建類是要作爲替換類替換掉原來的aar中Test.class文件的,這麼說您應該就明白了,  所以保持一致很重要,不然我們所有做的操作都是在做無用功。

              舉個栗子:

                               aar包的Test.class是在com.demo.user下,那麼新創建的Test.java類也要放在主項目的com.demo.user,

                               如果主項目沒有com.demo.user文件夾,那就新建一個包,在com.demo.user下建立Test.java類。

  • 同步新java類與aar中java類同名同內容,一切都一致

             CTRL+C  aar包這個類中的內容,不能直接複製這個類,因爲這是個編譯後的.class文件,受保護,不可被修改的。

             CTRL+V 到新建的Test.java中,檢查一下新類中的引用包等路徑是否與aar中的Test.class一致

             i1:::

                     

            i2:::

                  

 

 

二、編譯新創建的Test.java類


(1)因爲在aar包中我們能夠看到的都是.class文件,也就是經過JVM編譯過的。

那麼如何將我們新建的Test.java  類編譯成Test.class呢?

這裏我們用的依然是我們的IDE工具AndroidStudio。

我的環境是:

  • Android Studio 3.2
  • Build #AI-181.5540.7.32.5014246, built on September 18, 2018
  • JRE: 1.8.0_152-release-1136-b06 amd64
  • JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
  • Windows 10 10.0

(2)在確認上述操作後項目沒有錯誤,頂部菜單欄Build->Make Project進行項目編譯

                                                   

(3)找到編譯後的.class文件

 

                                                   

 

                                               

這個Test.class文件我們是可以直接打開查看,檢查引用包和類是否與aar包中的Test.class是否完全一致。

 

這時候我們確認一致以後就可以將這個Test.class文件拷貝出來,放在一個臨時文件夾中,以備後用。

 

三、替換.class文件


  • 將項目中要修改的aar包拷貝一份出來放在桌面上。

                                                                    接下來我們需要操作它。

  • 將aar文件後綴改爲壓縮文件後綴,我這裏改爲.zip。

                                                   ---->                

  • 解壓工具(這裏我使用的是2345好壓解壓縮軟件)直接操作替換。

              (1)直接打開

              (2)進入,我們看見根目錄有一個classes.jar壓縮文件,繼續雙擊進入

              (3)這樣我們就真正進入了aar包的核心區域,接着進入到要替換.class文件(Test.class)的所在文件夾下。

 

                                

 

                    在這裏我們可以利用JD-GUI   工具打開這個文件查看細節。

 

            (4)替換。

                        將我們新編譯的Test.class文件替換掉這個文件夾下的Test.class文件。

                        保存與更新這個壓縮文件的變動。

 

                                         

 

三、重新打包成aar並引入


  • 將這個修改的壓縮文件,後綴再改成.aar
  • 將之前引入的aar包解除引用,將新aar包引入到項目中。
  • 引入之後,查看一下是不是自己想要的效果。

 

 

至此,這一篇章接近尾聲,後續如有未提及的地方,想起來了就會繼續更新,希望能幫助到您,如有不當之處,請指教。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章