[Unity3D] Unity3D连接安卓设备调试unity程序
Posted GLDbalala
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Unity3D] Unity3D连接安卓设备调试unity程序相关的知识,希望对你有一定的参考价值。
目录
目的:确保adb能检测到手机,通过adb devices命令能够呈现如下效果
目的:配置unity中Build Settings界面与Player Settings界面的参数,能够通过Build打出一个APK包
目的:unity Console窗口与Profiler窗口能够监听到程序的Debug信息
一、手机开启调试模式,确保adb能检测到手机
目的:确保adb能检测到手机,通过adb devices命令能够呈现如下效果
步骤:
1、手机用数据线连接电脑,确保打开USB调试模式,保持手机在整个过程中保持解锁与亮屏
2、在你的安卓SDK配置目录下找到platform-tools文件夹,通过输入框打开cmd程序
3、输入adb devices,输出窗口中存在目标安卓设备这一步骤即完成。
注意点:
如果设备中存在多个安卓SDK的话,确保ADB是UNITY所关联的SDK中的,SDK路径可以通过
Edit->Preferences->External Tools 中查询
常见问题:
1、输入命令后依旧检测不到设备
可尝试方法:
(1) 用管理员权限运行CMD,再跳转到platform-tools文件夹后执行之后的步骤。
(2) 输入adb kill-server 命令关闭adb服务,再通过adb start-server 命令重启adb服务,后再执行步骤3。
(3) 部分手机在输入adb devices命令后会询问是否允许设备调试,确认之后再重新尝试命令。
二、unity配置工作
示例中的unity版本:2018.1.9f1
目的:配置unity中Build Settings界面与Player Settings界面的参数,能够通过Build打出一个APK包
Build Setting:
参数解释:
Build System:
Internal(默认): unity内置的打包程序,只需要SDK的支持,但不能导出工程,APK所需的签名会要求在Player Settings界面中设置。
Gradle : 一般用于将UNITY工程导出为安卓工程,对安卓系统有更深的交互需求的时候才会使用到。
这两个选项影响都不大,Internal打包的时候会用到unity所配置的SDK,Gradle导出安卓工程后,在最终打包时SDK版本的不同会有影响,所以保证SDK版本一致即可。
Development Build:
开启调试模式,不勾不行。
Autoconnect Profiler:
自动开启Profiler,当用Build And Run打包,打完包后推送程序到手机上时会自动打开Profiler窗口。不勾的话可以自己去Window->Analysis->Profiler打开。
script Debugging:
调试script脚本用,勾上后可以在外部编译器中调试脚本代码
Run Device(Build And Run选项需要):
项目要运行的设备,第一步中ADB检测到的安卓设备都会在这里列出,这里选择你的安卓设备
Player Settings:
最主要的是Company Name(公司名),Product Name(程序名),以及Package Name(包名)
Product Name或Package Name在下一步链接的时候会用到
部分安卓机子可能要调整这些参数(次要,只要能打出包来就不需要动这个参数)
Minimum API Level (最低兼容安卓API版本)
Target API Level(目标安卓API版本)
Target Architectures(安卓设备的架构)
三、链接unity与安卓程序
目的:unity Console窗口与Profiler窗口能够监听到程序的Debug信息
步骤:
下面讲的是只打包的情况,你可以通过Build And Run 跳过1、2小步,等待手机程序启动。
1、点击Build 将安卓包打包出来,并将其安装到你的安卓设备上
2、回到你的ADB目录下打开CMD,运行以下命令
adb forward tcp:34999 localabstract:Unity-com.test.test
其中 34999 可以改为任何你的电脑中空闲的端口号,com.test.test 改为第二步骤中提到的ProductName或者PackageName
该步骤是将你的手机程序与PC之间建立一个通讯通道,程序的Debug消息都会通过这个通道返回到Unity中
运行命令后,你就可以在Console界面和Profiler界面切换调试信息获取的对象
3、切换了信息获取的对象后,在安卓设备上运行你的程序,看能否获取到你的程序的信息。
常见问题:
1、Console界面和Profiler界面切换不了信息获取对象
可以尝试:1、确保防火墙没有禁用你的tcp端口,可以使用telnet命令访问这个端口,看能否接通
2、确保adb命令里面,你的ProductName或者PackageName填写正确
四、链接Visual Studio与安卓程序
示例中使用的VS版本:VS2019 Community
该步骤并不需要第三步骤完成,理论上只要你的unity打包出Debug包就可以用VS进行断点调试
目的:VS2019能够对程序进行断点调试
步骤:
1、VS安装unity调试组件
打开VS,在工具-》获取工具和功能 界面中勾选Unity模块
2, Unity设置调试工具
Edit->Preferences->External Tools 中External Script Editor中选择你的VS
3、链接你的程序
保持adb devices能够检测到你的设备,将unity打的包安装到你的设备上并运行。
回到VS,选择 调试-》附加Unity调试程序
在列出的项目中选择androidPlayer
如果成功的话调试程序就会运行,这时你就可以和平时一样调试程序了。
常见问题:
1、Unity实例中没有我的项目
可以尝试:(1) 确保adb devices能检测到你的设备。
(2) 确保是用Development Build打包出来的
2、选择Unity实例后编译器附加不上去
可以尝试:(1)重启unity
(2)重启adb服务
另外:VS的调试和Unity的调试是相互独立的,可以依照需求配合使用
五、安卓模拟器调试程序
示例中使用的模拟器:夜神模拟器
目的:将模拟器与VS调试程序
步骤:
1,打开模拟器里,安卓操作系统的USB调试选项
2,打开模拟器文件所在位置,寻找到该目录下的nox_adb.exe
提示:
nox_adb的版本需要与你打包APK所使用的adb版本一致;
先将打包使用的adb 覆盖nox_adb确保后续操作无误;
3,在导航栏中输入cmd,打开cmd窗口,并执行命令:
nox_adb.exe connect 127.0.0.1:62001
检查该adb所连接的程序:
4,运行你所导入到模拟器里面的APP,用VS附加Unity调试查看VS有无检测到调试接口
提示:如果想链接Unity可以直接按照【链接unity与安卓程序】操作
常见问题:
1、Unity实例中没有我的项目:
可以尝试:(1)检查电脑USB接口中有没有连到其他手机设备,如果有就断开
(2)nox_adb.exe devices 检测设备链接状态,如果是offlin 尝试
nox_adb.exe kill-server
2、nox_adb连接不上:
可以尝试:(1)检查nox_adb版本是否与打包所使用的adb版本一致
以上是关于[Unity3D] Unity3D连接安卓设备调试unity程序的主要内容,如果未能解决你的问题,请参考以下文章