问题: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获取的情况,通过合规检查。

关于Unity启动调用Android_id问题排查的更多相关文章

  1. java程序员图文并茂细说Unity中调用Android的接口

    http://bbs.csdn.net/topics/391876421 最近做一个项目,为同事提供接口,能使他在Unity中调用Android中的函数来实现QQ登陆并获取用户信息.按照一些书上和一些 ...

  2. Unity中调用DLL库

    DLL -- Dynamic Link Library(动态链接库文件),这里以Window平台为例. Unity支持的两种语言生成的DLL库(C++.C#),这里以C#为例,C++网上可以搜索很详细 ...

  3. Android与Unity相互调用

    1. 在Unity里调用Android代码: void OnGUI(){ AndroidJavaClass jc = new AndroidJavaClass("com.some.packa ...

  4. Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数

    Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数~~~    呵呵... 看着有点晕.. 再解释一下就是 在Unity中 使用 C# 调用 C++ 写的 DLL, 但是在 ...

  5. atitit.流程标准化--- mysql启动不起来的排查流程attilax总结

    atitit.流程标准化--- mysql启动不起来的排查流程attilax总结 1. mysql的启动日志文件 1 2. console方式 1 3. 安装为服务 1 3.1. 使用默认配置文件 1 ...

  6. Unity中调用Windows窗口句柄以及根据需求设置并且解决扩展屏窗体显示错乱/位置错误的Bug

    问题背景: 现在在搞PC端应用开发,我们开发中需要调用系统的窗口以及需要最大化最小化,缩放窗口拖拽窗口,以及设置窗口位置,去边框等功能 解决根据: 使用user32.dll解决 具体功能: Unity ...

  7. Unity直接调用Android Toast

    Unity直接调用Android Toast 这两天在搭一套UI框架,想把Android的Toast直接集成上去,有不想直接打jar包,所有写了个C#直接调用,废话不多说,直接干货: using Un ...

  8. Unity全局调用非静态函数

    Unity全局调用非静态函数 情形 大概就是做游戏的时候想做一个给玩家展示信息的东西,比如玩家按了不该按的键提醒一下之类的.这个脚本倒是很简单,找个Text组件往上面加字就行了.问题在于这个脚本游戏中 ...

  9. Unity——Js和Unity互相调用

    Unity项目可以打包成WebGl,打包后的项目文件: Build中是打包后的Js代码: Index.html是web项目的入口,里面可以调整web的自适应,也可以拿去嵌套: TemplateData ...

随机推荐

  1. docker搭建简单mysql主从

    关于MySQL主从模式,如果我们直接在本机上搭建的话,是没法搭建的,只能借助于虚拟机,但有的时候我们又需要搭建一个主从集群,以便于进行一些功能性的测试.这个时候我们就可以尝试使用docker,借助于d ...

  2. Ionic5整合极光推送JPush ( 简单 )

    项目初始化 1. 安装项目依赖: # 安装cordova插件 ionic cordova plugin add jpush-phonegap-plugin --variable APP_KEY=&qu ...

  3. 1079 Total Sales of Supply Chain

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  4. 拿到蚂蚁金服的offer是一种什么体验?3年Java程序员分享面经

    前言:我是一名三年的Java程序员,之前一直是在外包公司工作的.在这个月五号的时候,通过我的学长做内推,有了去蚂蚁金服面试的机会.我是在12号接到的电话面试的,因为蚂蚁金服需要7天的简历评估的.还有就 ...

  5. Rsync多模块复制、排除指定文件及目录以及数据无差异复制的应用实例

    在我的博客<Rsync 数据复制软件应用>中,拉取数据访问的都是服务器端的/backup 目录,当然我们在其他目录下拉取数据.而实现这种操作就是指多模块复制. 要实现多模块复制首先需要修改 ...

  6. 1- java语言特性

    Java概述 Java是面向对象程序设计语言和Java平台的总称 Java体系 JavaSE(j2se)(标准版) JavaEE(J2ee)(企业版) JavaME(J2me) 面向对象 面向对象是J ...

  7. 织梦DedeCMS自定义表单限制IP24小时只能提交多少次

    方法1.打开plus/diy.php,找到一下代码, if(!is_array($diyform)) { showmsg('自定义表单不存在', '-1'); exit(); } 然后再在以下代码后面 ...

  8. hdu4535

    题意: 吉哥系列故事--礼尚往来 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...

  9. hdu3870 基于最短路的最小割

    题意:      给你一个平面图,让你输出(1,1),(n ,n)的最小割.. 思路:       看完题想都没想直接最大流,结果TLE,想想也是 G<400*400,400*400*4> ...

  10. 第六部分 数据搜索之使用HBASE的API实现条件查询

    题目 使用HADOOP的MAPReduce,实现以下功能: (1)基于大数据计算技术的条件查询:使用mapreduce框架,实现类似Hbase六个字段查询的功能 (2)时段流量统计:以hh:mm:ss ...