当前位置: 首页 > 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…...

别再算错了!等保2.0 2021版测评新规下,多系统/多机房得分计算保姆级教程

等保2.0 2021版多系统测评得分计算实战指南 当企业拥有多个机房或业务系统时,等保测评得分计算往往成为安全负责人最头疼的问题。2021版测评新规对多对象场景的计算方式进行了重要调整,这些变化直接影响最终得分和整改策略。本文将用真实案例拆解新旧计算…...

NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来

NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来 很多人第一次遇到 NCCL watchdog timeout,第一反应都是三件事:查网络、调大 timeout、怀疑 NCCL 又炸了。这个顺序经常不够用。因为在很多真实训…...

NoFences:彻底解决Windows桌面杂乱问题,免费开源桌面整理革命

NoFences:彻底解决Windows桌面杂乱问题,免费开源桌面整理革命 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否厌倦了Windows桌面上满屏的图标&a…...

深入STM32F429 LTDC双图层与DMA2D:打造流畅UI界面的性能优化指南

STM32F429 LTDC与DMA2D深度优化:构建60FPS工业级UI的实战指南 在工业HMI和医疗设备等对显示性能要求严苛的场景中,流畅的UI动画和实时数据可视化往往成为系统瓶颈。STM32F429的LTDC控制器配合DMA2D加速器,通过合理的架构设计可实现媲美专业GP…...

Linux调试利器:用addr2line精准定位程序崩溃现场

1. 当程序崩溃时,我们该如何快速定位问题? 作为一名长期奋战在Linux开发一线的程序员,我最头疼的就是遇到程序突然崩溃的情况。那种看着终端输出"Segmentation fault (core dumped)"却无从下手的无力感,相信很多开发者都…...

告别疲劳计算烦恼:用nCode DesignLife搞定汽车悬架非线性载荷分析(附信号处理技巧)

告别疲劳计算烦恼:用nCode DesignLife搞定汽车悬架非线性载荷分析(附信号处理技巧) 悬架系统作为汽车底盘的核心部件,其疲劳寿命直接关系到整车可靠性与安全性。但在实际工程分析中,工程师们常常被一个棘手问题困扰&am…...

英雄联盟终极助手:League Akari 完整使用指南

英雄联盟终极助手:League Akari 完整使用指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是一个文章写手,你负责…...

如何快速上手Unitree Go2 ROS2 SDK:模块化机器人开发完整指南

如何快速上手Unitree Go2 ROS2 SDK:模块化机器人开发完整指南 【免费下载链接】go2_ros2_sdk Unofficial ROS2 SDK support for Unitree GO2 AIR/PRO/EDU 项目地址: https://gitcode.com/gh_mirrors/go/go2_ros2_sdk Unitree Go2 ROS2 SDK是为宇树科技GO2系列…...

告别龟速!实测字节跳动Rust镜像源rsproxy.cn,安装rust和cargo快到飞起

Rust开发者福音:字节跳动镜像源rsproxy.cn全实测与避坑指南 上周深夜两点,我盯着终端里以KB/s为单位缓慢爬升的Rust安装进度条,第5次按下了CtrlC。作为一门以"零成本抽象"著称的语言,Rust的安装体验却让国内开发者付出了…...

树莓派4B + MPU9250:从零到一搭建你的第一个姿态传感器(附完整代码与避坑指南)

树莓派4B与MPU9250实战:从硬件连接到姿态解算的全流程指南 1. 准备工作与环境搭建 1.1 硬件清单与连接指南 在开始之前,我们需要准备以下硬件组件: 树莓派4B(建议4GB内存版本)MPU9250九轴传感器模块杜邦线(…...