Comments (13)
应该是字节码兼容问题, 你用的moshi 库 是哪个版本的
from lancetx.
应该是字节码兼容问题, 你用的moshi 库 是哪个版本的
1.14.0和1.13.0都试了,都不行,冲突了么?
from lancetx.
这应该是 byteX 默认的ASM版本的问题,
你可以通过 byteX的配置 来支持, 通过修改根工程目录的 gradle.properties ,增加以下配置。
bytex.ASM_API=ASM8
bytex.enableDuplicateClassCheck=false
或者把moshi的库过滤掉。
from lancetx.
这应该是 byteX 默认的ASM版本的问题,
你可以通过 byteX的配置 来支持, 通过修改根工程目录的 gradle.properties ,增加以下配置。 bytex.ASM_API=ASM8 bytex.enableDuplicateClassCheck=false
或者把moshi的库过滤掉。
非常感谢,已经可以运行了,但是加了ASM之后,编译时间由之前的一分钟变成了五分钟,这个编译是真的慢啊
from lancetx.
如果你之前项目没有ASM,现在加了ASM 确实对编译时间有较大影响, 不过第二次编译会快一点。
from lancetx.
关于功能性的可以问一下么?我想拦截Calendar.getInstance()按照语法按照以下书写,但是怎么样都没有日志输出,也没拦截成功
@weaver
public class CalendarProxy {
@Proxy()
@TargetClass(value = "android.util.Calendar", scope = Scope.ALL)
@TargetMethod(methodName = "getInstance")
public static Calendar replaceGetInstance() {
Calendar calendar = (Calendar) Origin.call();
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
Log.e("拦截了can", "calendar getFirstDayOfWeek" + calendar.getFirstDayOfWeek());
return calendar;
}
}
from lancetx.
这是一个静态函数吗?
from lancetx.
这种系统的类,没法直接修改 原类字节码的,我建议直接用 @RepalceInvoke
from lancetx.
@ReplaceInvoke(isStatic = true)
@TargetClass(value = "android.util.Log",scope = Scope.SELF)
@TargetMethod(methodName = "i")
public static int replaceLogI2(String tag,String msg){
msg = msg + "被替换";
return Log.e("zxw",msg);
}
from lancetx.
@ReplaceInvoke(isStatic = true) @TargetClass(value = "android.util.Log",scope = Scope.SELF) @TargetMethod(methodName = "i") public static int replaceLogI2(String tag,String msg){ msg = msg + "被替换"; return Log.e("zxw",msg); }
log我拦截都是可以的,只是Calendar 不生效,可能是因为这个类是 抽象的原因,我再看看吧
from lancetx.
@ReplaceInvoke(isStatic = true)
@TargetClass(value = "java.util.Calendar",scope = Scope.SELF)
public static Calendar getInstance(){
Calendar instance = Calendar.getInstance();
Log.e("CalendarWeave","calender getInstance hook");
return null;
}
修改前
目前这个插件不支持增量编译, 你可以clean下工程后 重新试试
from lancetx.
这应该是 byteX 默认的ASM版本的问题,
你可以通过 byteX的配置 来支持, 通过修改根工程目录的 gradle.properties ,增加以下配置。 bytex.ASM_API=ASM8 bytex.enableDuplicateClassCheck=false
或者把moshi的库过滤掉。
请问 “把moshi的库过滤掉” 是指把依赖中的moshi过滤掉?
from lancetx.
这应该是 byteX 默认的ASM版本的问题,
你可以通过 byteX的配置 来支持, 通过修改根工程目录的 gradle.properties ,增加以下配置。 bytex.ASM_API=ASM8 bytex.enableDuplicateClassCheck=false
或者把moshi的库过滤掉。
配置用法详见 https://github.com/bytedance/ByteX/blob/90979d010d5af56e44566a12b827f1f46a38bd4f/wiki/ByteX-Developer-API-zh.md请问 “把moshi的库过滤掉” 是指把依赖中的moshi过滤掉?
bytex.globalIgnoreClassList 参数可以过滤处理的类,具体看bytex文档
from lancetx.
Related Issues (20)
- hook abstract 抽象方法 HOT 1
- 同样卡在编译期间 HOT 3
- 可以做类似,AspectJ的Pointcut功能吗? HOT 1
- 编译期报错 HOT 4
- demo 编译报错 gradle-6.7.1-all HOT 4
- koltin data class 会导致fastjson 反序列化失败 HOT 4
- 外部类的构造方法有办法代理吗? HOT 4
- 是否考虑添加native方法的hook功能? HOT 1
- Could not initialize class com.ss.android.ugc.bytex.common.utils.GradleDaemonIgnoreClassLoaderSingletonManager HOT 7
- 能否支持增量编译?一拳超人 HOT 3
- gradle输出警告日志 HOT 3
- java.lang.reflect.UndeclaredThrowableException HOT 2
- 加入compose依赖就不行了,编译不通过 HOT 1
- LancetX织入不生效 HOT 2
- 不支持增量构建? HOT 2
- 请问支持对kotlin代码进行织入吗 HOT 1
- 适配AGP8 HOT 1
- 编译报错:java.lang.NoClassDefFoundError: Could not initialize class com.ss.android.ugc.bytex.common.utils.GradleDaemonIgnoreClassLoaderSingletonManager HOT 3
- 有计划支持增量编译吗? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lancetx.