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:::

                  

 

          i3:::

             然后修改想要修改的逻辑和方法等。

             修改之后我们就需要进行编译这个类了,得到Test.class

二、编译新创建的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包引入到项目中。
  • 引入之后,查看一下是不是自己想要的效果。

 

 

至此,这一篇章接近尾声,后续如有未提及的地方,想起来了就会继续更新,希望能帮助到您,如有不当之处,请指教。

 

 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值