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

这篇具有很好参考价值的文章主要介绍了手把手教你:UE 4.27插件项目的自动化打包(Windows、Android、iOS统统搞定)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Windows平台

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

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

ue android plugin,游戏,UE,Unreal Engine,CICD,打包

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+。文章来源地址https://www.toymoban.com/news/detail-771376.html

到了这里,关于手把手教你:UE 4.27插件项目的自动化打包(Windows、Android、iOS统统搞定)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【UE Unreal Camera】【保姆级教程二】【包含源代码】手把手教你通过UE获取摄像头帧数据

    【UE Unreal Camera】【保姆级教程二】【包含源代码】手把手教你通过UE获取摄像头帧数据

       【UE Unreal Camera】【保姆级教程二】【包含源代码】手把手教你通过UE获取摄像头帧数据~ c6ebbaddb1aff.png)   在UE 摄像头教程一中,我们已经通过Unreal自带的媒体播放器打开了摄像头,并且将摄像头的数据展示在了游戏画面中。当然这只是最基本的功能,一般情况下,我们

    2024年02月01日
    浏览(8)
  • 手把手教你安装Zookeeper 及可视化插件ZooInspector、ZKUI

    手把手教你安装Zookeeper 及可视化插件ZooInspector、ZKUI

    环境预备:请确保JDK正确安装 我们先进入 官网发布页面 根据推荐,推荐直接使用最近的稳定版本,此处是3.7.1,点击进入下载详情页 我们下载下来的应该是个压缩包,形如 apache-zookeeper-3.7.1-bin.tar.gz ,直接解压即可 进入 D:apache-zookeeper-3.7.1-binapache-zookeeper-3.7.1-binconf 目录,将

    2024年02月11日
    浏览(9)
  • 《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)

    《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)

    1.简介 前面几篇基础系列文章,足够你迈进了Selenium门槛,再不济你也至少知道如何写你第一个基于Java的Selenium自动化测试脚本。接下来宏哥介绍Selenium技巧篇,主要是介绍一些常用的Selenium方法或者接口(API),通过这些接口(API)或者方法的具体操作,达到能够熟练使用

    2024年02月03日
    浏览(5)
  • 手把手教你从0搭建SpringBoot项目

    手把手教你从0搭建SpringBoot项目

    用到的工具:idea 2021、Maven 3.6.3、postman 框架:SpringBoot、Mybatis 数据库:Mysql8.0.30 安装配置参考博文 注意: 1.下载maven注意idea与Maven版本的适配: 2.为了避免每次创建项目都要改Maven配置,可以修改idea创建新项目的设置 二、安装数据库 mysql8安装参考博文 **注意:**连接不上往

    2024年02月03日
    浏览(11)
  • 看看Angular有啥新玩法!手把手教你在Angular15中集成报表插件

    看看Angular有啥新玩法!手把手教你在Angular15中集成报表插件

    摘要:本文由葡萄城技术团队于博客园原创并首发。葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 Angular框架(以下简称“Angular”)作为一款由谷歌开发的Web应用程序框架,其强大的依赖注入系统、可重复使用的模块化开发理念和响应式编程模式等特

    2024年02月08日
    浏览(10)
  • 图文结合手把手教你创建SpringCloud项目

    图文结合手把手教你创建SpringCloud项目

    前言 Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务注册、服务发现、网关、路由、链路追踪等。Spring Cloud 并不是重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。也

    2024年04月25日
    浏览(13)
  • 手把手的教你使用Toolkit插件在诗情画意中完成AI诗朗诵

    手把手的教你使用Toolkit插件在诗情画意中完成AI诗朗诵

    本文分享自华为云社区《【云驻共创】手把手的使用Toolkit插件在诗情画意中完成AI诗朗诵》,作者: 红目香薰。 云原生时代,开发者们的编程方式、编程习惯都发生了天翻地覆的变化,大家逐渐地习惯在云端构建自己的应用。作为新一代的开发者们,如何更快速了解云,学

    2024年04月14日
    浏览(18)
  • 手把手教你将项目部署到服务器!

    手把手教你将项目部署到服务器!

    一、导入centos7虚拟机: 打开VMWare,点击“打开虚拟机”,选择centos7.ova之后,选择存储路径: 点击导入: 选择“不再显示此消息”,点击“重试”按钮: 点击“编辑虚拟机设置”,修改处理器、内存、硬盘等信息后,启动 按Ctrl+Alt键可以切换到windows下。 启动成功后,输入

    2023年04月20日
    浏览(9)
  • 手把手教你搭建 Webpack 5 + React 项目

    手把手教你搭建 Webpack 5 + React 项目

    在平时工作中,为减少开发成本,一般都会使用脚手架来进行开发,比如 create-react-app 。脚手架都会帮我们配置好了 webpack,但如果想自己搭建 webpack 项目要怎么做呢?这边文章将介绍如何使用 webpack 5 来搭建 react 项目,项目地址在文末。 1.1 Webpack 的好处 试想在不使用任何打

    2024年02月08日
    浏览(16)
  • 手把手教你用git上传项目到GitHub

    手把手教你用git上传项目到GitHub

    github的官方网址:https://github.com ,如果没有账号,赶紧注册一个。 点击Sign in进入登录界面,输入账号和密码登入github。 创建成功可以看到自己的仓库地址,如此,我的远程免费的仓库就创建了。它还介绍了github仓库的常用指令。这个指令需要在本地安装git客户端。 Git是目

    2024年01月18日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包