手把手教你:UE 4.27插件项目的自动化打包(Windows、Android、iOS统统搞定)

news2024/11/28 17:46:58

Windows平台

  1. 下载/安装Epic Games launcher;然后安装 Unreal Engine v4.27.2

注意:launcher和具体版本的engine务必安装在相同的父目录下!如下:

2. 安装Visual Studio 2019或2022。安装完成后执行菜单:帮助 | 检查更新,确保装上最新的补丁。

3. 将上述安装目录下的 <InstallationPath>\UE_4.27\Engine\Build\BatchFiles 添加到系统的Path环境变量里

4. Git拉取最新代码

5. 执行命令行进行打包:

// 目标平台:Windows

RunUAT BuildCookRun -project="D:\Codes\richtap_pocs\UnrealEngine\RichTapTestCloud\RichTapTestCloud.uproject" -noP4 -platform=Win64 -clientconfig=Development -serverconfig=Development -cook -allmaps -build -stage -pak -archive -archivedirectory="D:\MyUEGameWin"

打包完成后,将D:\MyUEGameWin目录下的文件压缩成一个zip文件,命名规则:RichTapTestCloud_日期.zip;

注意:

a) 系统可能弹出防火墙拦截提示,点击“允许访问”

b) .uproject工程文件需要指定完整路径

c) 如果不指定-archivedirector参数,则打包出来的文件存放在:RichTapTestCloud\Saved\StagedBuilds

d) 其他命令行参数该怎么选择?可以参考在UE编辑器里打包时Output Log窗口的输出

【注】platform参数的可选值:Win32,Win64,HoloLens,Mac,XboxOne,PS4,IOS,Android,HTML5,Linux,LinuxAArch64,AllDesktop,TVOS,Switch,Lumin

6. 将插件打成zip包(将用于客户交付)

编写Python脚本:<插件版本号> 从RichTapTestCloud\Plugins\RichtapTools\RichtapTools.uplugin 这个文件中读出,这是个Json文件,须解析"VersionName"字段。

Zip包里的第一级子目录名字是RichtapTools。然后,把RichTapTestCloud\Plugins\RichtapTools目录下的这些文件放到RichtapTools之下:LibsResourcesSource三个文件夹以及里面的所有文件,以及RichtapTools.uplugin文件(换言之,除了Binaries和Intermediate两个临时文件夹之外的文件都需要打包)

Zip文件命名规则:RichtapTools_<插件版本号>_日期.zip

7. 邮件通知

将上述两个Zip文件的下载地址分别放入邮件正文

邮件标题须带上<插件版本号>


Android平台

继续上面的工作,仍然在Windows机器上执行Android打包(官网文档)。上述步骤#1~#4同。其他步骤:

  1. 安装Android Studio,推荐版本2022.3.1

  2. 打开Android Studio的SDK Manager,默认已经安装了版本34。需要修改工具链版本(重要!):

SDK Platforms页签下,勾选Android API 34,勾选 Android 12L (API Level 32)

SDK Tools页签下:

  • Android SDK Build-Tools,勾选34.0.0,勾选29.0.3

  • NDK (Side by side) ,勾选 21.4.7075529

  • Android SDK Command-line Tools,勾选8.0

【注】如果当前机器上已经装了高于32的SDK,也可以不卸载,则须在UE编辑器里指定使用android-32,设置路径为:Edit | Project Settings | Platforms | Android | Project SDK Override,将SDK API Level (specific version, 'latest', or 'mactchndk') 的值指定为android-32

3. 在UE的安装目录下,UE_4.27/Engine/Extras/Android,编辑SetupAndroid.bat,将所有set SDKMANAGER=的地方都改成set SDKMANAGER=%STUDIO_SDK_PATH%\cmdline-tools\8.0\bin\sdkmanager.bat

然后运行SetupAndroid.bat,看看是否一切正常!

4. 在UE编辑器里,打开项目设置:Edit | Project Settings | Platforms | Android SDK | SDKConfig,下述三项全部留空,即采用Android Studio的默认设置:

  • Location of Android SDK (the directory usually contains 'android-sdk-')
  • Location of Android NDK (the directory usually contains 'android-ndk-')
  • Location of JAVA (the directory usually contains 'jdk')

另外注意:在 Platforms | Android 设置页面,如果有红色的警示条,需要点击“Configure Now”、“Accept SDK License”。Google Play Services的配置不用管它。

5. 执行命令行进行打包:

RunUAT BuildCookRun -project="D:\Codes\richtap_pocs\UnrealEngine\RichTapTestCloud\RichTapTestCloud.uproject" -noP4 -platform=Android -targetplatform=Android -cookflavor=ASTC -clientconfig=Development -cook -allmaps -build -stage -pak -archive -archivedirectory="D:\MyUEGameAndroid"

打包完成后,将D:\MyUEGameAndroid目录下的.apk文件拷贝出来。

【注】cookflavor参数的三个取值:ASTC、ETC2和DXT,是压缩比从高到低依次排序的三种不同的纹理压缩格式。ASTC是最新格式,压缩比最高,但也意味着需要更高的计算资源,适用于Open GL ES 3.2+的设备。

6. 将.apk文件的下载地址放到邮件通知里


iOS平台

  1. 安装Xcode 14:https://developer.apple.com/xcode/

  2. 在App Store创建一个新的App:RichTapTestCloud

  3. UE4编辑器中,编辑菜单--项目设置--平台(ios)--单击Signing,将开发者证书和描述文件配置到项目中

  4. 执行命令行进行打包:

RunUAT BuildCookRun -nocompileeditor -installed -nop4 -project="/Users/zff/richtap_pocs/UnrealEngine/RichTapTestCloud/RichTapTestCloud.uproject" -package -ue4exe="/Users/Shared/Epic Games/UE_4.27/Engine/Binaries/Mac/UE4Editor.app/Contents/MacOS/UE4Editor" -compressed -ddc=InstalledDerivedDataBackendGraph -pak -prereqs -nodebuginfo -targetplatform=IOS -build -clientconfig=Development -utf8output -cook -stage -archive -archivedirectory="/Users/zff/MyUEGame"

5. 上传TestFlight


后记

在Windows、Android、iOS三个平台的打包流程中,因为Windows较简单,可以优先尝试。跑通Windows之后,再试Android;这一步可能最折腾!以下是一些问题集锦:

1. Windows打包时,报错:

UATHelper: Packaging (Windows (64-bit)): ERROR: Unable to instantiate module 'RichtapTools': System.IO.IOException: 文件“D:\Codes\richtap_pocs\UnrealEngine\RichTapTestCloud\Plugins\RichtapTools\Binaries\Win64\RichTapWinSDKDLL.dll”正由另一进程使用,因此该进程无法访问此文件。

UATHelper: Packaging (Windows (64-bit)): 在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

【解决办法】因为每次打包都会执行一个自定义的拷贝SDK DLL的操作,如果在Binaries目录下的这个DLL被UE编辑器占用,就会导致拷贝失败。需要将UE编辑器关闭,再将Plugins\RichtapTools\Binaries\Win64目录下这个DLL删除,然后重新打包即可。

2. Android打包:在UE编辑器里执行 File | Generate Visual Studio Project 或 Refresh Visual Studio Project,报错:UE_4.27\Engine\Binaries\DotNET\UnrealBuildTool.exe 已经存在的一个IO错误... 或者执行 File | Package Project | Android时,UE编辑器直接就crash了...

如果用命令行执行打包,可能看到的错误是:

ERROR: Platform Android is not a valid platform to build. Check that the SDK is installed properly.

【解决办法】确保Epic laucher和engine安装在同一个目录下。安装时如果都是默认路径,有可能一个安装在C:\Program Files下,一个安装在C:\Program Files (x86)下,这样就会有问题!!!需要卸载engine后重新安装。重装之后,记得重新修改和运行engine目录下的SetupAndroid.bat,还有系统环境变量Path里的设置。

3. Android打包出错:':app:compileDebugJavaWithJavac'

Build-tool 33.0.2 is missing DX at C:\Users\Jack\AppData\Local\Android\Sdk\build-tools\33.0.2\dx.bat

UATHelper: Packaging (Android (ASTC)): FAILURE: Build failed with an exception.

UATHelper: Packaging (Android (ASTC)): * What went wrong:

UATHelper: Packaging (Android (ASTC)): Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.

UATHelper: Packaging (Android (ASTC)): > Installed Build Tools revision 33.0.2 is corrupted. Remove and install again using the SDK Manager.

【解决办法】通过Android Studio的SDK Manager,将Build Tools的33版本卸载。UE 4.27最高只能用29版本

4. Android打包出错:':app:processDebugResources'、'app:assembleDebug'

UATHelper: Packaging (Android (ASTC)): aapt2.exe W 10-31 10:15:16 3208 22884 LoadedArsc.cpp:657] Unknown chunk type '200'.

UATHelper: Packaging (Android (ASTC)): > Task :app:processDebugResources

...

UATHelper: Packaging (Android (ASTC)): BUILD FAILED in 7s

UATHelper: Packaging (Android (ASTC)): ERROR: cmd.exe failed with args /c "D:\Codes\richtap_pocs\UnrealEngine\RichTapTestCloud\Intermediate\Android\arm64\gradle\rungradle.bat" :app:assembleDebug

【解决办法】原因是使用了过高版本的Android SDK(比如API Level 33或34等)。可以将高版本Android SDK卸载,仅保留Android 12(API Level 32)。或者在UE编辑器里Android平台设置Project SDK Override,指定为android-32

5. Android打包:在UE编辑里可以成功,在控制台窗口执行命令行也可以成功,唯独在Jenkins环境里执行报错:

ERROR: Platform Android is not a valid platform to build. Check that the SDK is installed properly.

【解决办法】参考这篇文章。需要在操作系统"环境变量"的系统变量里把ANDROID_HOME、NDK_ROOT、NDKROOT、JAVA_HOME再定义一遍(而不仅仅是用户变量)。如果还是不行,那就升级Jenkins版本吧,2.4+。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1166405.html

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

相关文章

3D医学三维技术影像PACS系统源码

一、系统概述 3D医学影像PACS系统&#xff0c;它集影像存储服务器、影像诊断工作站及RIS报告系统于一身,主要有图像处理模块、影像数据管理模块、RIS报告模块、光盘存档模块、DICOM通讯模块、胶片打印输出等模块组成&#xff0c; 具有完善的影像数据库管理功能&#xff0c;强大…

分享77个工作总结PPT,总有一款适合您

分享77个工作总结PPT&#xff0c;总有一款适合您 PPT下载链接&#xff1a;https://pan.baidu.com/s/1qdoA_Ylbxkmp2Qkh9VDw8A?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 水彩插画风幼儿说课PPT模板 舞龙舞狮文化传承通…

FPGA高端项目:图像采集+GTP+UDP架构,高速接口以太网视频传输,提供2套工程源码加QT上位机源码和技术支持

目录 1、前言免责声明本项目特点 2、相关方案推荐我这里已有的 GT 高速接口解决方案我这里已有的以太网方案 3、设计思路框架设计框图视频源选择OV5640摄像头配置及采集动态彩条视频数据组包GTP 全网最细解读GTP 基本结构GTP 发送和接收处理流程GTP 的参考时钟GTP 发送接口GTP …

官媒代运营:质疑代运营,理解代运营,成为代运营,超越代运营

官媒代运营 随着互联网的发展&#xff0c;品牌传播变得越来越重要。而代运营作为一种专业的、高效的品牌传播方式&#xff0c;逐渐受到企业的青睐。不过&#xff0c;很多人对代运营持质疑态度&#xff0c;认为它只是简单的外包服务。但实际上&#xff0c;代运营远不止于此&…

CV计算机视觉每日开源代码Paper with code速览-2023.11.1

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构】Battle of the Backbones: A Large-Scal…

JVM调优工具详解及调优实战(1)

文章目录 1. 前提准备2. Jmap3. Jstack4. Jinfo5. Jstat&#xff08;重点&#xff09;6. 案例分析 1. 前提准备 任意启动一个web项目&#xff0c;这里我已经启动好了 2. Jmap map命令用于生成堆转储快照&#xff0c;有时候也成为heapdump或者dump文件。Jmap不仅仅可以获取d…

易语言软件定制开发爬虫模拟协议填写自动化办公软件开发多人团队

在当今快速发展的信息化时代&#xff0c;企业对于高效、自动化的软件需求日益增长。而易语言软件定制开发爬虫模拟协议填写自动化办公软件开发多人团队&#xff0c;正是为了满足这一需求而诞生的。 一、团队背景 技术顾问、维&#xff1a;Daxiami6789 易语言软件定制开发爬虫模…

京东数据平台:2023年Q3季度黄金市场数据分析

继9月国内黄金市场持续上涨后&#xff0c;进入10月中下旬后&#xff0c;黄金行情再度反转&#xff0c;多家品牌金饰价格再次突破600元/克&#xff0c;达到611元/克。 今年以来&#xff0c;黄金行情不断走俏&#xff0c;销售市场也有明显增长。根据鲸参谋平台的数据显示&#xf…

geoserver在wms服务查询时中文乱码问题

一、geoserver上的问题 在服务查询时遇到了编码问题&#xff0c;首先就是确认数据存储位置的数据是否采用了GBK编码&#xff0c;排除geoserver的问题。 二、数据上的问题 一般高版本的arcgis或者arcgispro导出来shp的dbf文件在excel里打开中文都是乱码&#xff0c;而这个乱…

瑞明达:聚“追梦”之力,共圆“经济梦”

矢志不渝&#xff0c;笃行不怠&#xff0c;争当“一心一意同国行”的无悔“追梦人”。过往几年&#xff0c;国际形势风高浪急&#xff0c;国内环境复杂多变&#xff0c;在后疫情时代、经济恢复压力等多种超预期的因素冲击下&#xff0c;瑞明达团队全面贯彻落实国家发展政策&…

Graph 部分复习(考试向)

Graph Review OverallPage RankSpam FarmBrandes’ AlgorithmSpectral ClusteringInfuence Maxization- Independent cascade model Overall Page Rank 对于某个互联网网页A来说&#xff0c;该网页PageRank的计算基于以下两个基本假设&#xff1a; 边&#xff08;Link&#xf…

【信息安全原理】——IP及路由安全(学习笔记)

目录 &#x1f552; 1. IPv4协议及其安全性分析&#x1f552; 2. IPsec&#xff08;IP Security&#xff09;&#x1f558; 2.1 IPsec安全策略&#x1f564; 2.1.1 安全关联&#xff08;Security Association, SA&#xff09;&#x1f564; 2.1.2 安全策略&#xff08;Security…

【数据结构】单双链表超详解!(图解+源码)

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 数据结构解析 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️链表概念&#x1f324;️链表的分类☁️单向或双向链表☁️带头或不带…

如何规范嵌入式软件开发

键盘的诱惑一直是所有太多嵌入式开发的失败。编写代码很有趣。很好 我们觉得我们正在该项目上取得进展。我们的老板通常不擅长构建固件的细微差别&#xff0c;他们赞成批准&#xff0c;微笑着&#xff0c;因为我们显然正在做有价值的事情。 作为从事基于汇编语言的系统的年轻开…

克隆音-自用教程

硬件准备: 8g以上显存的显卡(3060Ti以上)、16g以上内存、cpu是x86_64架构且支持avx2指令集、电源500w以上、1T的磁盘 free -g看内存 cat /proc/cpuinfo | grep avx2查指令集 资源准备 磁盘扩容 我扩大根目录 sudo lvextend -l 100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv …

坏死性凋亡+预后模型+实验,简单思路也能拿下7+。可升级

今天给同学们分享一篇坏死性凋亡预后模型实验的生信文章“Analysis of necroptosis-related prognostic genes and immune infiltration in idiopathic pulmonary fibrosis”&#xff0c;这篇文章于2023年3月27日发表在Front Immunol期刊上&#xff0c;影响因子为7.3。 IPF是一…

Vulkan Buffer 的构造的坑

Vulkan Buffer 的构造的坑 1. DeviceSize 和 memcpy 的大小是数组的数据总量的大小&#xff0c;而不是数组的元素个数 假设你读取模型之后的顶点和索引数组是这样的 std::vector<float> vertices; std::vector<uint16_t> indices;那么你传给 DeviceSize 和 m…

PerfectPixel 插件,前端页面显示优化工具

1.简介 PerfectPixel 插件是一款适用于 Chrome 浏览器的网页前端页面显示优化工具&#xff0c;该插件能够帮助开发人员和标记设计人员在开发时将设计图直接加载至网页中&#xff0c;与已成型的网页进行重叠对比&#xff0c;以规范网页像素精度 作为一款可以优化前端页面显示的…

AI AIgents时代-(六.)OpenAgents

最近Agents框架层出不穷&#xff0c;我们这次选择了OpenAgents&#xff0c;一个声称在Interface和Environment上全方面超越AutoGPT&#xff0c;OpenInterPreter等框架&#x1f92f; 接下来我们逐步拆解OpenAgents的独特之处&#xff01;OpenAgents开发的LLM-powered代理XLang集…

界面组件DevExtreme v23.1 —— UI模板库更新新功能

在DevExtreme在v22.2版本中附带了针对Angular、React和Vue的新UI模板库&#xff0c;这个新的UI模板库包含多个响应式UI模板&#xff0c;您可以将其用作业务应用程序的起点&#xff0c;模板包括类似CRM的布局、仪表盘、身份验证表单等。在这篇文章中&#xff0c;我们将看看在v23…