問題:Unity啟動時獲取了設備資訊,其中包括Android_id
以下是在androidstudio中的log,使用Xposed的LoginHook看到Unity啟動時獲取了android_id資訊,如果在用戶同意隱私協議之前獲取,是不合規的,
05-31 14:06:29.620 4118-4138/com.DefaultCompany.TestHW I/Xposed: com.DefaultCompany.TestHW -> 2 呼叫Settings.Secure.getstring獲取了android_id
05-31 14:06:29.622 4118-4138/com.DefaultCompany.TestHW I/Xposed: dalvik.system.VMStack.getThreadStackTrace(Native Method)
java.lang.Thread.getStackTrace(Thread.java:580)
com.example.hooklogin.HookLogin.getMethodStack(HookLogin.java:205)
com.example.hooklogin.HookLogin.access$000(HookLogin.java:22)
com.example.hooklogin.HookLogin$6.afterHookedMethod(HookLogin.java:178)
de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:374)
android.provider.Settings$Secure.getString(
com.unity3d.player.UnityPlayer.nativeRender(Native Method)
com.unity3d.player.UnityPlayer.access$300(Unknown Source)
com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source)
android.os.Handler.dispatchMessage(Handler.java:98)
android.os.Looper.loop(Looper.java:135)
com.unity3d.player.UnityPlayer$e.run(Unknown Source)
05-31 14:06:29.623 4118-4138/com.DefaultCompany.TestHW D/Unity: UUID: 10xxxxxxxxxxxx95 => 72xxxxxxxxxxxxxxxxxxxxxxxxxxxx06
解決方案:
1:排查java代碼
檢查是否是我們自己代碼,主動獲取了android_id,
如以下代碼塊:
Settings.Secure.getString(
activity.getApplicationContext().getContentResolver(),
Settings.Secure.ANDROID_ID);
2:排查第三方插件、接入的SDK、Unity匯入的package,
已知,Unity Ads package是會獲取設備資訊的,第三方插件Bugly也是會獲取設備資訊的,
這些需要放到游戲的用戶隱私協議之后才能獲取,
這方面自己通過邏輯控制即可,
3:Unity的相關設定
3.1 檢查PlayerSettings 設定,2017及以下需要pro版才能勾選disable HW Statistics、2018個人版也可以、2019及以上已經移除該選項,統一由Services視窗的Analytics控制,

3.2 如果Unity開啟過Analytics,然后再關閉依然后收到獲取android_id的log,
需要手動將Unity的關于Analytics的setting配置修改掉,
如圖左邊會獲取android_id,右邊不在獲取android_id,

至此,我想,你的專案不會再出現不受控制的android_id獲取的情況,通過合規檢查,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285783.html
標籤:其他
