Giter Club home page Giter Club logo

sa-sdk-android-plugin2's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sa-sdk-android-plugin2's Issues

load class in gradle plugin

the plugin is nice,i have an question when i read the source code, the question is that why you use URLClassLoader for load webview related class, the URLClassLoader created by traverseing transformInvocation which will cost some time, the method Class.forName doesn't meet your needs?

关于disableIMEI, disableLog, disableJsInterface,disableAndroidID配置价值如何体现?

关于disableIMEI, disableLog, disableJsInterface,disableAndroidID配置价值如何体现?

for (cell in methodCells) {
transformHelper.sensorsAnalyticsHookConfig."${cell.agentName}"(classVisitor,cell)
}
Logger.info("结束扫描类:${mClassName}\n")

这里并没有对类修改??
disableIMEI, disableMacAddress, disableAndroidID 对应 com.sensorsdata.analytics.android.sdk.util.SensorsDataUtils
disableLog 对应 com.sensorsdata.analytics.android.sdk.SALog
disableJsInterface 对应 com.sensorsdata.analytics.android.sdk.SensorsDataAPI

接入插件后原项目的其它module运行报错

在主module的gradle里面加入 apply plugin: 'com.sensorsdata.analytics.android',编译运行app打开就闪退,初步判断原因是插件化项目其它module无法引入了,全都是class not fund。
问一下这个插件运行需要什么条件么

migrate groovy to kotlin?

This plugin is great. would you consider migrate groovy to Kotlin for more developers to read and extend?

插件版本3.5.0,java.lang.ClassCastException

构建环境:
android-gradle版本: 7.3.0
gradle版本:7.5.1
sensor-SensorsAnalyticsSDK 版本:6.5.1
sensor-plugin-gradle版本:3.5.0

在构建的时候报错:

java.lang.ClassCastException: class java.lang.String cannot be cast to class org.objectweb.asm.Type (java.lang.String is in module java.base of loader 'bootstrap'; org.objectweb.asm.Type is in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @468ceb3a)
at com.sensorsdata.analytics.android.plugin.viewclick.SensorsAutoTrackMethodVisitor.visitInvokeDynamicInsn(SensorsAutoTrackMethodVisitor.java:90)
at org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(MethodVisitor.java:462)
at org.objectweb.asm.commons.AdviceAdapter.visitInvokeDynamicInsn(AdviceAdapter.java:504)
at org.objectweb.asm.ClassReader.readCode(ClassReader.java:2451)
at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1491)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:721)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:401)
at org.objectweb.asm.ClassReader$accept.call(Unknown Source)
at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.modifyClass(SensorsAnalyticsTransform.groovy:439)
at jdk.internal.reflect.GeneratedMethodAccessor182.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:193)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:61)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:194)
at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.modifyClassFile(SensorsAnalyticsTransform.groovy:462)
at jdk.internal.reflect.GeneratedMethodAccessor201.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:193)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:61)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:203)
at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.forEachDir(SensorsAnalyticsTransform.groovy:281)
at jdk.internal.reflect.GeneratedMethodAccessor200.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:362)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:61)
at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform$_forEachDirectory_closure3.doCall(SensorsAnalyticsTransform.groovy:275)
at jdk.internal.reflect.GeneratedMethodAccessor199.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
at groovy.lang.Closure.call(Closure.java:412)
at groovy.lang.Closure.call(Closure.java:428)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.traverse(ResourceGroovyMethods.java:1499)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.traverse(ResourceGroovyMethods.java:1487)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.traverse(ResourceGroovyMethods.java:1487)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.traverse(ResourceGroovyMethods.java:1487)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.traverse(ResourceGroovyMethods.java:1360)
at org.codehaus.groovy.runtime.dgm$1124.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:247)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.forEachDirectory(SensorsAnalyticsTransform.groovy:273)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1268)
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 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:953)
at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1347)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1270)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:61)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:212)
at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform$2.call(SensorsAnalyticsTransform.groovy:130)
at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1428)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)

java.nio.file.FileSystemException

at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:92)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
at java.base/sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:278)
at java.base/sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:110)
at java.base/java.nio.file.Files.deleteIfExists(Files.java:1181)
at com.android.utils.PathUtils.deleteRecursivelyIfExists(PathUtils.java:91)
at com.android.utils.FileUtils.deleteRecursivelyIfExists(FileUtils.java:304)
at com.android.utils.FileUtils.deletePath(FileUtils.java:64)
at com.android.build.gradle.internal.tasks.NonIncrementalTaskKt.cleanUpTaskOutputs(NonIncrementalTask.kt:89)
at com.android.build.gradle.internal.tasks.NonIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:65)
at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)
at com.android.build.gradle.internal.tasks.NonIncrementalTask.taskAction(NonIncrementalTask.kt:97)
at jdk.internal.reflect.GeneratedMethodAccessor1627.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
... 116 more

插件版本3.5.4 ,RN的AMS的相关处理代码有问题

在处理RN的时候去hook的JSTouchDispatcher的handleTouchEvent方法时,代码有错误
if (nameDesc.equals("handleTouchEvent(Landroid/view/MotionEvent;Lcom/facebook/react/uimanager/events/EventDispatcher;)V' && mClassName == 'com/facebook/react/uimanager/JSTouchDispatcher")) 应该改成
if (nameDesc.equals("handleTouchEvent(Landroid/view/MotionEvent;Lcom/facebook/react/uimanager/events/EventDispatcher;)V") && mClassName.equals("com/facebook/react/uimanager/JSTouchDispatcher"))

android studio3.0.1 gradle4.4 下闪退

com.sensorsdata.analytics.android:android-gradle-plugin2:1.0.3

02-27 10:28:44.560 16735-16735/com.yuanshi.jiaoyidashi E/AndroidRuntime: FATAL EXCEPTION: main Process: com.yuanshi.jiaoyidashi, PID: 16735 java.lang.VerifyError: Verifier rejected class com.sensorsdata.analytics.android.runtime.FragmentAspectj: java.lang.Object com.sensorsdata.analytics.android.runtime.FragmentAspectj.ajc$inlineAccessMethod$com_sensorsdata_analytics_android_runtime_FragmentAspectj$com_sensorsdata_analytics_android_runtime_FragmentAspectj$trackFragmentView(com.sensorsdata.analytics.android.runtime.FragmentAspectj, org.aspectj.lang.ProceedingJoinPoint) failed to verify: java.lang.Object com.sensorsdata.analytics.android.runtime.FragmentAspectj.ajc$inlineAccessMethod$com_sensorsdata_analytics_android_runtime_FragmentAspectj$com_sensorsdata_analytics_android_runtime_FragmentAspectj$trackFragmentView(com.sensorsdata.analytics.android.runtime.FragmentAspectj, org.aspectj.lang.ProceedingJoinPoint): [0x0] invoke-super/virtual can't be used on private method java.lang.Object com.sensorsdata.analytics.android.runtime.FragmentAspectj.trackFragmentView(org.aspectj.lang.ProceedingJoinPoint) (declaration of 'com.sensorsdata.analytics.android.runtime.FragmentAspectj' appears in /data/app/com.yuanshi.jiaoyidashi-s_Ca2Xz4Do4Hjwy5_hAZYg==/base.apk:classes40.dex) at com.sensorsdata.analytics.android.runtime.FragmentAspectj.aspectOf(FragmentAspectj.java:1) at com.jince.home.fragment.LogoFragment.onCreateView(LogoFragment.java:84) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2261) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1819) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239) at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3231) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3181) at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:572) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177) at com.jince.core.base.BaseFragmentActivity.onStart(BaseFragmentActivity.java:151) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1339) at android.app.Activity.performStart(Activity.java:7385) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3279) at android.app.ActivityThread.-wrap12(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1881) at android.os.Handler.dispatchMessage(Handler.java:108) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7406) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:926)

插件里默认exclude的一些包能否支持修改

在SensorsAnalyticsTransformHelper的exclude里内置了一些包名,所有以这些开头的类都无法埋点,比如‘com.google.android’,我想埋com.google.android.exoplayer2.ui.PlayerControlView里的播放、暂停按钮的话插件自动排除了。
希望能给个机会让我修改exclude里的包名

引入神策埋点后,gradle编译时报错

前提:项目中使用了 pinyin4j 这个库,mave地址为com.belerweb:pinyin4j:2.5.0
在引入神策埋点之后,gradle编译总是报以下错误:

[SensorsAnalytics]: Exception encountered while processing jar: /Users/cauchy/.gradle/caches/transforms-2/files-2.1/ea6e3c1b20e2a90677c5367a8eb5924f/jetified-pinyin4j-2.5.0.jar
java.util.zip.ZipException: duplicate entry: META-INF/maven/com.belerweb/pinyin4j/pom.xml
	at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:232)
	at java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:109)
	at java_util_jar_JarOutputStream$putNextEntry$2.call(Unknown Source)
	at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.modifyJar(SensorsAnalyticsTransform.groovy:347)
	at sun.reflect.GeneratedMethodAccessor8034.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.modifyJarFile(SensorsAnalyticsTransform.groovy:306)
	at sun.reflect.GeneratedMethodAccessor8033.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.transformJar(SensorsAnalyticsTransform.groovy:292)
	at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform$transformJar$0.callCurrent(Unknown Source)
	at com.sensorsdata.analytics.android.plugin.SensorsAnalyticsTransform.forEachJar(SensorsAnalyticsTransform.groovy:284)
	at sun.reflect.GeneratedMethodAccessor8030.invoke(Unknown Source)
	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$1.methodMissing(SensorsAnalyticsTransform.groovy)
	at sun.reflect.GeneratedMethodAccessor8029.invoke(Unknown Source)
	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$1.call(SensorsAnalyticsTransform.groovy:102)
	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)

关于插件默认对React Native工程添加埋点的问题

Hi Team,我的工程结构是Android 原生+React Native的组合,对于神策的SDK,我只集成了Android的SDK,但是并没有集成React Native的SDK。最近我这边在进行升级AGP 8的相关工作,在升级Plugin到4.0的版本以后,进入React Native的工程会提示如下错误:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/sensorsdata/analytics/RNAgent;
	at com.facebook.react.views.view.ReactClippingViewManager.addView(ReactClippingViewManager.java:19)
	at com.facebook.react.uimanager.NativeViewHierarchyManager.manageChildren(NativeViewHierarchyManager.java:533)
	at com.facebook.react.uimanager.UIViewOperationQueue$ManageChildrenOperation.execute(UIViewOperationQueue.java:217)
	at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:915)
	at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1026)
	at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
	at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1086)
	at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
	at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
	at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)

我查看了你们工程的相关代码,发现在4.0的版本以后,会默认添加对RN的处理:

if (handleRN())
private fun handleRN(): Boolean'

想问下是否可以通过添加一个plugin的设置选项来屏蔽这个设置?

Maven Central上没有插件

Maven Central上没有插件,只有SDK,插件只能从JCenter下载,现在JCenter要关闭了,希望同步到Maven Central上。

AGP7+仍然有D8警告

我的项目使用的AGP 7.2.1,gradle 7.3.3;神策插件3.4.9,神策sdk 6.4.4
很多这样的警告:
AGPBI: {"kind":"warning","text":"Expected stack map table for method with non-linear control flow.","sources":[{"file":"/Users/xxx/AndroidStudioProjects/demo/slapp/build/intermediates/transforms/sensorsAnalyticsAutoTrack/prodApp/debug/75.jar"}],"tool":"D8"}

onTabChanged的lambda hook会误将Rxjava2的方法注入

ArrayList al = new ArrayList<>();
Observable.just(al).subscribeOn(Schedulers.io()).map(it -> it.get(4)).subscribe(it -> {
});
这里it -> 输入也是一个String,与下面的方法描述一致。sLambdaMethods.put('(Ljava/lang/String;)V', new SensorsAnalyticsMethodCell(
'onTabChanged',
'(Ljava/lang/String;)V',
'android/widget/TabHost$OnTabChangeListener',
'trackTabHost',
'(Ljava/lang/String;)V',
1, 1,
[Opcodes.ALOAD]))

引入神策gradle插件后,编译错误

Execution failed for task ':app:transformClassesWithSensorsAnalyticsAutoTrackForCometDebug'.

java.lang.RuntimeException: java.io.IOException: Source 'D:\work\AndroidProjects\wifipro-android\app\build\intermediates\javac\cometDebug\classes\com\jumai\wifi\comet\anniversarytraverse' exists but is a directory

请问该如何解决这个问题

依赖的是这个3.4.6版本的插件:
classpath 'com.sensorsdata.analytics.android:android-gradle-plugin2:3.4.6'

asm疑问

为啥只有 if (nameDesc == "onListItemClick(Landroid/widget/ListView;Landroid/view/View;IJ)V") {
需要判断protectedAndNotStaticAccess,然后发现判断后的处理逻辑和public的代码一样

引入神策插件后无法统计测试覆盖率

开启测试覆盖率testCoverageEnabled true后生成的apk无法安装

debug { testCoverageEnabled true }
报错信息:
Installation did not succeed.
The application could not be installed: INSTALL_FAILED_INVALID_APK

插件与zoom meeting SDK不兼容,执行minifyDebugWithR8时报错:Cannot constrain type: INT for value: v10 by constraint: OBJECT

近期产品中集成的 zoom meeting SDK 需要升级,升级到新版 5.14.5,执行minifyDebugWithR8时报错(神策插件版本3.4.1,神策SDK版本6.0.1):
Cannot constrain type: @nullable com.zipow.videobox.login.model.UserAccount {} for value: v14 by constraint: INT

尝试将 zoom meeting SDK 降级到5.14.2仍然不行,升级神策插件到3.5.4、3.5.2,神策SDK版本升到6.6.3、6.5.3,运行报错:
Cannot constrain type: INT for value: v10 by constraint: OBJECT

从编译日志看,跟神策不相关,但屏蔽调神策插件和SDK就一切正常,不清楚是否神策插件动态hook并修改三方类导致的问题;

相关日志见:

Execution failed for task ':sample:minifyDebugWithR8'.
> com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: Lcom/zipow/videobox/fragment/MMCustomizeComposeShortcutsFragment;onResume()V, origin: /Users/dser001/Downloads/zoom-sdk-android-5.14.5.13410/mobilertc-android-studio/sample/build/intermediates/transforms/sensorsAnalyticsAutoTrack/debug/83.jar:com/zipow/videobox/fragment/MMCustomizeComposeShortcutsFragment.class
.....
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':sample:minifyDebugWithR8'.
  at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:188)
  at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
  at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:186)
  at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:174)
  at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
  at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
  at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
  .............
Caused by: org.gradle.internal.UncheckedException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: Lcom/zipow/videobox/fragment/MMCustomizeComposeShortcutsFragment;onResume()V, origin: /Users/dser001/Downloads/zoom-sdk-android-5.14.5.13410/mobilertc-android-studio/sample/build/intermediates/transforms/sensorsAnalyticsAutoTrack/debug/83.jar:com/zipow/videobox/fragment/MMCustomizeComposeShortcutsFragment.class
  at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:68)
  at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:41)
  at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:107)
........
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: Lcom/zipow/videobox/fragment/MMCustomizeComposeShortcutsFragment;onResume()V, origin: /Users/dser001/Downloads/zoom-sdk-android-5.14.5.13410/mobilertc-android-studio/sample/build/intermediates/transforms/sensorsAnalyticsAutoTrack/debug/83.jar:com/zipow/videobox/fragment/MMCustomizeComposeShortcutsFragment.class
  at Version.fakeStackEntry(Version_3.0.73.java:0)
  at com.android.tools.r8.utils.w.a(SourceFile:68)
  at com.android.tools.r8.utils.w.a(SourceFile:28)
  at com.android.tools.r8.utils.w.a(SourceFile:27)
  at com.android.tools.r8.R8.a(R8.java:29)
  at com.android.tools.r8.R8.run(R8.java:3)
  at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:301)
  at com.android.build.gradle.internal.tasks.R8Task$Companion.shrink(R8Task.kt:592)
  at com.android.build.gradle.internal.tasks.R8Task.doTaskAction(R8Task.kt:443)
  at com.android.build.gradle.internal.tasks.NonIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:63)
  at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)
  at com.android.build.gradle.internal.tasks.NonIncrementalTask.taskAction(NonIncrementalTask.kt:94)
  at jdk.internal.reflect.GeneratedMethodAccessor731.invoke(Unknown Source)
  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
  ... 118 more
Caused by: com.android.tools.r8.internal.b: Cannot constrain type: INT for value: v10 by constraint: OBJECT
  at com.android.tools.r8.internal.UA.a(SourceFile:14)
  at com.android.tools.r8.internal.UA.a(SourceFile:22)

插件是否考虑支持 configuration-cache

是否考虑支持 configuration-cache 来加速应用程序构建时间?

#https://developer.android.com/studio/build/optimize-your-build#use-configuration-caching-experimental
org.gradle.unsafe.configuration-cache=true
# Use this flag carefully, in case some of the plugins are not fully compatible.
org.gradle.unsafe.configuration-cache-problems=warn

集成该插件后增量编译失效

集成该插件后增量编译失效了,每次都得clear,然后才能运行成功,不然就在执行这个task的时候就会失败“Task :app:mergeExtDexDebug FAILED”。有什么解决办法吗?

关于4.0.1 (agp8.x)版本编译报错问题

如图我们项目升级了agp版本到8.3.1,然后升级了sensorplugin到4.0.1发生了如下的编译报错:

项目信息:
kotlin:1.9.21
java version:17
gradle version: 8.6
gradle plugin version: 8.3.1

error info:

image

注释掉sensor-plugin后就能通过了

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.