关于360插件化Replugin Activity动态修改父类的字节码操做

近期在接入360插件化方案Replugin时,发现出现崩溃状况。java

大概崩溃内容以下:android

aused by: java.lang.ClassNotFoundException: Didn't find class "x.x.x.xActivity" on path:api

我本身在插件代码里书写的Activity,我是所有继承了PluginActivity。不过因为在插件中还使用了其余第三方的SDK,后来去查看插件APK的DEX发现第三方SDK的Activity的父类仍是Activity. 后来想起来以前因为在插件app的build.gradle有句配置由于编译不经过给删除了app

// 这个plugin须要放在android配置以后,由于须要读取android中的配置项
apply plugin: 'replugin-plugin-gradle'

这个gradle插件是作什么用的呢?gradle

通过资料查找大概明白了状况。ui

这个gradle做用于插件apk,主要是在插件app编译期间利用Transform api在class文件转换为dex文件以前对Java 字节码文件进行操做,利用Java字节码库Javassist进行代码注入,从而达到不修改插件apk工程源码前提下载编译器对插件apk进行动态修改的目的。.net

修改内容包括:
a. 将插件中全部的XXXActivity类中的顶级XXXActivity父类修改成插件库replugin-plugin-library中的XXXPluginActivity类,反编译看看就能发现最终插件apk的各个Activity继承了XXXPluginActivity父类。插件

 

replugin 2.3.1 对 build:gradle:2.3.3 才能让字节码修改Activity父类正常orm

查找的资料:blog

https://blog.csdn.net/hellogmm/article/details/79056660

相关文章
相关标签/搜索