用源码编译虚幻引擎,并打包到安卓平台

devtools/2024/11/25 7:38:29/

用源码编译虚幻引擎,并打包到安卓平台

前往我的博客,获取更优的阅读体验
作业内容:

  • 源码编译UE5.4
  • 构建C++项目,简单设置
  • 打包到安卓平台

编译虚幻 5

前置内容

这里需要将 Epic 账号和 Github 账号绑定,然后加入 Epic 邀请的组织,即可以参与虚幻5的工程。考虑到这并非本作业的核心内容,这里不过多赘述,如有疑问,参考下列文章;

  • 官方文档: 如何下载虚幻引擎源代码

获取完整源码文件

这里下载的版本为课程要求的 5.4 版本

分支选择

官方已经给出了完整的编译方案,如图:
编译方案

我们跟随教程,解压文件然后运行 Setup.bat:
运行Setup

然后运行 GenerateProjectFiles.bat:
运行GenerateProjectFiles

完成后会出现UE5.sln,然后使用VS2022运行 UE5.sln

这儿我权衡下没有采取克隆的方式,主要是两点:

  • Github的网络上个谜,即便挂梯子,也会抽风
  • 本地硬盘为980Pro,并不害怕解压小文件

编译器环境配置

这里我曾经使用 VS 开发过,所以不需要配置任何 VS 的环境
我的VS配置如下图:
VS配置

实际上并不需要全部勾选,大家可以参考官方文档,这里只是一个参考。

  • 官方文档: 在VS中设置扩展以兼容虚幻5

编译源码

以上配置完成后打开UE5.sln,然后选择 Development EditorWin64 进行编译,如图:
编译
这里我遇到了两个问题:

  • 权限问题,临时文件无法创建问题。经典的C++ Error D8037
  • 虚拟内存爆炸问题,这个问题是我本地的问题,解决方案是增加虚拟内存
    前者解决方案参考: C++ Error D8037

此外,本过程可能需要消耗几个小时的时间,大家慢慢等待即可。

编译完成后,在VSF5或前往对应路径运行UnrealEditor.exe
运行

我这儿直接创建了一个新的项目,然后进行了简单的设置,并本地运行如图:
运行

安卓打包平台的配置

环境配置

先贴完整的官方文档: 如何进行安卓平台配置

因为我本地已经配置过 NDKSDK,所以Android Studio部分没有截图,大家可以参考官方文档。

虚幻 5 的配置

先跟随官方安装虚幻的 NDK,选择对应的 SDK 路径
配置

然后重启虚幻5,选择 Android 平台,如果操作正常,应当可以看到如下图:
配置
配置完成后,不可以出现主动安装等字样,如图,即便有也只能出现强制安装等字样,如果是这样,意味着虚幻5成功的获取了你的 SDK 。

打包,完工

打包

在我环境下虚幻5.4为Gradle 7.5 ,而我本地的 JDK 版本为 21,这两个版本存在兼容问题,所以我需要降级 JDK 版本。
然后开始打包,生成下列文件:
打包

借助 ADB 进行安装,并成功运行,如图:
安装

测试时发现单独的 APK 不能安装,仔细下图观察会发现有一个极大的obb文件,即安卓游戏通用数据包

查询后发现需要勾选打包数据到 apk,如图:
调整设置
再次打包可以看出数据已经打包到apk中,apk大了很多,如图:
安装
仅借助APK即可安装成功,如图:
安装


http://www.ppmy.cn/devtools/136785.html

相关文章

springboot 整合 rabbitMQ (延迟队列)

前言: 延迟队列是一个内部有序的数据结构,其主要功能体现在其延时特性上。这种队列存储的元素都设定了特定的处理时间,意味着它们需要在规定的时间点或者延迟之后才能被取出并进行相应的处理。简而言之,延时队列被设计用于存放那…

输入/输出管理 III(磁盘和固态硬盘)

一、磁盘 【总结】: 磁盘(Disk)是由表面涂有磁性物质的物理盘片,通过一个称为磁头的导体线圈从磁盘存取数据。在读/写操作期间,磁头固定,磁盘在下面高速旋转。如下图所示: 磁盘盘面…

WireShark

1. WireShark安装 去官网Wireshark Download下载安装包 之后按照安装向导进行安装。安装完成后,用户可以在桌面或应用程序中找到Wireshark的图标,双击打开软件 2. wireshark过滤语法 2.1过滤协议 http 2.2 过滤指定ip 匹配指定的IP地址数据包&…

i春秋-文件包含绕过(PHP伪协议的使用)

练习平台地址 竞赛中心 题目描述 题目内容 本地包含,进行BP爆破 成功获得了数据库敏感文件(配置文件和/etc/passwd) 但是发现/etc/shadow文件无法访问,那么无法登录数据库 尝试使用PHP伪协议读取文件 php://filter/resourceflag…

DTO和VO的区别及使用场景详解

随着互联网的发展,前后端分离的开发模式越来越流行。在前后端数据交互过程中,为了保证数据的安全性和效率,通常会采用 DTO 和 VO 来封装数据。本篇博客将详细介绍 DTO 和 VO 的区别以及使用场景。 大家可能会有个疑问,既然DTO是展…

微信小程序中的WXSS与CSS的关系及使用技巧

微信小程序中的WXSS与CSS的关系及使用技巧 引言 在微信小程序的开发中,样式的设计与实现是构建用户友好界面的关键。微信小程序使用WXSS(WeiXin Style Sheets)作为其样式表语言,WXSS在语法上与CSS非常相似,但也有一些独特的特性。本文将深入探讨WXSS与CSS的关系,介绍WX…

YesBut——帮助多模态理解讽刺漫画的数据集

1.概述 源码地址:https://github.com/abhi1nandy2/yesbut_dataset 论文地址:https://arxiv.org/pdf/2409.13592.pdf 讽刺是一种幽默,它通过讽刺和夸张来批评人、社会和政治,是提出问题和鼓励批判性观点的有力工具。尤其是社交媒…

jenkins 2.346.1最后一个支持java8的版本搭建

1.jenkins下载 下载地址:Index of /war-stable/2.346.1 2.部署 创建目标文件夹,移动到指定位置 创建一个启动脚本,deploy.sh #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/opt/projects/jenkins # 服务名称。同时约定部…