当前位置: 首页 > article >正文

UE4 使用AndroidGameDevelopmentExtension(AGDE)对安卓客户端做“断点调试”与“代码热更”

本文的目的

主要介绍了如何通过AndroidGameDevelopmentExtension工具、Visual Studio 2022来进行安卓包调试。

流程全过程

1、安装JDK、Gradle、Android NDK、Android SDK等环境如下,请自行前往官网下载,并确认环境参数配置正确。

2、安装 AndroidGameDevelopmentExtensionSetup-v22.2.69.exe 。`AndroidGameDevelopmentExtension`(AGDE)是一个UE4的插件,它提供了一些额外的功能,以方便在UE4中开发安卓游戏。

3、手机安装你需要调试的安卓包,注意你不能调试一个签名的APK。在后文的调试过程中,如果Rider上报错是:

package not debuggable: com.tencent.tmgp.dfm

那意味着,你需要更换为“非签名包”!

4、更新你的工程,使其和你下载的安卓版本的代码是一样的(例如,保持svn、git的Revision等一致);

5、安装AGDE后,需要重新generate一下工程;

6、连接手机,打开开发者模式,确保如下图:

7、重启VS,如有必要重启电脑;

8、切换为安卓平台 : Development Client | Android 。当然,如果你下载的包是Test,那么勾选Test Client | Android 。如果调试配置栏读取到了你的安卓设备,那么就正确。

9、该步骤不一定必要。编译打开工程的UE4 Editor,在编辑器里面接受Android SDK 证书,以及 Google play Services ,确保“平台文件可写”。确认下面界面中显示为绿色,而非红色。

10、直接点击绿色三角形(“Run”)按钮,确保能build完;

如果中间报错 cpu-features-patched.c 找不到,则从你的电脑上everything搜索一下,并拷贝。

11、你可能会遇到下面报错:

严重性	代码	说明	项目	文件	行	禁止显示状态	详细信息

错误	MSB3075	命令“G:\St\EngineSource\Engine\Build\BatchFiles\Build.bat 你的项目Client Android Test -Project="G:\St\你的项目Source\你的项目.uproject" -WaitMutex -FromMsBuild -Architectures=arm64 -ForceAPKGeneration”已退出,代码为 5。请验证您是否拥有运行此命令的足够权限。	你的项目	C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets	45		

错误		cmd.exe failed with args /c "G:\St\你的项目Source\Intermediate\Android\arm64\gradle\rungradle.bat" --stacktrace :app:assembleDebug	--init-script init.gradle --profile	你的项目	G:\St\你的项目Source\Intermediate\ProjectFiles\UnrealBuildTool	1	

 

日志中出现错误

1>* What went wrong:
1>Execution failed for task ':app:packageDebug'.
1>> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
1>   > Unable to find EOCD signature

其中,EOCD Signature的含义是: 在安卓中,EOCD(End of Central Directory)签名是指在APK文件的结尾处的特定标识。EOCD签名用于标识APK文件的中央目录结束的位置,这个中央目录包含了APK文件中包含的所有文件和目录的索引信息。

根据 https://stackoverflow.com/questions/46763464/eocd-signature-not-found 的建议,要把“输出目录中的APK”都删除掉,如下面的apk,都需要删除掉,并重试。

12、使用ADB将生成的so推送到安卓设备上,命令如下:

adb shell run-as com.你的游戏名 mkdir /data/data/com.你的游戏名/files/libs/

adb push {电脑so的路径} /data/local/tmp/
adb shell run-as com.你的游戏名 cp /data/local/tmp/libUE4.so /data/data/com.你的游戏名/files/libs/

adb shell run-as com.你的游戏名 touch  /data/data/com.你的游戏名/files/enable_hotfix_so.json

 

其中电脑里so的路径大概是: {你的工程路径}/Binaries/Android/你的游戏名Client-arm64.so

13、当编译成功后,会触发安装,此时要在手机上点一下安装按钮。

14、你可能会遇到这个弹窗:“Installation failed due to: "Failed to commit install session with command package install-commit . Error Package ”

答:事实上已经推送了so了,此时点击否,然后观察到手机APP显示如下图,此时不要点击“Force Close”,而是安静等待1分钟。等待过程将会看到VS显示Attaching。

14、此时就能熟悉地进行断点调试了。修改你的代码,例如加一行日志,然后重复上面的调试流程,就可以看到你的热更日志了。


http://www.kler.cn/a/284173.html

相关文章:

  • 如何使用ffmpeg命令行进行录屏
  • SpringCloud学习笔记
  • 蓝桥杯每日真题 - 第7天
  • AcWing 302 任务安排 斜率优化的dp
  • 一文详解java的数据类型
  • RS®SZM 倍频器
  • Nginx代理MinIO界面
  • Vue.js入门系列(十八):利用浏览器本地存储实现TodoList数据持久化
  • 全国设计院排名 境外工程总承包营业额二〇二三年排名
  • 在 Deepin 系统中搭建 Node.js 开发环境
  • 【STM32】RTC
  • 打卡第60天------图论
  • OceanBase V4 技术解读:从Alter Table 看DDL的支持
  • Linux CentOS 添加路由
  • 江协科技stm32————10-3 软件I2C读写MPU6050
  • 2 Python开发工具:PyCharm的安装和使用
  • 【知识】对比Share mem/Pin mem/GPU mem之间的传输速度
  • TinTinLand Web3 + DePIN 共学月|挖掘 CESS 去中心化数据基础设施。
  • Jmeter进行http接口测试
  • 人工智能领域正经历模型规模变革,小型语言模型(SLM)崛起,挑战“规模至上”观念。
  • 算法设计与分析:实验1 排序算法性能分析
  • elasticsearch存入数据嵌入式数据解决扁平化查询问题
  • 后端微服务与分布式系统
  • LeetCode 3153.所有数对中数位差之和:计数
  • html2Canvas和jspdf导出长pdf
  • 绿色消费新动力:‘众店‘模式引领数字经济下的零售创新