Closed CCCCauchy closed 3 years ago
在 build.gradle
添加以下配置可解决问题:
android {
...
packagingOptions {
}
}
升级 pinyin4j 到 2.5.1: implementation 'com.belerweb:pinyin4j:2.5.1'
@CCCCauchy 通过 packagingOptions 的方式可以规避异常,但是根本的原因还是由于 pinyin4j 的 2.5.0 版本中出现重复的文件。通过升级 pinyin4j 到 2.5.1,可以根本解决这个问题。
@CCCCauchy 你的问题已经解决了吗
@CCCCauchy 你的问题已经解决了吗 pinyin4j的问题已经解决了,谢谢!! 但是又遇到了新的问题,可否再帮忙看下
[SensorsAnalytics]: META-INF.app_googleDebug.kotlin_module 类执行 modifyClass 方法出现异常 java.lang.ArrayIndexOutOfBoundsException: 0 at org.objectweb.asm.ClassReader.readStringish(ClassReader.java:3481) at org.objectweb.asm.ClassReader.readClass(ClassReader.java:3495) at org.objectweb.asm.ClassReader.accept(ClassReader.java:421) at org.objectweb.asm.ClassReader.accept(ClassReader.java:391) at org.objectweb.asm.ClassReader$accept.call(Unknown Source) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.modifyClass(SensorsAnalyticsTransform.groovy:384) at sun.reflect.GeneratedMethodAccessor11728.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:190) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:58) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:176) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.modifyClassFile(SensorsAnalyticsTransform.groovy:407) at sun.reflect.GeneratedMethodAccessor11724.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:190) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:58) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:184) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.forEachDirectory(SensorsAnalyticsTransform.groovy:219) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1217) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:94) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.this$dist$invoke$2(SensorsAnalyticsTransform.groovy) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform$2.methodMissing(SensorsAnalyticsTransform.groovy) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101) at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:958) at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1286) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1219) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:64) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:192) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform$2.call(SensorsAnalyticsTransform.groovy:117) at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) java.io.FileNotFoundException: **********/app/build/tmp/kotlin-classes/googleDebug/META-INF (Is a directory) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.<init>(FileInputStream.java:138) at sun.reflect.GeneratedConstructorAccessor2652.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:80) at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:249) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.modifyClassFile(SensorsAnalyticsTransform.groovy:406) at sun.reflect.GeneratedMethodAccessor11724.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:190) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:58) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:184) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.forEachDirectory(SensorsAnalyticsTransform.groovy:219) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1217) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:94) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.this$dist$invoke$2(SensorsAnalyticsTransform.groovy) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform$2.methodMissing(SensorsAnalyticsTransform.groovy) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101) at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:958) at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1286) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1219) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:64) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:192) at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform$2.call(SensorsAnalyticsTransform.groovy:117) at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
@CCCCauchy 从日志上看 META-INF.app_googleDebug.kotlin_module
应该是一个以 .class
结尾的文件,但是不是合法的字节码文件。目前我们插件中是以 .class 结尾来判断类文件,所以在通过 ClassReader
读取时出现异常。目前你可以通过我们插件的配置暂且先把这个文件忽略:在 build.gradle 文件中。
android {
sensorsAnalytics {
exclude = ['META-INF.app_googleDebug.kotlin_module', 'a.b.c.A']
}
}
前提:项目中使用了
pinyin4j
这个库,mave地址为com.belerweb:pinyin4j:2.5.0
。 在引入神策埋点之后,gradle编译总是报以下错误: