Debug Unity Project on Android Device

由于工作需要,在C++/Python的主业外,零零散散地与Unity打了些交道。这里记录下在安卓上调试Unity项目的要点。 修改Build Settings 点击File->Build Settings,在Android build setting里勾选“Development Build”和“Script Debugging”。 开启USB调试 Android设备需开启USB调试选项。通常是在系统设置里查看系统信息,多次点击系统版本以启用开发者选项,再到开发者选项里启用USB调试即可。这一步是安卓开发的基础,略过不谈。 连接设备到PC 有线连接 有线连接即通过USB线将设备连接到PC即可。可以通过adb devices命令确定可用的设备。 无线连接 无线连接需要PC和Android设备连接到同一WIFI。 查看设备IP 可以在设备的系统设置里找到IP,通常是在网络的详情里。也可以用ADB查看,终端执行 adb shell ip addr show wlan0 连接到设备 PC终端执行 adb tcpip 5555 adb connect [AndroidDeviceIP]:5555 Attach Unity Debugger 在Android上运行Unity应用后,在Visual Studio中点击“Debug”->“Attach Unity Debugger”: 随后选择对应的Android设备即可 设置Android SDK路径 如果系统中有多个Android SDK版本,在Select Unity Instance中可能不会看到对应的设备,这是因为Visual Studio使用的SDK工具没有对应。 在Unity中,点击Edit->Preferences->External Tools,复制所用的Android SDK工具路径: 随后在Visual Studio中,点击Tool->Options->Tools for Unity->General,设置Preferred Android Sdk Root: 设置完成后,可能需要重新运行Unity应用,才能在Select Unity Instance中找到对应的设备。 Reference Debugging Unity Project On Android Device With Visual Studio – Siddharth Shanker Mishra Cannot Debug on Android Device from Visual Studio - Unity Forum

2023-03-24 · Qiao

处理托管C++的EEFileLoadException

背景 因为业务的原因,需要从C++端调用一个C#库,设计的调用流程如下: graph LR; n["Native C++"]-->m["Managed C++"]; m-->s["C#"]; 工程的组织如下: graph LR; subgraph "Native C++" user["Native C++库使用者"] nt["Native C++库单元测试"]; n["Native C++库"]; end m["Managed C++库"]; subgraph "C#" s["C#库"]; st["C#库单元测试"]; end user-.->|显式加载|n; nt-->n; n-->m; m-->s; st-->s; 动态库工程: Native C++库:生成Unmanaged.lib和Unmanaged.dll Managed C++库:生成Wrapper.lib和Wrapper.dll C#库:生成Managed.dll 可执行文件工程: Native C++库单元测试:生成UnmanagedTest.exe C#库单元测试:生成ManagedTest.exe Native C++库使用者:生成LibConsumer.exe。与单元测试工程不同的是,LibConsumer.exe会在运行期间调用::LoadLibrary()显示加载Unmanaged.dll,在链接期也不会链接到Unmanaged.lib和Wrapper.lib 现在情况如下:C#库编写完成,且C#库单元测试通过,但Native C++库单元测试未通过,LibConsumer.exe加载Unmanaged.dll也会失败(::LoadLibrary()返回句柄为NULL)。调试发现在托管C++层创建C#对象时会出现EEFileLoadException导致程序崩溃。 EEFileLoadException Microsoft Docs没有找到对EEFileLoadException的描述,不过Stackoverflow上有个简要的回答,见EEFileLoadException When Loading C++ DLL in Managed DLL: An EEFileLoadException indicates the executable cannot find or load one of it’s dependencies. That can of course has different causes (path problem, mixing configurations, mixing platforms)....

2020-11-04 · Qiao