[Unity3D] Unity3D连接安卓设备调试unity程序

Posted GLDbalala

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Unity3D] Unity3D连接安卓设备调试unity程序相关的知识,希望对你有一定的参考价值。

目录

一、手机开启调试模式,确保adb能检测到手机

目的:确保adb能检测到手机,通过adb devices命令能够呈现如下效果

常见问题:

二、unity配置工作

目的:配置unity中Build Settings界面与Player Settings界面的参数,能够通过Build打出一个APK包

三、链接unity与安卓程序

目的:unity Console窗口与Profiler窗口能够监听到程序的Debug信息

常见问题:

四、链接Visual Studio与安卓程序

目的:VS2019能够对程序进行断点调试

常见问题:

五、安卓模拟器调试程序

        目的:将模拟器与VS调试程序

        常见问题:



一、手机开启调试模式,确保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程序的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D利用Logcat调试安卓

Unity3D开发安卓游戏怎么连接外部蓝牙摇杆

Unity3d中使用Profiler调试设备的方法

unity3d模型安卓手机怎么查看

Unity 打印安卓apk报错的日志

菜鸟在线教你用Unity3D开发VR版的Hello World