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

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

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

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

  • 源码编译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即可安装成功,如图:
安装

相关文章:

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

用源码编译虚幻引擎,并打包到安卓平台 前往我的博客,获取更优的阅读体验 作业内容: 源码编译UE5.4构建C项目,简单设置打包到安卓平台 编译虚幻 5 前置内容 这里需要将 Epic 账号和 Github 账号绑定,然后加入 Epic 邀请的组织&#xff0c…...

快速搭建Android开发环境:Docker部署docker-android并实现远程连接

目录 前言 1. 虚拟化环境检查 2. Android 模拟器部署 3. Ubuntu安装Cpolar 4. 配置公网地址 5. 远程访问 小结 6. 固定Cpolar公网地址 7. 固定地址访问 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊快速搭建Android开发环境&#x…...

「Mac玩转仓颉内测版21」基础篇1 - 仓颉程序的基本组成

本篇将系统介绍Cangjie编程语言中程序的基本组成部分,涵盖 main 函数的定义、包与模块的使用、变量类型、作用域和代码结构原则,帮助开发者理解Cangjie程序的整体结构。 关键词 程序入口点main函数包与模块变量类型与作用域值类型与引用类型代码结构与规…...

【Linux网络编程】简单的UDP套接字

目录 一,socket编程的相关说明 1-1,sockaddr结构体 1-2,Socket API 二,基于Udp协议的简单通信 三,UDP套接字的应用 3-1,实现英译汉字典 一,socket编程的相关说明 Socket编程是一种网络通信…...

在Vue中使用Excalidraw实现在线画板

概述 Excalidraw是一个非常好用的画图板工具,但是是用React写的,本文分享一种在Vue项目中使用的方法。 效果 实现 Excalidraw简介 这篇文章(Excalidraw 完美的绘图工具:https://zhuanlan.zhihu.com/p/684940131)介绍的很全面,…...

游戏+AI的发展历程,AI技术在游戏行业的应用有哪些?

人工智能(AI)与游戏的结合,不仅是技术进步的体现,更是人类智慧的延伸。从最初的简单规则到如今的复杂决策系统,AI在游戏领域的发展历史可谓波澜壮阔。 早在2001年,就有研究指出游戏人工智能领域&#xff0…...

Methode Electronics EDI 需求分析

Methode Electronics 是一家总部位于美国的全球性技术公司,专注于设计和制造用于多个行业的电子和电气组件,产品涵盖汽车、工业、电信、医疗设备以及消费电子等多个领域,提供创新的解决方案。 填写Methode_EDI_Parameters_Template Methode_…...

2023AE软件、Adobe After Effects安装步骤分享教程

2023AE软件是一款由Adobe公司开发的视频编辑软件,也被称为Adobe After Effects。它在广告、电影、电视和网络视频等领域广泛应用,用于制作动态图形、特效、合成和其他视觉效果。该软件支持多种视频和音频文件格式,具有丰富的插件和预设&#…...

【前端】JavaScript 变量引用、内存与数组赋值:深入解析三种情景

博客主页: [小ᶻZ࿆] 本文专栏: 前端 文章目录 💯前言💯场景一:直接赋值与重新引用为什么结果不是 [3, 4, 5]?1. 引用与赋值的基本概念2. 图示分析 关键总结 💯场景二:引用指向的变化为什么…...

本地项目运行提示跨域问题

项目背景:我使用phpwebstudy在本地搭建了一个项目,然后前端是http://localhost:8080/ 后端我直接创建了一个本地域名,例如www.abc.com 然后vue.config.js配置如下,这个配置在我所有线上环境是没有任何问题的 devServer: {proxy…...

C++ —— string类(上)

目录 string的介绍 string类功能的使用介绍 constructor —— 构造 介绍使用(1)(2)(4) :构造、拷贝构造、带参构造 介绍(3):拷贝string类对象的一部分字符…...

React Native Mac 环境搭建

下载 Mac 版Android Studio 下载 安装 JDK 环境 Flutter 项目实战-环境变量配置一 安装 Node.js 方式一 通过Node.js 官网下载 下载完成后点击安装包进行安装 安装完成...

Python Web 开发的路径管理艺术:FastAPI 项目中的最佳实践与问题解析20241119

Python Web 开发的路径管理艺术:FastAPI 项目中的最佳实践与问题解析 引言:从路径错误到模块化管理的技术旅程 在现代 Python Web 开发中,路径管理是一个常常被忽视却非常重要的问题。尤其是在使用像 FastAPI 和 Tortoise ORM 这样的框架时…...

Rust derive macro(Rust #[derive])Rust派生宏

参考文章:附录 D:派生特征 trait 文章目录 Rust 中的派生宏 #[derive]基础使用示例:派生 Debug 派生其他常用特征示例:派生 Clone 和 Copy 派生宏的限制和自定义派生自定义派生宏上面代码运行时报错了,以下是解释 结论…...

springboot嗨玩旅游网站

摘 要 嗨玩旅游网站是一个专为旅行爱好者打造的在线平台。我们提供丰富多样的旅游目的地信息,包括景点信息、旅游线路、商品信息、社区信息、活动推广等,帮助用户轻松规划行程。嗨玩旅游网站致力于为用户提供便捷、实用的旅行服务,让每一次旅…...

杰发科技AC7840——EEP中RAM的配置

sample和手册中示例代码的sram区地址定义不一样 这个在RAM中使用没有限制,根据这个表格留下足够空间即可 比如需要4096字节的eep空间,可以把RAM的地址改成E000,即E000-EFFF,共4096bytes即可。...

从零开始的c++之旅——map_set的使用

1.序列式容器和关联式容器 序列式容器:逻辑结构为线性序列的数据结构,两个位置之间没有紧密的关系,比如两者交换一下还是序列式的容器,例如string,vector,deque,array等。 关联式容器&#xff1…...

Docker中的一些常用命令

find / -type f -name “文件名” 2>/dev/null 寻找所有目录中的这个文件 pwd 查看当前目录的地址 docker pull 镜像名 强制拉镜像 docker run 运行docker systemctl daemon-reload 关闭docker systemctl start docker 启动docker systemctl restart docker 重启docker /…...

自存 sql常见语句和实际应用

关于连表 查询两个表 SELECT * FROM study_article JOIN study_article_review 查询的就是两个表相乘,结果为两个表的笛卡尔积 相这样 这种并不是我们想要的结果 通常会添加一些查询条件 SELECT * FROM study_articleJOIN study_article_review ON study_art…...

python | argparse模块在命令行的使用中的重要作用

import argparseclass TestCases:def __init__(self, nameNone, expect_resultNone):self.name nameself.expect expect_resultself.parser argparse.ArgumentParser() # 创建命令解析器self.add_arguments() # 方法 : 添加命令self.args, _ self.parser.par…...

【HCIP]——OSPF综合实验

题目 实验需求 根据上图可得,实验需求为: 1.R5作为ISP:其上只能配置IP地址;R4作为企业边界路由器,出口公网地址需要通过PPP协议获取,并进行CHAP认证。(PS:因PPP协议尚未学习&#…...

PW系列工控电脑复制机:效率与精度双重提升

工控电脑复制应用:效率与精度的双重提升 随着现代企业对大数据、数据备份、和跨平台兼容性需求的快速增长,工控电脑已成为数据密集型产业的核心设备。针对工控环境中大量数据复制的特殊需求,PW系列NVMe/SATA PCIe SSD复制机(如PW…...

学习QT第二天

QT6示例运行 运行一个Widgets程序运行一个QT Quick示例 工作太忙了,难得抽空学点东西。-_-||| 博客中有错误的地方,请各位道友及时指正,感谢! 运行一个Widgets程序 在QT Creator的欢迎界面中,点击左侧的示例&#xf…...

11.20作业

题目一&#xff1a; 题目&#xff1a; // 数组的行列转置 代码&#xff1a; // 数组的行列转置 #include <stdio.h> int main() {int a[2][3], i, j, b[3][2];printf("输入一个两行三列的数组a:\n");for (i 0; i < 2; i)for (j 0; j < 3; j){scanf…...

Ubuntu Linux使用前准备动作_使用root登录图形化界面

Ubuntu默认是不允许使用 root 登录图形化界面的。这是出于安全考虑的设置。但如果有需要&#xff0c;可以通过以下步骤来实现使用 root 登录&#xff1a; 1、设置 root 密码 打开终端&#xff0c;使用当前的管理员账户登录系统。在终端中输入命令sudo passwd root&#xff0c…...

DICOM核心概念:显式 VR(Explicit VR)与隐式 VR(Implicit VR)在DICOM中的定义与区别

在DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff09;标准中&#xff0c;VR&#xff08;Value Representation&#xff09; 表示数据元素的值的类型和格式。理解显式 VR&#xff08;Explicit VR&#xff09;与隐式 VR&#xff08;Implicit VR&#…...

源码分析Spring Boot (v3.3.0)

. ____ _ __ _ _/\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | _ | _| | _ \/ _ | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) ) |____| .__|_| |_|_| |_\__, | / / / /|_||___//_/_/_/:: Spring Boot :: (v3.3.0)//笔记背…...

IPv6 NDP 记录

NDP&#xff08;Neighbor Discovery Protocol&#xff0c;邻居发现协议&#xff09; 是 IPv6 的一个关键协议&#xff0c;它组合了 IPv4 中的 ARP、ICMP 路由器发现和 ICMP 重定向等协议&#xff0c;并对它们作出了改进。该协议使用 ICMPv6 协议实现&#xff0c;作为 IPv6 的基…...

linux常用命令(文件操作)

目录 1. ls - 列出目录内容 2. cd - 更改目录 3. pwd - 打印当前工作目录 4. mkdir - 创建目录 5. rm - 删除文件或目录 6. cp - 复制文件或目录 7. mv - 移动或重命名文件 8. touch - 更新文件访问和修改时间 9. cat - 显示文件内容 10. grep - 搜索文本 11. chmod…...

内存管理 I(内存管理的基本原理和要求、连续分配管理方式)

一、内存管理的基本原理和要求 内存管理&#xff08;Memory Management&#xff09;是操作系统设计中最重要和最复杂的内容之一。虽然计算机硬件技术一直在飞速发展&#xff0c;内存容量也在不断增大&#xff0c;但仍然不可能将所有用户进程和系统所需要的全部程序与数据放入主…...

b2b网站论文/今日足球赛事推荐

以下是全部VolleyError实例可能&#xff0c;如果需要逐条判断可以方便用户了解原因。 //正如前面代码看到的&#xff0c;在创建一个请求时&#xff0c;需要添加一个错误监听onErrorResponse。如果请求发生异常&#xff0c;会返回一个VolleyError实例。 //以下是Volley的异常列…...

wordpress首页图文轮播/seo平台有哪些

废话不多说&#xff0c;直接切入主题&#xff0c;百度网盘文件怎么核电脑文件同步&#xff1f;如果你还在复制粘贴的话&#xff0c;那也太浪费时间啦&#xff0c;今天给大家介绍一个简单的操作方式&#xff0c;可以实现百度网盘文件和电脑文件实时同步。 1.下载安装FileYee 首…...

做网站需要多大空间/网络营销的基本方法

3. KingbaseES的EF6编程指南 本部分描述了KingbaseES 的EF6的环境搭建以及程序开发示例。 环境搭建 程序开发示例 3.1. 环境搭建 工程搭建 服务的配置方法和参数说明 3.1.1. 工程搭建 工程搭建步骤可参考 参考用例一 中的步骤1。 3.1.2. 服务的配置方法和参数说明 相关…...

东丽做网站/免费发广告网站

1.采用简化的分批法计算产品成本时&#xff0c;在基本生产成本二级账计算得到的各项间接计入费用累计分配率&#xff0c;既是在各批完工产品之间分配各该费用的依据&#xff0c;也是在完工批别与月末在产品批别之间以及某批产品的完工产品与月末在产品之间分配各该费用的依据。…...

网站美化工具/火狐搜索引擎

我以为现在会有一个非常简单的答案,所以我会把我扔进去&#xff1a;// Make sure the array pointer is at the beginning (just in case)reset($array);// Move the first element to the end, preserving the key$array[key($array)] array_shift($array);// Go to the ende…...

wordpress显示关闭评论框/seo广告平台

参考&#xff1a;http://www.w3school.com.cn/css/css_outline.asp CSS 边框属性 "CSS" 列中的数字指示哪个 CSS 版本定义了该属性。 属性描述CSSoutline在一个声明中设置所有的轮廓属性。2outline-color设置轮廓的颜色。2outline-style设置轮廓的样式。2outline-wid…...