前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UE4如何在Linux下编译一个Android

UE4如何在Linux下编译一个Android

原创
作者头像
i0gan
修改2021-07-01 10:16:06
1.3K0
修改2021-07-01 10:16:06
举报
文章被收录于专栏:I0gan

这里是在linux上进行编译一个android程序。

参考文档: https://docs.unrealengine.com/4.26/en-US/SharingAndReleasing/Linux/IntermediateLinuxDeveloper/AndroidOnLinux/

UE4使用了个特定的安卓SDK,叫做CodeWorks,官方推荐是不使用原来Android的SDK,采用CodeWorks原因是更好的兼容UE4。

CodeWorks安装

下载codeworks

https://developer.nvidia.com/codeworks-android

需要注册一个nvida帐号才能下载,下载版本为Ubuntu的。

进入引擎目录

代码语言:javascript
复制
mkdir -p Engine/Extras/AndroidWorks

将刚刚下载的CodeWorks-1R8-linux-x64_b181.run放入上面创建目录下。

安装JDK8

在安装之前也要关闭下UE4引擎。

也要安装一下JDK8。

下载jdk8

下载的时候,也需要登录下Orcale

我下的是jdk-8u291-linux-x64.tar.gz

配置

将上面两个下载的文件复制到Engine/Extras/AndroidWorks/Linux下

进入UE4安装目录后

代码语言:javascript
复制
cd Engine/Extras/AndroidWorks

解压jdk8

代码语言:javascript
复制
tar -xzf jdk-8u291-linux-x64.tar.gz 

进入解压生成的目录

代码语言:javascript
复制
pwd
/home/i0gan/programs/UnrealEngine/4.26.2/Engine/Extras/AndroidWorks/jdk1.8.0_291

执行pwd命令查看下当前JAVA_HOME路径。

配置jdk8(好像没有用,可以跳过)

在自己的.bashrc或者.zshrc中设置下java与JAVA_HOME

由于我的是zsh,修改的是.zshrc,若是bash的话修改.bashrc

在文件中加入如下

代码语言:javascript
复制
export JAVA_HOME=/home/i0gan/programs/UnrealEngine/4.26.2/Engine/Extras/AndroidWorks/jdk1.8.0_291
export PATH=$PATH:/home/i0gan/programs/UnrealEngine/4.26.2/Engine/Extras/AndroidWorks/jdk1.8.0_291/bin

重新开个终端测试

代码语言:javascript
复制
echo $JAVA_HOME
/home/i0gan/programs/UnrealEngine/4.26.2/Engine/Extras/AndroidWorks/jdk1.8.0_291

运行CodeWorks

代码语言:javascript
复制
chmod + CodeWorks-1R8-linux-x64_b181.run
./CodeWorks-1R8-linux-x64_b181.run

发现提示必须采用Ubuntu来运行,这只是涉及安装软件而已,开个Ubuntu18的虚拟机安装就可以了。

在ubuntu中点击运行后,不断下一步,不需要安装jd8。需要注意的是,需要得开代理来运行下载,不然下不动。

进入页面如下

这里有个安装和下载目录,默认即可。

这里选择全部,也就是Full下载模式,点击下一步,接受所有LISENCE就可以了。需要注意的是,需要得开代理来下,不然下不动。

下载完毕后在家目录得到

将它复制到主系统的引擎目录下。

代码语言:javascript
复制
mv ~/NVPACK ./Engine/Extras/AndroidWorks  # 这里是在引擎目录下操作的

创建Android项目

采用设置好环境变量的bash启动UE4。

创建一个安卓工程项目。

这里我以下面这个为例子

想要编译出安卓程序,得修改下设置。

Edit->Project Settings -> Android

若报错Engine/Source/ThirdParty/Android/package.xml找不到,这是由于前面我们全删了。

下载xml

下载完毕后将该文件放置在需要文件目录那就行了。

指定SDK和NDK还有JDK路径。

在打包之前要得对资源进行烘培,烘培的时间太长了。。。然后打包报错如下

代码语言:javascript
复制
UATHelper: Packaging (Android (ETC2)): RunUAT ERROR: AutomationTool was unable to run successfully.
PackagingResults: Error: AutomationTool was unable to run successfully.
PackagingResults: Error: Invalid Arguments

搜了半天,什么也没找到解决方案,但我重新将source文件还原,没有报错了,是因为以来的AutomationTool这些工具在该目录下,所以找不到自然报错了。

重新运行./Setup.sh,下载之后,某些.so文件缺失。

没办法编译完整的引擎,只好格式化硬盘重新装引擎了。

安装编译花了半天时间,在这段时间内吧lgx-psp项目移置为gsky游戏服务器,还是挺不错,github链接: https://github.com/pwnsky/gsky

编译完毕引擎启动,发现按照官方文档来是不行的,下载的ndk有点老了,编译报错

官方文档是针对与4.22的,咱们这个4.26。需要ndk版本为 r21- r23的,还好我电脑上有21的ndk,直接调至一下ndk路径就可以了。

这个编译速度真的是慢到了极点。。。。相对于unity3d。。。

编译太大了,磁盘爆满了。。。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CodeWorks安装
    • 安装JDK8
    • 配置
    • 创建Android项目
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档