sensorsdata/sa-sdk-android

6.2.7以后获取OAID卡死

Closed this issue · 4 comments

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);

有两个问题核实一下:

  • 是在主线程中调用 OaidHelper.getOAID 方法吗?
  • 此问题必现嘛?oppo 官方真机只有 x3 的机型,我们在此机器上没有复现这个问题

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

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

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