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

news2024/9/21 11:10:12

本文的目的

主要介绍了如何通过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.coloradmin.cn/o/2099084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑悟空上线即登顶,如何一路火遍全网?哪些营销方式值得关注?

几乎人人都有一个大圣梦,就像每个品牌也都想成为“黑神话:悟空”(以下简称“黑悟空”)。 作为国内首款3A游戏,黑悟空上线即登顶,直接刷爆全网。虽然目前热度渐歇,但创造的流量神话仍被津津乐道。…

大佬借助ChatGPT写论文发刊到手软,四个步骤20个顶级学术提示词指令

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥(yida985)交流,多多交流,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作攻略。经过数月爆肝,终于完成学术AI使用教…

Mybatis【分页插件,缓存,一级缓存,二级缓存,常见缓存面试题】

文章目录 MyBatis缓存分页延迟加载和立即加载什么是立即加载?什么是延迟加载?延迟加载/懒加载的配置 缓存什么是缓存?缓存的术语什么是MyBatis 缓存?缓存的适用性缓存的分类一级缓存引入案例一级缓存的配置一级缓存的工作流程一级…

《OpenCV计算机视觉》—— 图像形态学(腐蚀、膨胀等)

文章目录 一、图像形态学基本概念二、基本运算1.简单介绍2.代码实现 三、高级运算1.简单介绍2.代码实现 一、图像形态学基本概念 图像形态学是图像处理科学的一个独立分支,它基于集合论和数学形态学的理论,专门用于分析和处理图像中的形状和结构。图像形…

分贝通助力元气森林企业支出一体化降本提效

凭借着“0糖0脂0卡”这句广告语,元气森林几乎是一锤砸中了年轻消费者的内心,让“好喝不胖”深入人心,成为了国内饮品消费的新风向标。如果我们从近两年的快消饮品中选出几款深受消费者喜爱的“国货品牌”的话,相信「元气森林」一定上榜。 元气森林成立于2016年,旗下拥有元气森林…

深入理解并实现——快排【C语言版】

目录 一、快排介绍及其思想 二、hoare版本 三、前后指针版 四、挖坑法 五、优化版本 5.1 三数取中 5.2 小区间优化 六 、非递归实现快排 七、三路划分 八、introsort 小结 一、快排介绍及其思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一…

【数据结构】Map的使用与注意事项

文章目录 概念模型Map 的使用put() 和 get()getOrDefault()remove()keySet()entrySet() 注意事项 概念 Map 和 set 是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。 以前常见的搜索方式有: 直接遍历,时间…

Spring AOP(下)原理

本文我们来学习 Spring AOP 的原理,也就是 Spring 是如何实现 AOP 的。Spring AOP 是基于动态代理来实现 AOP 的; 1. 代理模式 1.1 代理弄模式的定义 代理模式,也叫委托模式。 定义:为其他对象提供一种代理以控制这个对象的访问…

【第三版 系统集成项目管理工程师】第14章 收尾过程组

持续更新。。。。。。。。。。。。。。。 【第三版】第十四章 收尾过程组 14.1结束项目或阶段14.1.1主要输入1.项目章程-P5392.项目管理计划-P5393.项目文件-P5394.验收的可交付成果-P5405.协议-P5406.采购文档-P540 14.1.2主要输出1.最终产品、服务或成果-P5402.项目最终报告…

如何在IntelliJ IDEA中将Tab设置为4个空格

前言 IntelliJ IDEA是一个强大的开发工具,支持多种编程语言。为了保持代码整洁一致,开发者经常需要调整编辑器中的Tab和缩进设置。 步骤1: 打开设置 首先,启动IntelliJ IDEA。在主界面上方的菜单栏中找到 File(文件&#xff09…

体育直播平台开发:初创公司突破资金与市场的双重挑战

在当今竞争激烈的数字娱乐行业中,体育直播平台的发展潜力巨大。然而,面对如此巨大的蓝海市场,对于初创公司或中小型平台而言,高昂的开发和运营成本可能成为进入该行业的主要障碍。本文将探讨一些可行的低成本开发策略,…

Matlab三维图的坐标轴标签 自动平行坐标/自动旋转

下载解压工具包: https://www.mathworks.com/matlabcentral/fileexchange/49542-phymhan-matlab-axis-label-alignment 添加至MATLAB路径: 在三维绘图后增加下列语句即可 ax struct(Axes, gca); align_axislabel([],ax) h3d rotate3d; set(h3d,ActionPreCa…

k8s项目的发布(金丝雀发布)

目录 三种发布方式 1.蓝绿发布 2.金丝雀发布(灰度发布) 实验:k8s实现金丝雀发布 3.滚动发布(默认形式) 因为应用升级以及新旧业务切换,所以在这个过程当中如何保证对外的服务正常是一个非常重要的问题…

/单元测试

承接上文 统一异常处理&#xff0c;封装结果-CSDN博客 ******************************************** 登录业务 Service public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {Resourceprivate JwtUtils j…

深入探索批处理中的变量与命令:从基础到高级

更多内容前往&#xff1a;孔乙己大叔 在Windows环境中&#xff0c;批处理&#xff08;Batch&#xff09;文件是一种非常有用的脚本工具&#xff0c;允许用户自动化重复性任务。通过编写批处理脚本&#xff0c;用户可以执行一系列命令&#xff0c;而无需手动输入每个命令。变量是…

怎么把视频压缩变小?快码住这篇视频压缩教程

众所周知&#xff0c;视频已经成为人们交流信息的重要方式之一。 然而&#xff0c;随着视频分辨率越来越高&#xff0c;文件大小也随之膨胀&#xff0c;这给存储空间带来了不小的压力&#xff0c;同时也影响了视频在网络上的传输速度。 因此&#xff0c;掌握视频压缩技巧&…

E1.S接口如何解决SSD过热问题?

针对SSD接口标准&#xff0c;目前业内有两大组织&#xff1a; PCI-SIG&#xff1a;这个就是定义pcie协议标准的那个组织&#xff0c;我们常见的传统接口M.2, U.2, 2.5英寸的接口都归这个组织定义规范。M.2&#xff0c;U.2起源与客户端&#xff0c;也是企业级当前最常用的接口形…

Day22_K8S

文章目录 3.资源管理方式通过命令管理通过配置文件管理4. 基本概念入门4.1 Namespace4.2 Pod4.3 Label4.4 Deployment4.5 Service5. Pod详解5.1 Pod介绍5.2 Pod配置5.3 Pod生命周期5.3.1 初始化容器5.3.2 钩子函数5.3.3 容器探测5.3.4 重启策略5.4 Pod调度5.4.1 定向调度5.4.2 …

【技巧】Excel检查单元格的值是否在另一列中

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 用到的excel函数 IF(ISNUMBER(MATCH(H2, I2:I10, 0)), H2, "") 注意改上面的“H2、I2、I10”&#xff01; 函数效果 函数解释 检查单元格 …

简述二叉树先序遍历、中序遍历和后序遍历的思想。

先序遍历&#xff08;根左右&#xff09;(DLR) 若二叉树为空&#xff0c;则退出&#xff0c;否则进行下面操作:访问根结点、先序遍历左子树、先序遍历右子树。 中序遍历&#xff08;左根右&#xff09;(LDR) 若二叉树为空&#xff0c;则退出&#xff0c;否则进行下面操作:中…