第五十九章 Unity 发布Android平台

这篇具有很好参考价值的文章主要介绍了第五十九章 Unity 发布Android平台。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本章节我们讲解如何打包发布到安卓手机平台。要为 Android 构建和运行应用程序,必须安装 Unity Android Build Support 平台模块。还需要安装 Android 软件开发工具包(SDK)和原生开发工具包(NDK)才能在 Android 设备上构建和运行代码。默认情况下,Unity 会安装基于 OpenJDK 的 Java 开发工具包。

在我们使用Unity Hub 安装Unity Editor的时候,就会提示我们是否安装平台编译库。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

上面的截图中我们发现了“Android Build Support”勾选项,如果我们的项目需要发布到安卓手机平台的话,就需要勾选此项。那么,Unity就会自动帮我们下载安装SDK,NDK以及OpenJDK了。当然,如果安装的时候没有选择也没有关系,我们可以通过Unity Hub补充安装他们。具体的操作,我们也不再详细介绍了。

Unity的平台编译库目录在“Unity Editor\2020.3.35f1c2\Editor\Data\PlaybackEngines”下

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

这里我们安装了三个平台:Android,WebGL,Windows

我们进入到“AndoridPlayer”目录中查看

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

我们可以看到NDK,OpenJDK,SDK三个目录。他们的版本与我们的Unity版本有一些关系。由于我们安装的是Unity2020版本,我们的NDK是r19版本,我们的OpenJDK是1.8版本,SDK里面有29和30两个版本。

如果多个 Unity 版本共享 Android SDK & NDK Tools 和 OpenJDK,则可以在 Unity Preferences 窗口中指定一个共享位置。为此,请在菜单栏选择Edit -> Preferences -> External Tools,并在JDK, SDK 和 NDK 字段中输入对应的安装目录即可。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

介绍完编译安卓应用程序的环境配置后,我们来说一下编译安卓应用的一些配置信息。AndroidManifest.xml 是每个android程序中必须的文件,里面包含了应用程序的配置信息。该文件是一个XML格式的配置文件,其根标签是manifest,其下很多的子标签用于配置各种信息,比如application用于整个应用的配置,activity用于配置活动等等。

AndroidManifest.xml的作用是什么?

1.    描述应用的包名:Android设备根据包名来区分不同的APP。

2.    描述应用中的组件:例如Activity,Service,Provider,BroadcastReceiver等组件。

3.    描述应用所需要访问的权限。

另外,安卓应用程序一般都是通过gradle工具来构建的。谷歌官方推出的Android Studio开发工具就是使用gradle,我们的Unity也是使用它。该工具对于每一个应用程序都会生成一个build.gradle文件。在这个文件中,我们会配置应用的包名applicationId,相当应用程序的id。需要我们了解的是compileSdkVersion,minSdkVersion,targetSdkVersion三项的配置。这三项配置都对应了安卓系统的版本。关于安卓系统的版本,大家可以看以下列表。

系统版本           SDK版本    版本名称

Android 11.0      30              (Android 11)

Android 10.0      29              (Android Q)

Android 9.0        28               Pie (Android P)

Android 8.1        27               Oreo(Android O)

Android 8.0        26               Oreo(Android O)(奥利奥)

Android 7.1        25               Nougat(Android N)(牛轧糖)

Android 7.0        24               Nougat(Android N)(牛轧糖)

Android 6.0        23               Marshmallow(Android M)(棉花糖)

Android 5.1        22               Lollipop(Android L)(棒棒糖)

Android 5.0        21               Lollipop(Android L)(棒棒糖)

Android 4.4        19               KITKAT(奇巧巧克力)

Android 11是Google于2020年9月9日正式发布的新的操作系统版本。那么,为什么开发一个安卓应用程序需要配置三个版本呢?由于安卓系统发布比较频繁,且对应的API也随之发生变化。例如:有的API可能会废弃,有的新添加的API等等。那么,这就造成一个问题,我们的应用程序如何在众多版本中稳定的运行。也就是说,我们的应用程序如何才能最大程度的兼容这些不同版本的安卓系统。

首先,compileSdkVersion指定了Grandle要采用哪个版本的Android SDK编译自己的应用程序,应用程序中使用的API级别不得高于编译用的SDK的版本。Google官方建议总是使用最新版的稳定SDK编译自己的应用程序。

其次,minSdkVersion就是应用程序可以运行的最低系统版本要求。在低于minSdkVersion的Android系统上无法安装此应用程序的。在开发阶段,如果你使用了低于minSdkVersion的API,开发工具就会发出警告。对于minSdkVersion的选择,我们应该看各个api的用户使用占比。一般说来我们适配4.4以上,即minSdkVersion=19,不过还要根据自己的实际情况,去选择相应的版本号。

说白了,我们使用SDK API的时候,需要介于minSdkVersion和compileSdkVersion之间。但是,如果我们使用的手机系统高于compileSdkVersion的话,我们的APP就不能安装运行了嘛?肯定不是的,但是某些行为可能会不同。这就涉及到targetSdkVersion的设置。

最后,targetSdkVersion目标SDK版本。targetSdkVersion理解起来要稍微比compileSdkVersion和minSdkVersion困难一些。当你设置了targetSdkVersion的时候,表示你已经充分测试过了你的应用程序在该目标版本的运行情况。targetSdkVersion 是 Android 系统提供前向兼容的主要手段。这是什么意思呢?随着 Android 版本的升级,它的某个的 API的行为可能会发生改变,但是为了保证我们应用程序的行为还是和以前兼容。只要 targetSdkVersion设置不变,即使这个应用程序安装在新Android 系统上,其行为还是保持老的系统上的行为,这样就保证了系统对老应用的向前兼容性。当然,新的系统(大于targetSdkVersion)就会表现新的API行为。因此,作为一名开发者,应该特别注意安卓系统版本更新时的API变化。因此,我们开发安卓应用程序的时候,尽量使用一些基础稳定的API来实现功能,这样即使一个老版本的应用程序放在几年后的Android新设备上依然能顺利运行。

但是对于一些新增加的API,我们就必须在新的安卓版本中才能使用。比如我们当前Andorid 9.0(SDK=28),Android 10(SDK=29) 新增了有关5G的API。我们的应用程序想要使用5G相关的API,这时只需要将compileSdkVersion设置为29版本,就能在编译阶段编译通过。此外,还需要注意的是,由于这个5G API是新增的,因此需要判断当前系统版本>=29才能使用新API,否者是不能够使用的(低于29版本的安卓系统上)。

综合来看,三者的关系是:minSdkVersion <= targetSdkVersion <= compileSdkVersion

并且建议 targetSdkVersion和compileSdkVersion一样。

那么,在Unity中如何设置compileSdkVersion,minSdkVersion,targetSdkVersion三者呢?我们点击菜单:Edit -> Project Settings -> Player,选择 Android 平台,然后在 Other Settings -> Identification 面板中就能找到了。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

 unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

我们发现了minSdkVersion和targetSdkVersion两个项目设置,没有发现compileSdkVersion的设置。请大家注意的是,Unity的设置里默认targetSdkVersion = compileSdkVersion的。我们根据上面的截图显示,最小版本为 Android4.4(SDK=19),而目标编译版本为“Automatic”。也就是我们安装的SDK中的最高版本。我们之前提到过,Unity2020默认安装的是安卓版本是有29和30两个版本。那么,这里就非常明显了,目标编译版本就是30这个版本。也就是当下谷歌发布的最新的安卓系统版本。以上内容,我们了解就可以了。

接下来,我们就开始将我们的“TouchDemo”工程打包发布安卓应用程序。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

这个3D模式下的场景内容

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

这是2D模式下的UI内容。

在这个工程中,我们给主相机添加了MoveScript脚本。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

接下来,我们双击打开这个MoveScript脚本,修改如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveScript : MonoBehaviour
{

    // 立方体游戏对象
    public Transform cube;

    // 立方体移动速度
    private float speed = 2.0f;

    public void OnMoveTest(Vector2 v)
    {
        // 摇杆输入
        float horizontal = v.x;
        float vertical = v.y;

        // 物体位置变化
        Vector3 position = cube.position;
        position.x += speed * horizontal * Time.deltaTime;
        position.z += speed * vertical * Time.deltaTime;

        // 更新物体位置
        cube.position = position;
    }
}

修改完毕之后,我们在回到主相机的Inspector检视面板中,

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

我们将Hierarchy层次面板中的Cube拖拽到上图检视面板MoveScript脚本下的Cube处。说白了,我们就是想使用模拟摇杆来控制Cube移动。我们可以Play查看效果。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

接下来,我们就将该工程打包到Android平台下。首先,我们点击菜单栏File -> Build Settings,然后弹出的窗口左侧选择“Android”平台。如果我们之前选择了其他平台,我们就需要再点击右下角的“Switch Platform”切换平台。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

 unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

平台切换完毕后,我们点击左下角的“Player Settings”按钮

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

这里我们设置公司名称,应用名称以及启动图标。

Unity打包Android安装包的时候,在Resolution and Presentation -> Default Orientation选项中可以设置游戏的横竖屏显示以及是否允许旋转方向。默认方向:Auto Rotation(自动旋转)。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

它的所有选项如下所示:

1. Portrait:竖屏

2. Portrait Upside Down:竖屏,手机倒过来

3. Landscape Right:横屏,屏幕在home键右边

4. Landscape Left:横屏,屏幕在home键左边(比较常用)

5. Auto Rotation:自动旋转屏幕

这里,我们选择一个Landscape Left吧。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

然后我们继续展开“Other Settings”

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

然后找到 Identification 项目

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

这里我们只修改安卓应用程序的包名即可。Unity要求包名的格式为:包名称必须遵循约定“com.YourCompanyName.YourProductName”,并且只能包含字母数字和下划线字符。其中,YourCompanyName和YourProductName基本上已经锁定了。所以,这里基本不用改动。最后我们关闭当前窗口,回到Build Settings窗口,点击右下角的“Build”按钮打包发布了。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

选择一个存储目录(E:\workspace\TouchDemo),起名为“TouchDemo.apk”,然后点击保存。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

 unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

开始打包发布中,等待一段时间后就打包完成了,我们去“E:\workspace\TouchDemo”查看

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

我们将这个APP的安装包发给手机(也可以使用模拟器测试)上面安装就可以了。

unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

 unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

 unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

 unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

 unity开发安卓,Unity基础,unity,unity基础,unity入门,unity教程

这是运行后的效果,可以借助“摇杆”来控制Cube移动。

本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id文章来源地址https://www.toymoban.com/news/detail-629022.html

到了这里,关于第五十九章 Unity 发布Android平台的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity 3D PC平台发布|| Unity 3D Web 平台发布||Unity 3D Android平台发布

    PC 是最常见的游戏运行平台。 随着欧美游戏的崛起,PC 平台随之发生游戏登陆大潮。 在 PC 平台上发布游戏的步骤: 打开要发布的 Unity 3D 工程,执行  File  →  Build Settings  菜单命令。 在  Platform  列表框中选择  PC,MacLinux Standalone  选项,在右侧的  Target Platform  下拉列

    2024年02月04日
    浏览(33)
  • 第三十九章 Unity 图像 (Image) UI

    本章节,我们介绍一下“Image”UI元素,首先我们创建一个新场景“SampleScene2.unity”。然后我们点击菜单栏“GameObjec”-“UI”-“Image”,如下所示 我们将其放置到了中间位置,检视面板中的参数如下  默认情况下,这个“Image”的尺寸是100 * 100像素。 这里,我们主要介绍它的

    2024年02月10日
    浏览(28)
  • 第五十六章 Unity 音频播放

    Unity可以导入大多数标准音频文件格式,精通于在3D 空间中播放声音,还可根据需要提供其他效果。虽然播放声音是一件非常简单的事情,但是为了模拟现实直接中的各种声音效果,Unity会提供各种各样的组件来实现。 首先,我们需要了解“多普勒效应”。他是一名奥地物理

    2024年02月07日
    浏览(28)
  • 第四十九章 Unity UI适配器组件

    首先,我们介绍内容大小适配器 (Content Size Fitter)组件。 我们新建一个“SampleScene6.unity”场景,然后添加一个Text UI元素,让其居中显示,并且尺寸设置为50*30。   由于我们设置Text的尺寸在水平方向上面太小,也就是Width值太小,里面的内容“New Text”无法全部显示。当然,我

    2024年02月04日
    浏览(32)
  • 第五十一章 Unity Input Manager 输入系统(下)

    本章节我们就来使用水平轴和垂直轴来控制游戏物体的移动和旋转。我们之前大致讲过,游戏物体移动最重要的是方向,速度和时间三个要素,同样旋转也是。接下来,我们将之前创建的地形场景导入进来,如下所示 然后将之前的“MecanimDemo”工程里面的模型文件和动画文件

    2024年02月03日
    浏览(32)
  • 第五十二章 Unity Input System 新输入系统

    新输入系统InputSystem是2019年Unity新推出的插件。请注意,Unity默认使用旧的Input Manager,新的Input System处于未启用状态。当你安装Input System组件时,Unity会询问你是否启用新的输入系统。如果你选择Yes,Unity会启用新的并禁用旧的,之后编辑器将重新启动。具体的操作是,打开包

    2024年02月07日
    浏览(26)
  • Unity发布Android平台错误记录

    注释掉android.enableR8= MINIFY_WITH_R_EIGHT 打包就可以了 NDK小版本问题不对 如果是大版本问题直接下载对应版本的NDK,如果是小版本就行下图遮掩解决,找到ndk目录,直接修改小版本和报错需要请求的版本可能能解。 (1)在E:Androidandroid-sdk-windowsbuild-tools32.0.0拷贝d8.bat文件,修改

    2024年02月11日
    浏览(31)
  • sqlilabs第五十九六十关

    手工注入 报错注入 手工注入

    2024年01月18日
    浏览(31)
  • 第五十九回: Slider Widget

    我们在上一章回中介绍了Form Widget相关的内容,本章回中将介绍 Slider Widget.闲话休提,让我们一起Talk Flutter吧。 我们在这里说的 Slider Widget是一种滑动条组件,通过滑动来控制不同的进度,它类似进度条,不过需要我们让去去滑动它的是进度,在实际项目中经常用它来调节音

    2024年02月09日
    浏览(31)
  • 【unity与android的交互】移动游戏发布更安心!Unity安卓平台打包相关的常见参数全详解

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 首先需要切换到安卓平台 step1 :打包前的基础参数的设置 step2:包名的设置需要勾选,必须要去设置的内容 打包后进行测

    2024年04月17日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包