Android开发参考

如何安装不同的Android SDK、设置环境变量,以及使用纹理格式。

Windows
MacOS
Linux

总览

Android开发参考页面中包含高阶指导,讲解需要在UE4 Android项目开发电脑上安装的诸多软件组件和进行的各种系统设置。

Android SDK要求

以下是在UE4中进行Android游戏开发的最新需求:

组件

环境变量

  • Android SDK

  • Java开发套件

  • Ant脚本编写工具

  • Android NDK

  • ANDROID_HOME

  • JAVA_HOME

  • ANT_HOME

  • NDKROOT

安装组件

获取组件的方法有几种。如果已安装其中一个组件,请查阅对应部分了解额外要求:

CodeWorks for Android 1R7u1

CodeWorks for Android 1R7u1(来自NVIDIA)是Android开发的一站式服务。将其安装后即可满足Android开发的所有要求。

CodeWorks for Android 1R7u1的安装程序包含在Windows版虚幻引擎4中。其路径如下:

[ENGINE INSTALL LOCATION]\Engine\Extras\Android\CodeWorksforAndroid-1R7u1-windows.exe

重要组件如下:

  • Android SDK(基础、平台工具、编译工具)

  • Android 4.4.2 (API 19) - SDK平台

  • Android 5.0.1 (API 21) - SDK平台

  • Android 6.0.0 (API 23) - SDK平台

  • Android N (API 24) - SDK平台

  • Android SDK支持库

  • Android工具链

    • Android NDK 12b

    • Java SDK

    • Apache Ant

    • USB驱动

    • 可选安装

      • Gradle

  • 开发者工具(可选安装)

  • Visual Studio版Nsight Tegra

  • USB驱动

如使用默认安装套件,将安装一套较少的组件。自定义安装便可添加更多项目(如分析工具等)。注意:在安装过程中, 一两个子安装程序可能会失去响应,但其最终会完成进程。安装时长约30到45分钟。如果未计划编写代码, 则可以选择 自定义,只安装SDK、Ant和Java(跳过NDK和Nsight调试器的安装),这是完成安装的最快方法。CodeWorks for Android 1R7u1的Nsight部分用于在设备上调试Android游戏。 不需要对C++代码进行编译。

TADPSetup.png

CodeWorks for Android 1R7u1(来自NVIDIA)是Android开发的一站式服务。将其安装后即可满足Android开发的所有要求。

CodeWorks for Android 1R7u1的安装程序包含在Mac版虚幻引擎4中。其路径如下:

[引擎安装路径]/Engine/Extras/Android/AndroidWorks-1R7u1-osx.dmg

重要组件如下:

  • Android SDK(基础、平台工具、编译工具)

  • Android 4.4.2 (API 19) - SDK平台

  • Android 5.0.1 (API 21) - SDK平台

  • Android 6.0.0 (API 23) - SDK平台

  • Android N (API 24) - SDK平台

  • Android SDK支持库

  • Android工具链

    • Android NDK 12b

    • Java SDK

    • Apache Ant

    • USB驱动

    • 可选安装

      • Gradle

  • 开发者工具

  • Visual Studio版Nsight Tegra(可选安装)

  • USB驱动

如使用默认安装套件,将安装一套较少的组件。 自定义安装便可添加更多项目(如分析工具等)。注意:在安装过程中,一两个子安装程序可能会失去响应,但其最终会完成进程。部分电脑的安装时长可达30到45分钟。 如果未计划编写代码,则可以选择 自定义,只安装SDK、Ant和Java(跳过NDK和Nsight调试器的安装),这是完成安装的最快方法。CodeWorks for Android 1R7u1的Nsight部分用于在设备上调试Android游戏。因此不需要编译C++代码。

TADP_Mac_OS.png

环境变量

如果未用UE4安装程序来安装CodeWorks for Android 1R7u1,则需要验证部分环境变量是否已正确设置。

完成安装后(在"系统控制"面板中设置环境变量、或安装CodeWorks for Android 1R7u1), 需要重新启动编辑器和Launcher应用程序。进行此操作的原因是Windows应用程序将保存环境变量,并在启动时将旧版本传至应用程序。

如果仍然出现Android SDK未正确安装的消息,建议重新启动电脑。

设置环境变量的方法:

  • 右键点击 计算机 图标或按下键盘上的 Windows-Break 组合键。

  • 选中左边的 高级系统设置

  • 点击 环境变量...

  • 针对每个变量(如下):

    • 在至少一个列表中(系统或用户)查找能进行设置的环境变量(从下方进行选择)。

    • 如未找到,则点击"系统"旁边的 新建...

    • 输入命名和值。

    • 点击 确定

  • 点击 确定 关闭 环境变量 窗口。

下面是所需的变量,以及其应指向的位置:

ANDROID_HOME

  • 将其设为安装Android SDK的目录;如果安装的是ADT,则为 sdk 目录。

  • 其必须包含一个名为 platform-tools 的目录。

JAVA_HOME

  • 将此设为JDK的安装路径。其名称应类似于 jdk1.8.0_121

  • 其必须为一个称为 bin,且其中包含 javac.exe 的目录。

ANT_HOME

  • 将此设为解压Ant的路径。

  • 其必须为一个称为 bin,且其中包含 ant.bat 的目录。

NDKROOT

  • 将此设为解压NDK的路径。其名称应类似于 android-ndk-r11c

  • 其必须包含一个名为 ndk-build.cmd 的文件

如果未安装CodeWorks for Android 1R7u1,则需要验证部分环境变量是否已正确设置。

完成安装后(编辑.bash_profile文件、或安装CodeWorks for Android 1R7u1),需要重新启动编辑器和Launcher应用程序。

要设置环境变量,需要在主目录中编辑 .bash_profile 文件。 文件在查找器中处于隐藏状态,因此需要使用Terminal将其打开进行编辑。 如不熟悉Unix终端命令,请执行以下操作。

  1. 在/Applications/Utilities中打开 Terminal应用程序

  2. 输入 touch .bash_profile 创建文件(如尚无文件存在)。

  3. 输入 open .bash_profile 将文件在文本编辑器中打开。

  4. 将以下行复制到文件(替换SDK和工具的安装路径)并保存:

    • export ANDROID_HOME="/Users/epicgames/Devel/NVPACK/android-sdk-macosx"

    • export NDKROOT="/Users/epicgames/Devel/NVPACK/android-ndk-r12b"

    • export ANT_HOME="/Users/epicgames/Devel/NVPACK/apache-ant-1.8.2"

下面是所需变量的命名,以及其应指向的位置:

  • ANDROID_HOME

    • 将其设为安装Android SDK的目录;如果安装的是ADT,则为SDK目录。

    • 其必须包含一个名为platform-tools的目录。

  • ANT_HOME

    • 将此设为解压Ant的路径。

    • 其必须为一个称为bin的目录,内有一个名为ANT的文件。

  • NDKROOT

    • 将此设为解压NDK的路径,然后查找类似于 android-ndk-r12b 的内容。

    • 其必须包含一个名为 ndk-build 的文件。

Android提示和技巧

如果没有在 启动 菜单中看到设备,可进行以下尝试:

  • 等候数秒再次查看,因为连接设备的背景扫描可能会花费一点时间。

  • 确认USB调试连接正常工作。

  • 打开命令窗口(按下 Windows+R 组合键并运行 cmd.exe

    • 输入以下命令:adb devices

    • 如未看到设备列出,则说明USB驱动未正确安装。驱动的安装方法取决于Android设备的模型。可上网搜索设备模型和USB驱动, 然后进行安装。

    • 此外需要启用设备的开发者模式,并启用USB调试。请参见Android开发者硬件设备使用指南 中的详细内容(尤其注意第2点和第3点)。

    • 之后须确保 adb devices 命令能正常使用;缺少此命令引擎将无法对Android设备进行任何操作。

如果设备已在"启动"菜单中,但部署到设备时受阻,原因很可能是设备未获得与电脑进行对话的权限。点击进度条中的 显示日志(Show Log) 行 即可看到正在调用 adb uninstall 的上一行。

  • 如上所述,使用 cmd.exe 运行 adb devices 命令。

  • 如设备已在列表中但显示为未授权,则说明需要让设备询问是否对PC进行授权。

  • 显示询问可能需要拔插设备连接线。

  • 建议勾选 固定允许(Always allow) 勾选框。

如果没有在"启动"菜单中看到设备,则可进行以下尝试:

  • 等候数秒再次查看,因为连接设备的背景扫描可能会花费一点时间来对设备进行注册。

  • 确认USB调试连接正常工作。

  • 打开Terminal应用程序并尝试以下操作。

    • 在终端中输入以下命令:adb devices

    • 如未看到设备列出,则说明USB驱动未正确安装。驱动的安装方法取决于Android设备的模型。可上网搜索设备模型和 USB驱动,然后进行安装。

    • 此外需要启用设备的开发者模式,并启用USB调试。请参见Android开发者硬件设备使用指南 中的详细内容(尤其注意第2点和第3点)。

    • 之后须确保 adb devices 命令能正常使用;缺少此命令引擎将无法对Android设备进行任何操作。

如果设备已在 启动菜单 中,但部署到设备时受阻,原因很可能是设备未获得与Mac进行交互的权限。 点击进度条中的 显示日志(Show Log) 行,即可看到上一行正在调用 adb uninstall,然后执行以下操作。

  • 打开Terminal应用程序并运行 adb devices 命令。

  • 如设备已在列表中但显示为未授权,则说明需要让设备询问是否对Mac进行授权。

  • 建议勾选 固定允许(Always allow),使Mac一直能与此设备进行对话。

Android纹理格式

Android设备的规格并非完全相同。具体而言,共有4种不同类型的渲染硬件。它们分别支持不同的压缩纹理格式。

格式

描述

ETC1

所有Android设备均支持,但无法压缩透明纹理(其保存为未压缩)。如果需要透明度来获得更好的压缩,建议使用RGB和单独的透明纹理。

ETC2

所有OpenGL 3.x类设备均支持,并支持透明度压缩。

ATC

Qualcomm Adreno GPUs支持,并支持透明度压缩。

DXT

Nvidia Tegra GPUs支持,并支持透明度压缩。

PVRTC

PowerVR GPUs支持,并支持透明度压缩。

ASTC

最新的纹理压缩格式,可指定块大小来进行质量控制,支持透明度压缩。可在部分设备上使用,为Vulkan Level 1所必需。

部署或打包Android游戏时,数据将被转换为Android设备可使用的格式(此过程称之为"烘焙")。 由于不同设备支持不同的压缩格式,因此要选择进行烘焙的格式。在 启动(Launch)打包(Package) 子菜单中可以看到,可用格式后带有 Android 字样。

首个(Android)实际上将接受所有格式,并将其装入烘焙后的文件包。此操作耗时较长,生成的文件包较大,但能选择运行时的最佳格式,将内存占用率降至最低。 它可用于任意设备(在 Android (ETC1) 上也同样如此)。

在虚幻引擎4.8及更新版本中,使用者可在Tegra K1设备上使用 ES31AEP 渲染。 请注意:当前支持ES31和AEP渲染的设备数量有限,因此我们现在只完成了极少量的性能和兼容性测试。 针对上述设备开发项目时,强烈建议进行广泛的性能和兼容性测试,确保项目能在设备上正常运行。

选择格式

使用者通常需要为设备选择最佳格式。如果了解设备中的GPU类型,即可在上表中选择一个格式。如果不了解具体类型,则可以选择 AndroidAndroid (ETC1)。运行游戏时,以4根手指同时点按屏幕将弹出一个对话框。此对话框通常用于输入控制台命令(如 stat fps),其也会显示设备支持的格式。获得此列表后,即可在部署/打包时用其选择理想的类型。选择设备不支持的格式时其将无法加载。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback