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

  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值