sensorsdata / sa-sdk-android

神策数据官方 Android 埋点 SDK,是一款轻量级用于 Android 端的数据采集埋点 SDK,包含代码埋点、全埋点、点击图和可视化全埋点功能。全埋点通过配合神策官方 Android 埋点插件来实现,神策数据官方 Android 埋点插件使用字节码插桩(ASM)的技术实现 Android 端的全埋点(无埋点、无码埋点、无痕埋点、自动埋点)。
http://opensource.sensorsdata.cn
Other
1.31k stars 434 forks source link

FragmentViewScreenCallbacks在开启fragment采集时的空指针问题 #115

Closed Lvcherry closed 1 year ago

Lvcherry commented 1 year ago

image 如下依赖,集成神策自动采集插件与SDK到最新版本 classpath 'com.sensorsdata.analytics.android:android-gradle-plugin2:3.5.2' implementation 'com.sensorsdata.analytics.android:SensorsAnalyticsSDK:6.5.3' FragmentViewScreenCallbacks Line194获取fragment对应Activity,在Fragment创建并可见时可能导致空指针,堆栈信息如下:

E/SA.Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference at com.sensorsdata.analytics.android.autotrack.core.autotrack.FragmentViewScreenCallbacks.isFragmentValid(FragmentViewScreenCallbacks.java:194) at com.sensorsdata.analytics.android.autotrack.core.autotrack.FragmentViewScreenCallbacks.setUserVisibleHint(FragmentViewScreenCallbacks.java:153) at com.sensorsdata.analytics.android.autotrack.aop.FragmentTrackHelper.trackFragmentSetUserVisibleHint(FragmentTrackHelper.java:102) at com.smwl.x7market.component_base.fragment.BaseFragment.setUserVisibleHint(BaseFragment.java:112) at com.smwl.x7market.fragment.MainModuleBaseFrag.setUserVisibleHint(Unknown Source:11) at com.smwl.x7market.fragment.main.MainSelectPositionFrag.setUserVisibleHint(MainSelectPositionFrag.java:186) at androidx.fragment.app.FragmentStatePagerAdapter.setPrimaryItem(FragmentStatePagerAdapter.java:256) at com.smwl.x7market.adapter.MainSelectFragAdapter.setPrimaryItem(MainSelectFragAdapter.java:150) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1234) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:669) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631) at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:623) at com.smwl.x7market.fragment.SelectFragment2$1.lambda$getTitleView$264$SelectFragment2$1(SelectFragment2.java:326) at com.smwl.x7market.fragment.-$$Lambda$SelectFragment2$1$-gYxpJPJwc9vFNEBe-JQfLuqnxQ.onClick(Unknown Source:6) at android.view.View.performClick(View.java:7317) at android.view.View.performClickInternal(View.java:7291) at android.view.View.access$3600(View.java:838) at android.view.View$PerformClick.run(View.java:28247) at android.os.Handler.handleCallback(Handler.java:900) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) 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:1109)

dengshiwei commented 1 year ago

@Lvcherry 目前该问题已经修复,等待 QA 测试发布版本。

liuweiqiang2016 commented 1 year ago

v6.5.5 修复该问题,详细信息见:https://github.com/sensorsdata/sa-sdk-android/releases/tag/v6.5.5