sensorsdata / sa-sdk-android

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

6.2.7以后获取OAID卡死 #95

Closed qq549631030 closed 2 years ago

qq549631030 commented 2 years ago

6.2.7以后获取通过OaidHelper.getOAID获取OAID会卡死 手机型号:OPPO Find X5 Pro Android 12

at sun.misc.Unsafe.park(Native Method);
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190);
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067);
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442);
at com.sensorsdata.analytics.android.sdk.advert.oaid.impl.OppoImpl.getSerId(OppoImpl.java:102);
at com.sensorsdata.analytics.android.sdk.advert.oaid.impl.OppoImpl.realGetOUID(OppoImpl.java:92);
at com.sensorsdata.analytics.android.sdk.advert.oaid.impl.OppoImpl.getRomOAID(OppoImpl.java:68);
at com.sensorsdata.analytics.android.sdk.advert.utils.OaidHelper.getROMOAID(OaidHelper.java:90);
at com.sensorsdata.analytics.android.sdk.advert.utils.OaidHelper.getOAID(OaidHelper.java:80);

YueJZSensorsData commented 2 years ago

有两个问题核实一下:

qq549631030 commented 2 years ago

确实是在主线程获取的,改成子线程获取就好了。 不过3.0.6版在主线程获取也没有卡住过,从3.0.7换了方式后就卡住了,这台手机必现

YueJZSensorsData commented 2 years ago

v6.2.7 版本中新增了从厂商直接获取 OAID 的功能,此从此版本后,不能直接在主线程中调用 OaidHelper.getOAID,改成子线程中获取就行

YueJZSensorsData commented 2 years ago

此问题在 6.3.0 版本中优化,主线程禁止获取 OAID