当前位置: 首页 > article >正文

[Unity]Unity跨平台开发之Android打包和分发

Gradle 模板

Gradle模板配置如何使用Gradle。每个Gradle模板代表一个Gradle项目。Gradle项目可以包含并依赖于其他Gradle项目。

Gradle 模板文件

Gradle 模板由以下文件组成:

文件

位置

含义

baseProjectTemplate.gradle

在导出项目的root/build.gradle文件夹内

影响最终Gradle项目中所有模块的配置信息。它指定要使用的Android Gradle插件版本以及Java插件的位置。这些位置是此项目内的在线仓库(用于存放和分发依赖项、库或插件等开发资源。在Android Gradle项目中,在线存储库通常是指诸如 Maven Central或Google Maven Repository这样的资源库,它们托管着各种开源或闭源的Java/Android库)和Java插件的组合。

launcherTemplate.gradle

在导出项目的root/launcher/build.gradle文件夹内

关于如何构建Android应用程序的说明。其中包括捆绑、签名以及是否拆分APK

。它依赖于unityLibrary项目并输出.apk文件或应用程序包。

mainTemplate.gradle

在导出的项目的root/unityLibrary/build.gradle文件夹内

有关如何将Unity构建为库的说明。这将输出一个.aar 文件。您可以在Unity编辑器中使用自定义模板覆盖 Unity模板。有关更多详细信息,请参阅本页上的提供自定义Gradle构建模板部分。

libTemplate.gradle

各不相同

如果Android库项目插件如果未包含build.gradle文件,Unity将使用该libTemplate.gradle文件作为模板来生成文件。Unity生成文件后build.gradle,或者如果插件目录中已存在文件,Unity 会将插件复制到Gradle项目中。

settingsTemplate.gradle

在导出的项目的root/settings.gradle文件内

指定Gradle构建系统在构建项目时应包含的模块名称。您可以在Unity编辑器中使用自定义模板覆盖Unity模板。有关更多详细信息,请参阅本页上的提供自定义 Gradle构建模板部分。

gradleTemplate.properties

在导出的项目的root/gradle.properties文件内

配置Gradle构建系统并指定Java虚拟机(JVM)堆的大小等属性

使用自定义 Gradle 模板

为了更好地控制Unity生成Gradle项目文件,您可以覆盖Unity的默认Gradle模板文件。具体操作如下:

1. 前往“Edit” > “Project Settings”以打开“项目设置”窗口。

2. 选择Player选项卡,然后打开Android Player Settings

3. 在“Publishing Settings”部分中,选中与要为其创建自定义模板的 Gradle 项目文件类型相对应的复选框。这将创建一个 Gradle 项目模板文件并显示该文件的路径。

4. 修改模板文件来控制最终 Gradle 项目文件的格式和内容。

使用C#修改导出的Gradle工程

要在Unity构建Gradle项目后对其进行修改,请创建一个继承自IPostGenerateGradleAndroidProject的类并重写OnPostGenerateGradleAndroidProject函数。此函数接收unityLibrary模块的路径作为参数,您可以通过C#脚本使用它访问应用程序的清单和资源。

警告:Unity现在使用增量构建管道(incremental build pipeline),这意味着Unity会在连续构建中重复使用相同的Gradle项目。这意味着您使用此API所做的任何修改都会累积,因为Unity不再为每个构建创建新的Gradle项目。例如,如果您使用此API向Gradle项目添加其他文件,则第一次构建将按预期工作,但在第二次构建期间该文件已经存在。第二个示例是,如果您使用此API向特定文件添加权限。每次连续构建都会为该权限添加另一个条目。确保您要进行的修改尚未存在于构建中至关重要。

覆盖 Android 应用清单(Override the Android App Manifest)

Gradle在构建过程中为您的应用生成Android 应用清单。您可以通过以下方式之一用自己的内容覆盖此Android应用清单:

  • 创建Unity库清单文件模板,Unity将使用该文件来构建其生成的Unity库清单。有关更多信息,请参阅创建 Unity 库清单文件模板。
  • 导出Unity项目并直接在Android Studio中修改最终的Android应用清单文件。有关更多信息,请参阅在Android Studio中编辑Android应用清单。

创建模板Unity Library Manifest文件

要控制Android应用清单文件的格式和内容,请使用自定义模板覆盖默认的Unity库清单文件。具体操作如下:

1. 前往” Edit > Project Settings”以打开“项目设置”窗口。

2. 选择Player选项卡,然后打开Android Player Settings:

3. 在“Publishing Settings”部分中,启用“Custom Main Manifest”。这将创建一个Unity 库清单文件并显示该文件的路径。有关Unity库清单控制的设置的信息,请参阅Unity 库清单。

Gradle将Android库中的清单合并到这个主清单中,并确保最终配置正确。

注意:当Android Player settings和模板文件设置的值存在差异时,Unity会显示一条警告消息,并且已layer的置优先。

在 Android Studio 中编辑 Android App Manifest

要完全控制Android App Manifest文件,请导出Unity项目并在Android Studio中编辑 Android应用清单。有关更多信息,请参阅导出Android项目。

安卓打包设置

使用“Android打包设置“ (Android Build Settings)配置和打包适用于Android设备的应用程序。Android打包设置是打包设置窗口的一部分。要查看“Android打包设置“:

  1. 选择File > Build Settings
  2. Platform窗口的平台列表中,选择Android
  3. 注意:如果Android显示为灰色,请按照Android环境设置中的步骤进行操作。
  4. 如果Build按钮不可见且Build And Run呈灰色,请选择Switch Platform。Unity就会切换至Android Build Settings模式中。

打包设置

设置

描述

纹理压缩

(Texture Compression)

用于打包的纹理压缩格式。选项包括:

Use Player Settings:使用您在Player Settings中的设置。

ETC (GLES 2.0):使用ETC格式。

ETC2 (GLES 3.0):使用 ETC2 格式。

ASTC:使用 ASTC 格式。

DXT (​​Tegra):使用 DXT 格式。

PVRTC (PowerVR):使用 PVRTC 格式。

您还可以通过脚本或使用-setDefaultPlatformTextureFormat 命令行开关更改此设置。

有关更多信息,请参阅按平台推荐、默认和支持的纹理压缩格式。

ETC2备选方案

(ETC2 fallback)

指定Unity对不支持ETC2的Android设备使用的未压缩的RGBA纹理格式。这会影响未压缩纹理使用的内存量及其图像质量。选项包括:

32-bit:以全分辨率存储RGBA纹理,使用32位存储每个像素(每个颜色通道8位)。这是质量最高的未压缩纹理格式,并使用最多的内存。

16-bit:以全分辨率存储 RGBA 纹理,使用16位存储每个像素(每个颜色通道4位)。这使用的内存是32位所用内存的一半,但由于精度较低,纹理可能会丢失宝贵的颜色信息。

32-bit, half resolution:以半分辨率存储RGBA纹理,使用32位存储每个像素(每个颜色通道8位)。这使用的内存是32位所用内存的四分之一,但纹理可能会变得模糊。

注意:如果纹理不使用ETC2压缩格式:

• 大多数压缩格式使用32位回退。

• 单通道和双通道纹理压缩格式会根据GPU的支持情况回退到不同的格式。例如,它可能是R8_UNorm或R8G8B8A8_SRGB。

• 如果GPU支持,ASTC HDR格式会回退到浮点格式。否则,它们会回退到32位。

导出项目(Export Project)

指示是否将Unity项目导出为Gradle项目。

您可以将其导入Android Studio的项目。有关更多信息,请参阅导出Android项目。

符号链接源(Symlink Sources)

指示是否在Unity和导出的Gradle项目之间共享Java 和Kotlin源文件。

启用此设置可创建符号链接,以便Gradle项目引用Unity项目中的Java和Kotlin源文件。这对于测试和迭代Java和Kotlin代码非常有用,因为这意味着如果您重新导出Unity项目,您对导出的Gradle项目中的Java和 Kotlin源文件所做的任何更改都会保留下来。

禁用此设置可让Unity将Unity项目中的Java和Kotlin源文件复制到导出的Gradle项目中。只有在启用“导出项目”时才能与此设置交互。

构建应用程序包 (Google Play)

(Build App Bundle (Google Play))

指示是否将应用程序构建为Android App Bundle(AAB)以在Google Play上分发。如果启用此设置,Unity 会将应用程序构建为AAB。如果禁用此设置,Unity会将应用程序构建为APK。仅当您禁用“导出项目”时,此设置才会显示。

导出至App Bundle

(Export for App Bundle)

指示是否将导出的Gradle项目配置为构建Android App Bundle。仅当您启用“导出项目”时才会显示此设置。

创建符号.zip

(Create symbols.zip)

指定Unity在构建应用程序时如何生成符号表包。选项包括:

Disabled:Unity不生成符号表包。

Public: Unity为您的应用程序生成公共符号表包。

Debugging:Unity为您的应用程序生成调试符号表包。

运行设备

(Run Device)

指定在哪个连接的设备上测试打包。通过USB连接的设备会自动出现在列表中。如果您连接了新设备或在列表中找不到连接的设备,请点击Refresh去刷新。要通过Android Debug Bridge无线连接新设备,请选择<输入 IP>选项。有关更多信息,请参阅在Android 设备上调试或在ChromeOS设备上调试,具体取决于您要构建的平台。

打包至设备

(Build to Device)

构建管道不会创建完整构建,而是将自上次修补以来更改的单个文件直接部署到设备。修补会将更改的文件部署到设备,而修补并运行会部署更改的文件,然后在设备上运行应用程序。有关更多信息,请参阅应用程序补丁。

您只能在启用Development Build时设置此项。

开发者模式打包

(Development Build)

指示是否包含脚本调试符号和分析器。在您的构建中。当您想要测试应用程序时,请使用此设置。

当您选择此选项时,Unity将设置DEVELOPMENT_BUILD脚本定义。然后,您的构建将包含将DEVELOPMENT_BUILD设置为条件的预处理器指令。有关更多信息,请参阅平台相关编译。

自动连接分析器

(Autoconnect Profiler)

指示在运行时是否自动将Profiler连接到构建的应用程序。

只有在启用Development Build时设置此项。

支持深度分析

(Deep Profiling Support)

指示是否在Profiler中启用深度剖析。这会使Profiler 检测应用程序中的每个函数调用,以便返回更详细的分析数据。此选项可能会减慢脚本执行速度。

您只能在启用Development Build时设置此项。

脚本调试

(Script Debugging)

指示是否允许调试应用程序的脚本代码。

您只能在启用Development Build时设置此项。

等待托管调试器

(Wait For Managed Debugger)

指示应用程序是否在运行任何脚本代码之前等待调试器连接。

仅当您启用脚本调试时才会显示此设置。此外,您只能在启用Development Build时设置此项。

压缩方法

(Compression Method)

指定Unity在打包时用于压缩项目中数据的方法。这包括资产、场景、播放器设置和GI数据。选项包括:

  1. 默认:使用ZIP,其压缩效果比LZ4和LZ4HC稍好,但数据解压缩速度较慢。
  2. LZ4:使用LZ4,这是一种对开发版本很有用的快速压缩格式。使用LZ4压缩代替 ZIP可以显著改善Unity应用程序的加载时间。有关更多信息,请参阅BuildOptions.CompressWithLz4
  3. LZ4HC:LZ4的高压缩变体,构建速度较慢,但在release版本上会产生更好的效果。使用LZ4HC压缩代替 ZIP可以显著改善Unity应用程序的加载时间。有关更多信息,请参阅BuildOptions.CompressWithLz4

不同压缩格式对比

压缩类型

压缩率(体积大小)

压缩速度

解压速度

适用场景

ZIP(Default)

中等

体积优先,运行时不频繁解压

LZ4

中等

性能优先的实时加载

LZ4HC

(LZ4High Compression)

体积和解压平衡

导出一个安卓工程(Export an Android project)

如果你需要更好地控制构建管道,可以将Unity项目导出为Gradle项目并将其导入Android Studio。如果您希望更好地控制构建管道,希望查看或修Unity为您的应用程序生成的Android App Manifest,或者将Unity支持的功能集成到另一个Android应用程序中,这将非常有用。

导出(Exporting)

要为Android Studio导出Unity项目:

  1. 选择File > Build Settings
  2. 从平台窗格中的Platform列表中,选择Android
  3. 注意:如果Android显示为灰色,请将项目设置为Android开发模式。
  4. 启用Export Project
  5. 单击“Export”。
  6. 选择目标文件夹并单击“Select Folder”来执行导出操作。

Android数字发行服务(Digital distribution services for Android)

有关如何发布 Android 应用程序的详细信息,请参阅发布您的应用程序。

主题

描述

发布至Google Play

Google Play的发布要求和注意事项。


注:文章摘要翻译自Unity官方手册,版本2022.3x。


http://www.kler.cn/a/445731.html

相关文章:

  • 多智能体/多机器人网络中的图论法
  • uni-app商品搜索页面
  • 【HarmonyOS NEXT】Web 组件的基础用法以及 H5 侧与原生侧的双向数据通讯
  • winform中屏蔽双击最大化或最小化窗体(C#实现),禁用任务管理器结束程序,在需要屏蔽双击窗体最大化、最小化、关闭
  • flask before_request 请求拦截器返回无值则放行,有值则拦截
  • js html转pdf
  • Vue Web开发(十一)
  • 数据结构——队列的模拟实现
  • MySQL 8.0/8.4执行DDL会丢数据?是,但影响有限
  • React的img图片路径怎么写
  • dpdk中udp包的接受与发送
  • 什么是开关噪声抖动 (SNJ)?
  • 文章发稿平台哪个好用?哪个类型的媒体平台比较好过稿?
  • 2024年全球办公键盘行业总体规模、主要企业国内外市场占有率及排名
  • Liveweb视频融合共享平台在果园农场等项目中的视频监控系统搭建方案
  • Linux线程同步
  • 轻松上手:使用 Vercel 部署 HTML 页面教程
  • C#—扩展方法
  • 中小学教室多媒体电脑安全登录解决方案
  • Soul Android端稳定性背后的那些事
  • 智能化测绘装备的自主研发与市场应用
  • 向量的叉乘+Vector3补充+四元数
  • Qt之CAN设计(十三)
  • R语言在数量生态学中的应用
  • go mod tidy 命令
  • 《算法SM2》题目