HujiangTechnology/gradle_plugin_android_aspectjx

求助大佬 ,帮我看看!!编译完成后应用启动crash:java.lang.ClassNotFoundException

juanyueer opened this issue · 14 comments

我添加了如下配置:
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.8' --编译出现zip file is empty的问题后再添加如下配置后编译成功,但应用启动就crash了,麻烦哪位大佬来帮我看看
aspectjx {
enabled true
exclude 'androidx','com.google'
}

2020-10-16 12:47:40.002 23334-23334/com.tencent.***E/QarthLog: [PatchStore] current thread application info is null

--------- beginning of crash

2020-10-16 12:47:40.003 23334-23334/com.tencent.*** E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.tencent., PID: 23334
java.lang.RuntimeException: Unable to instantiate application com.tencent.
.MusicApplication: java.lang.ClassNotFoundException: Didn't find class "com.tencent..MusicApplication" on path: DexPathList[[zip file "/data/app/com.tencent.-C1PG_C5Z0elxurtn7m3yrA==/base.apk"],nativeLibraryDirectories=[/data/app/com.tencent.-C1PG_C5Z0elxurtn7m3yrA==/lib/arm, /data/app/com.tencent.-C1PG_C5Z0elxurtn7m3yrA==/base.apk!/lib/armeabi-v7a, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:1304)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7320)
at android.app.ActivityThread.access$2400(ActivityThread.java:308)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2295)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8347)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.tencent..MusicApplication" on path: DexPathList[[zip file "/data/app/com.tencent.qqmusic-C1PG_C5Z0elxurtn7m3yrA==/base.apk"],nativeLibraryDirectories=[/data/app/com.tencent.-C1PG_C5Z0elxurtn7m3yrA==/lib/arm, /data/app/com.tencent.***-C1PG_C5Z0elxurtn7m3yrA==/base.apk!/lib/armeabi-v7a, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:209)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:47)
at android.app.Instrumentation.newApplication(Instrumentation.java:1167)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1296)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7320) 
at android.app.ActivityThread.access$2400(ActivityThread.java:308) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2295) 
at android.os.Handler.dispatchMessage(Handler.java:110) 
at android.os.Looper.loop(Looper.java:219) 
at android.app.ActivityThread.main(ActivityThread.java:8347) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055) 

gradle升级到最新试试,我的也是这个问题,gradle升级到最新就好了

gradle升级到最新试试,我的也是这个问题,gradle升级到最新就好了

我要被整哭了,这个是我们公司统一配置的gradle,版本是3.2的,而且跟开发确认了不能升级

我这边是引入jetpack全组件开发框架后导致这个,不知道怎么解决啊

gradle升级到最新试试,我的也是这个问题,gradle升级到最新就好了

我要被整哭了,这个是我们公司统一配置的gradle,版本是3.2的,而且跟开发确认了不能升级

这个问题有解吗?我这也遇到了

gradle升级到最新试试,我的也是这个问题,gradle升级到最新就好了

请问你gradle用的什么版本?我这边永3.4.3 还是不行,难道要用3.6.0?

lanjd commented

各位大佬 这个问题 解决了么? 用了Hilt库

我引入后开启aop没问题,但是 enabled =false,动态关闭了AOP后报了和你一样的问题。

@WayneSimon 我也是 正在找问题

我这样弄了

if (isAopEnabled.toBoolean()) {
apply plugin: 'android-aspectjx'
aspectjx {
exclude 'versions.9', 'com.google', 'org.apache', 'com.squareup', 'com.taobao', 'com.alibaba',
'com.tencent', 'com.alipay', 'com.github', 'com.meizu', 'com.huawei', 'io.reactivex', 'com.umeng'
}
}

lanjd commented

我这样弄了

if (isAopEnabled.toBoolean()) {
apply plugin: 'android-aspectjx'
aspectjx {
exclude 'versions.9', 'com.google', 'org.apache', 'com.squareup', 'com.taobao', 'com.alibaba',
'com.tencent', 'com.alipay', 'com.github', 'com.meizu', 'com.huawei', 'io.reactivex', 'com.umeng'
}
}

没什么用,我也发现这个库和阿里的那个Arouter库不能同时使用,发现使用了该库的模块或者jar包,无法使用Arouter,添加过滤规则以后,该库又不能生成切面能力,捣鼓了很久,只能说目前的兼容性很不好,已经放弃了转投研究ASM了

我这样弄了
if (isAopEnabled.toBoolean()) {
apply plugin: 'android-aspectjx'
aspectjx {
exclude 'versions.9', 'com.google', 'org.apache', 'com.squareup', 'com.taobao', 'com.alibaba',
'com.tencent', 'com.alipay', 'com.github', 'com.meizu', 'com.huawei', 'io.reactivex', 'com.umeng'
}
}

没什么用,我也发现这个库和阿里的那个Arouter库不能同时使用,发现使用了该库的模块或者jar包,无法使用Arouter,添加过滤规则以后,该库又不能生成切面能力,捣鼓了很久,只能说目前的兼容性很不好,已经放弃了转投研究ASM了

之前有版本修复了ARouter的问题,我引入的aar包里使用了ARouter,可以正常使用。

我引入后开启aop没问题,但是 enabled =false,动态关闭了AOP后报了和你一样的问题。

遇到相同问题,enabled=true正常,关掉之后反而报dex包找不到application

After I introduced it, it was no problem to turn on aop, but enabled = false, after dynamically turning off AOP, the same problem as yours was reported.

Encountered the same problem, enabled=true is normal, but after turning it off, it reports that the dex package cannot find application

Where to set this enabled=true ?

我也遇到这个问题,原因是因为我的AOP代码中用了lambda表达式,aspectj是不支持lambda表达式的,替换成匿名内部类就好了。