【游戏开发问题】Unity自己莫名其妙添加了ACCESS_FINE_LOCATION权限的问题
文章目录
- 一、前言:莫名其妙的ACCESS_FINE_LOCATION权限
- 二、猜想与验证
- 1、猜想
- 2、验证猜想
- 三、真相与解决
- 1、真相
- 2、解决办法
- 四、结束语
一、前言:莫名其妙的ACCESS_FINE_LOCATION权限
嗨,大家好,我是新发。
最近上传包到Google Play
被拒了,原因是apk
中申请了ACCESS_FINE_LOCATION
权限。
事实上我们并没有使用地理位置相关的SDK
,在AndroidManifest.xml
中也没有申请这个权限。
但是打出包后,拆包发现确实多了ACCESS_FINE_LOCATION
权限。
为什么呢?
二、猜想与验证
1、猜想
我想起了我之前写的这篇文章:《无需接入SDK即可在Unity中获取经纬度(Android/iOS),告诉我你的坐标》
我们通过Input.location
即可获得地理位置的经纬度信息,在Android
设备上,肯定是需要对应的权限的,而我们使用Input.location
时并不需要手动在AndroidManifest.xml
中申请对应的权限,这是怎么做到的?
直觉告诉我,Unity
自己帮我们加上去的,为了验证这个猜想,我弄个小Demo
测试一下。
2、验证猜想
首先,创建一个空工程,转Android
平台,不写任何代码,打包apk
。
将打出来的apk
拖到AndroidStudio
中,可以直接查看包内的AndroidManifest.xml
,可以看到,没有申请ACCESS_FINE_LOCATION
权限。
接着,回到Unity
中,我们创建一个脚本,在脚本中访问一下Input.location
,如下:
using UnityEngine;public class Main : MonoBehaviour
{void Start(){var location = Input.location;}
}
然后重新打包apk
,再使用AndroidStudio
查看打出来的apk
的AndroidManifest.xml
。
好家伙,真的自己加上了ACCESS_FINE_LOCATION
权限。
猜想验证成功,也就是说,只要引用了Input.location
,打包apk
时Unity
就会自动加上ACCESS_FINE_LOCATION
权限。
事实上,在
Unity
手册中也有提到这个。见这里:https://docs.unity3d.com/Manual/android-manifest.html
三、真相与解决
1、真相
根据我们上面的结论,回到提审Google Play
的项目工程中,查找Input.location
的引用,发现,居然是tolua
的锅。
因为工程中使用了tolua
框架,里面为Input
类生成了UnityEngine_InputWrap
类,在UnityEngine_InputWrap
中引用了Input.location
。
// UnityEngine_InputWrap.cs[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int get_location(IntPtr L)
{try{ToLua.PushObject(L, UnityEngine.Input.location);return 1;}catch(Exception e){return LuaDLL.toluaL_exception(L, e);}
}
关于tolua框架的使用,可以参见我之前写的这篇文章:《Unity使用tolua框架教程: LuaFramewrk》
2、解决办法
解决办法就是把UnityEngine_InputWrap
中的get_location
注释掉,
// UnityEngine_InputWrap.cs// 不要引用Input.location,否则会自动引入ACCESS_FINE_LOCATION权限
// L.RegVar("location", get_location, null);// .../* 不要引用Input.location,否则会自动引入ACCESS_FINE_LOCATION权限
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
static int get_location(IntPtr L)
{try{ToLua.PushObject(L, UnityEngine.Input.location);return 1;}catch(Exception e){return LuaDLL.toluaL_exception(L, e);}
}
*/
接着,将UnityEngine_InputWrap.cs
移动到LuaFramework/ToLua/BaseType
目录中,
再接着,把CustomSettings.cs
中的_GT(typeof(Input))
注释掉。
// CustomSettings.cs// 不要主动生成`UnityEngine_InputWrap类,移动到BaseType目录中
//_GT(typeof(Input)),
最后,记得在LuaState.cs
中加上UnityEngine_InputWrap.Register(this);
// LuaState.csBeginModule("UnityEngine");
// ...
UnityEngine_InputWrap.Register(this);
// ...
EndModule();
四、结束语
完毕。
喜欢Unity
的同学,不要忘记点击关注,如果有什么Unity
相关的技术难题,也欢迎留言或私信~
【游戏开发问题】Unity自己莫名其妙添加了ACCESS_FINE_LOCATION权限的问题相关推荐
- 王楠——海外华人程序员视角:解密移动游戏开发与Unity 4引擎特性
海外华人程序员视角:解密移动游戏开发与Unity 4引擎特性 发表于2012-09-07 17:24| 12534次阅读| 来源CSDN整理| 0 条评论| 作者杨依帆 游戏开发Unity游戏引擎王楠 ...
- Unity 2D游戏开发视频教程 Unity 2D Game Developer Course Farming RPG
Unity 2D游戏开发视频教程 Unity 2D Game Developer Course Farming RPG Unity 2D游戏开发课程农业RPG MP4 |视频:h264,1280×72 ...
- 【Android游戏开发之七】(游戏开发中需要的样式)再次剖析游戏开发中对SurfaceView中添加组件方案!...
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/308.html ...
- 游戏开发技术Unity开发引擎
Unity 是一个完全集成的开发引擎,提供了丰富的开箱即用的功能,用于创建游戏及其他互动式3D内容.您可以使用Unity 将艺术和资源组装到场景和环境:增加物理效果:同步播放测试和编辑您的游戏,并在准 ...
- 【2d游戏开发】unity实现UI框架搭建
前言 前面一直比较忙,然后到现在才继续接游戏的文章,那么本次将带大家去搭建一个ui框架,同样,需要更具体的教学,可以到b站搜索本人的关于2d游戏开发-unity实现xxx的系列视频. 步骤 其实大致的 ...
- 【游戏开发】unity教程8 用IMGUI和UGUI实现血条
github传送门:https://github.com/dongzizhu/unity3DLearning/tree/master/hw8/enhancedDisk 视频传送门:https://sp ...
- 【游戏开发】unity教程4 打飞碟小游戏
github传送门:https://github.com/dongzizhu/unity3DLearning/tree/master/hw4/Disk 视频传送门:https://space.bili ...
- 【游戏开发】unity教程10 VR库 Vuforia
github传送门:https://github.com/dongzizhu/unity3DLearning/tree/master/hw10/ARtest B站传送门:https://space.b ...
- 【从零开始游戏开发】Unity 前后端网络通信该如何搭建?注释解答 | 全面总结 |建议收藏
你知道的越多,你不知道的越多
最新文章
- xpath选择器简介及如何使用
- 大触教你如何调节python内置函数
- jsoup开发网页客户端3
- 7.1.15 单双击事件
- oracle flex cluster,Oracle Flex ASM和Flex集群
- php+mssql 分页,一个PHP+MSSQL分页的例子
- 关联查询的延迟加载是怎么实现的?
- spss22.0统计分析从入门到精通_数据分析最全资料:SPSS/MATLAB/SQL/SAS/EXCEL经典教材+视频教程,快速入门!...
- Attention Please
- 线切割常用专用编程软件下载
- Postman高级用法
- 智能和弦生成工具-Plugin Boutique Scaler 2 v2.3.1 WiN-MAC
- 微信小程序中使用Echarts 折线图、柱形图、饼状图
- mysql 创建执行函数(1418,1419错误,root可以看到函数内容,普通用户看不到,问题解决)
- 卷积神经网络的参数计算
- RV1126 Linux 以太网MAC PHY 芯片8201f gmac dts配置
- css层叠样式表、基本选择器
- Angular 5 整合容联云 即时通讯
- 解析增量xml数据到数据库
- 转换MP3工具(Streambox RipperRM)
热门文章
- 招投标中的常见经验和技巧
- 宝塔 php5.6 极速安装_宝塔中极速安装的PHP如何使用AMQP连接RabbitMQ
- linux内核中likely与unlikely
- 从外部JS文件中获出ASPX页面控件的ClientID
- 购房,切不可签订无效条款
- 高等数学——常考公式(1)
- GCJ2008 APAC local onsites C Millionaire
- c语言fopen的路径,fopen()函数---文件绝对路径问题
- TMS320F28377D的sys/bios应用笔记(2)——新建工程
- 神雕侠侣手游修改服务器端口,神雕侠侣手游7月29日更新内容 部分服务器开启【常规跨服】玩法...