Unity与Java互操作:安卓接入实战

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

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

unity 接入java unity 接入安卓_unity

步骤:

1、手机用数据线连接电脑,确保打开USB调试模式,保持手机在整个过程中保持解锁与亮屏

2、在你的安卓SDK配置目录下找到platform-tools文件夹,通过输入框打开cmd程序

unity 接入java unity 接入安卓_unity 接入java_02

3、输入adb devices,输出窗口中存在目标安卓设备这一步骤即完成。

注意点:

如果设备中存在多个安卓SDK的话,确保ADB是UNITY所关联的SDK中的,SDK路径可以通过

Edit->Preferences->External Tools 中查询

unity 接入java unity 接入安卓_API_03

常见问题:

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:

unity 接入java unity 接入安卓_unity 接入java_04

参数解释:


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:

unity 接入java unity 接入安卓_android_05

最主要的是Company Name(公司名),Product Name(程序名),以及Package Name(包名)

Product Name或Package Name在下一步链接的时候会用到

部分安卓机子可能要调整这些参数(次要,只要能打出包来就不需要动这个参数)

unity 接入java unity 接入安卓_unity 接入java_06

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界面切换调试信息获取的对象

unity 接入java unity 接入安卓_unity_07

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模块

unity 接入java unity 接入安卓_unity_08

2, Unity设置调试工具

Edit->Preferences->External Tools 中External Script Editor中选择你的VS

unity 接入java unity 接入安卓_unity 接入java_09

3、链接你的程序

保持adb devices能够检测到你的设备,将unity打的包安装到你的设备上并运行。

回到VS,选择 调试-》附加Unity调试程序

unity 接入java unity 接入安卓_android_10

在列出的项目中选择AndroidPlayer

unity 接入java unity 接入安卓_调试程序_11

如果成功的话调试程序就会运行,这时你就可以和平时一样调试程序了。

常见问题:

1、Unity实例中没有我的项目

可以尝试:

1) 确保adb devices能检测到你的设备。

2) 确保是用Development Build打包出来的


2、选择Unity实例后编译器附加不上去

可以尝试:

1)重启unity

2)重启adb服务

另外:VS的调试和Unity的调试是相互独立的,可以依照需求配合使用

五、安卓模拟器调试程序

示例中使用的模拟器:夜神模拟器

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

步骤:

1,打开模拟器里,安卓操作系统的USB调试选项

2,打开模拟器文件所在位置,寻找到该目录下的nox_adb.exe

unity 接入java unity 接入安卓_unity_12

提示:

nox_adb的版本需要与你打包APK所使用的adb版本一致;
先将打包使用的adb 覆盖nox_adb确保后续操作无误;

3,在导航栏中输入cmd,打开cmd窗口,并执行命令:

登录后复制


nox_adb.exe connect 127.0.0.1:62001


unity 接入java unity 接入安卓_android_13

检查该adb所连接的程序:

unity 接入java unity 接入安卓_android_14


4,运行你所导入到模拟器里面的APP,用VS附加Unity调试查看VS有无检测到调试接口

unity 接入java unity 接入安卓_unity 接入java_15

提示:如果想链接Unity可以直接按照【链接unity与安卓程序】操作

常见问题:

1、Unity实例中没有我的项目:

可以尝试

1)检查电脑USB接口中有没有连到其他手机设备,如果有就断开

2)nox_adb.exe devices 检测设备链接状态,如果是offlin 尝试
                               

登录后复制


nox_adb.exe kill-server

2、nox_adb连接不上:

可以尝试:(1)检查nox_adb版本是否与打包所使用的adb版本一致



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空