找回密码
 立即注册
查看: 528|回复: 0

UE部署到Android以及杂症的解决

[复制链接]
发表于 2023-3-21 13:09 | 显示全部楼层 |阅读模式
第一次尝试部署的读者可以顺着阅读,本文中针对官方文档中遗漏的重要信息做了补充 ,这些遗漏的部分会直接导致部署失败。 如果是部署过程中遇到麻烦的朋友可以直接跳到 “4.SDK额外的调整”和“7.其他一些可能碰到的问题” 部分看看能不能找到对应的解决方法。
UE版本4.27  手机Android版本10  手机型号Vivo Nex S  操作系统Window 10
1. 将手机设置成“开发者模式”和“USB调试模式”

这一步是为了能将游戏包体部署到手机上。只有打开后才能让电脑和UE识别到插入电脑上的设备 。插入USB。选择“一律允许使用这台计算机进行调试”。每台手机的实际设置方法不同,需要自行查找。

2. 安装Android Studio

1. 到官网下载:
(需要科学上网) 点击网页最下方的 “老子我同意这些条款” 后就能看到版本下载列表了。------

2. 如下图,本文使用的是UE4.27,下载官方推荐的Android Studio 4.0 版本。------





不同的UE版本对应不同的IDE版本和NDK版本


  • 安装路径一定要使用安装在C盘的默认路径,否则后面UE中的批处理文件会识别不出SDK安装在哪里 (默认路径为 C:\Program Files\Android\Android Studio)
  • 第一次打开会问你要不要Import Android Studio Settings。选择Do not import settings。



安装时有可能会弹出类似连接不到SDK add-on 服务等的警告,可以选择Cancel无视它继续安装

3. 选择Custom安装,然后后面的安装全都选择默认路径 ------


3.配置Android SDK

1. 安装好之后,打开Android Studio,打开SDK Manager。------




⬇如下图,在SDK Tools中勾选 Android SDK Command-line Tools。然后Apply,安装之。没有这个工具会导致运行后面引擎中的配置批处理文件时出错。如果你没看见这个选项,确保网络连接是不是正常的。




在SDK Tools中勾选 Android SDK Command-line Tools。然后Apply,安装之。没有这个工具会导致运行后面引擎中的配置批处理文件时出错。如果你没看见这个选项,确保网络连接是不是正常的。


*安装完成后,最好是重新启动一次电脑,否则下一步有可能会失败。

2. 批处理相关。找到你的引擎版本中的 SetupAndroid.bat 文件并运行之,打开你的引擎安装目录,位置是 \Engine\Extras\Android   ------




↓ 下图,如果执行批处理文件弹出找不到sdkmanager.bat 的提示的话,就需要手动设置一下了:




这时候需要直接修改SetupAndroid.bat文件中对于sdkmanager.bat的查找路径。使用记事本或者其他文本编辑器打开批处理文件,下图红框的部分就是他会试图寻找sdkmanager.bat这个批处理的路径 :




可以看到批处理会试图在两个地方寻找我们的sdkmanager,实际上我们只需要提供一个确定的路径就可以了。上一步在安装了 Android SDK Command-line Tools 之后,
将上下红框中的路径替换为(注意这是我的路径,找到你的用户名的路径):
C:\Users\Administrator\AppData\Local\Android\Sdk\cmdline-tools\latest\bin\sdkmanager.bat
修改好之后重新运行SetupAndroid.bat ,sdkmanager.bat这个批处理文件就能被找到了。




运行成功后会提示“请按任意键继续” 。


(如果还是提示找不到sdkmanager.bat,一定要保证好你提供的路径是对的,或者重启一下。)
*SetupAndroid.bat这个批处理的主要作用是:

  • 确认AndroidStudio的路径
  • 确认SDK、NDK、JDK的路径并把它们配置到UE配置文件里
  • 通过AndroidStudio中的sdkmanager,来下载(或确认是否有)此引擎版本所需的:SDK Platform版本;NDK版本;CMake版本;build-tools版本

3. 在C:\Users\Isaac\android 文件夹中(注意这是我的路径,找你自己的路径),新建一个 repositories.cfg 文件(第一次没有这个文件UE打包将无法成功)------


4.针对SDK配置的额外调整

我们需要对SDK进行一些额外的调整,保证引擎能够顺利部署,很多时候部署失败的原因就是使用了错误的SDK配置。
如果我们打开SetupAndroid.bat , 在第75行我们可以看到:
call "%SDKMANAGER%" "platform-tools" "platforms;android-28" "build-tools;28.0.3" "cmake;3.10.2.4988404" "ndk;21.4.7075529" 实际上这段话表示的是此版本引擎发布Android所需组件的最低编译要求,批处理文件会按照这几项去要求Android Studio下载UE所需的组件,按照这段话,默认给你下载的配置是这样的:
SDK Platform:android-28  
build-tools:28.0.3
cmake:3.10.2.4988404
ndk:21.4.7075529
但实际上这会造成一些问题,因为不同的时间去下载Android Studio,联网推荐给你预安装的SDK版本是不一样的,并且Android Studio每个版本所携带的Android Gradle plugin的版本也不同,而不同的Android Gradle plugin所要求的最低build-tools版本也不相同。比如UE4.27推荐的Android Studio 4.0携带的Android Gradle plugin版本是4.0.0,此版本Gradle要求的最低build-tools版本是29.0.2 ,那么按照UE给你预装的28.0.3版本就无法正常部署。
所以在这里我使用的配置是:
SDK Platform:android-32  
build-tools:32.0.0 (额外再多下载一个30.0.0备用) (注意,如果默认安装有32.1.0-rc1或者更新的版本请将其移除掉)
cmake:3.10.2.4988404
ndk:21.4.7075529


接着打开C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\30.0.0,将文件夹中的dx.bat 和 lib 文件夹中的 dx.jar 复制到 C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\32.0.0 对应的文件夹里。(build-tools从版本30之后把dx的方式去掉了,UE需要这个,没有的话必定发布失败)
笔者还试过这两种配置,也是能正常编译的:
SDK Platform:android-30  
build-tools:30.0.0
cmake:3.10.2.4988404
ndk:21.4.7075529

SDK Platform:android-32  
build-tools:30.0.0
cmake:3.10.2.4988404
ndk:21.4.7075529
*但是要注意,UE编译时会自动使用最新版的Build-tools,如果你同时装有32和30,但是又想使用30的话,得把32移除掉。

5.UE中的操作

到此时UE外部的配置就已经基本完成了,接下来打开UE
  1. 在ProjectSetting-SupportPlatforms中确保Android被勾选  ------



  2. Platforms的Android项中,确保 “Accept SDK License”已经确认,并且“Platform files are writable”,需要点击ConfigureNow按钮  ------





  3. Platforms的Android SDK项中,前三个location在之前运行过AndroidSetup.bat的时候已经帮你在缺省项中设置好了。可以不需要理会。此页面中的各项解释如下图:------


SDK API Level默认值是latest,这会让UE自动去寻找你安装的最高版本的Android API 版本。如果你需要某个指定的版本,例如API Level为32的版本,则可以输入android-32。在这里我的API要使用的level是32,正好是我机子上最新的API版本,所以就填lastest就行。
NDK API Level 就使用UE默认的 android-21 就行
*这两条信息的的引擎默认值位于BaseEngine.ini中
[/Script/AndroidPlatformEditor.AndroidSDKSettings]
SDKAPILevel=latest
NDKAPILevel=android-21

6.打包或者部署

  插上数据线,如果你的手机连接到PC正常的话,UE会直接读出你的设备,你可以选择直接在设备上LaunchGame,或者是进行打包。





这几种都能打出Android包,只是使用的纹理压缩方式不一样。ASTC或者ETC2绝大多数手机的硬件都能兼容。第一种是使用多种压缩但是包体会变得过大。具体文章可以参考  https://developer.nvidia.com/astc-texture-compression-for-game-assets



打包出的文件夹里有install批处理文件,如果你的手机连接着电脑并且开着调试模式,执行此批处理将会自动将游戏安装到手机上。(我这里的打包的时候选择了带OBB,所以会有一个OBB文件)

7.其他一些可能碰到的问题


  • 如果你的设备连接到PC上但是没有出现的话,检查一下开发者模式和USB调试模式是否已经正确开启。还有一个可能是你的数据线不能正常传输数据,可以尝试换一条。
  • 手机处于黑屏锁定状态时直接在手机上Launch Game,有时候会遭遇错误提示说设备拒绝了安装,所以尽量让设备处于亮屏非锁定的状态。
  • 如果打包时碰到提示 “Failed to create valid OBB. OBB may have exceeded 2 GiB limit”,可以在ProjectSetting里搜索"Allow large OBB files" 然后设置为真
  • 打包时如果遇到如下的Error:  PackagingResults: Error: cmd.exe failed with args /c “XXXXXX” :app:assembleDebug    大概率是BuildTool的版本问题,可以参考一下上面我的配置重新设置一下。
  • 曾经遭遇过一次打包失败是由于AndroidStudio的某个插件无法启动导致整个Gradle无法拉起,具体表现为AndroidStudio启动后弹出报错信息无法启动(吐槽),解决方法是卸载AndroidStudio重装。

相关文章链接:
https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing/Mobile/Android/Setup/AndroidStudio/
https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing/Mobile/Android/GettingStarted/
Using ASTC Texture Compression for Game Assets:https://developer.nvidia.com/astc-texture-compression-for-game-assets
Android Gradle plugin各版本对应的Gradle版本和build-tools版本官方文档: https://developer.android.com/studio/releases/gradle-plugin?hl=zh-cn

--完--

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-27 22:19 , Processed in 0.134485 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表