Android 打包AAB+PAD(Unity篇),Android开发基础面试题

这篇具有很好参考价值的文章主要介绍了Android 打包AAB+PAD(Unity篇),Android开发基础面试题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这些部分适用于**「fast-follow」「on-demand」**资产包。

检查状态


每个资产包都存储在应用程序内部存储的单独文件夹中。使用该 「isDownloaded()」 方法确定是否已下载资产包。

监控下载


查询PlayAssetBundleRequest 监控请求状态的 对象:

// Download progress of request, between 0.0f and 1.0f. The value will always be

// 1.0 for assets delivered as install-time.

// NOTE: A value of 1.0 will only signify the download is complete. It will still need to be loaded.

float progress = bundleRequest.DownloadProgress;

// Returns true if:

//   * it had either completed the download, installing, and loading of the AssetBundle,

//   * OR if it has encountered an error.

bool done = bundleRequest.IsDone;

// Returns status of retrieval request.

AssetDeliveryStatus status = bundleRequest.Status;

switch(status) {

case AssetDeliveryStatus.Pending:

// Asset pack download is pending - N/A for install-time assets.

case AssetDeliveryStatus.Retrieving:

// Asset pack is being downloaded and transferred to app storage.

// N/A for install-time assets.

case AssetDeliveryStatus.Available:

// Asset pack is downloaded on disk but NOT loaded into memory.

// For PlayAssetPackRequest(), this indicates that the request is complete.

case AssetDeliveryStatus.Loading:

// Asset pack is being loaded.

case AssetDeliveryStatus.Loaded:

// Asset pack has finished loading, assets can now be loaded.

// For PlayAssetBundleRequest(), this indicates that the request is complete.

case AssetDeliveryStatus.Failed:

// Asset pack retrieval has failed.

case AssetDeliveryStatus.WaitingForWifi:

// Asset pack retrieval paused until either the device connects via Wi-Fi,

// or the user accepts the PlayAssetDelivery.ShowCellularDataConfirmation dialog.

default:

break;

}

大量下载


大于 150MB 的资产包可以自动下载,但只能通过 Wi-Fi 下载。如果用户未连接到 Wi-Fi,则PlayAssetBundleRequest状态设置为 AssetDeliveryStatus.WaitingForWifi 并暂停下载。在这种情况下,要么等待设备连接到 Wi-Fi,然后继续下载,要么提示用户批准通过蜂窝连接下载包。

if(bundleRequest.Status == AssetDeliveryStatus.WaitingForWifi) {

var userConfirmationOperation = PlayAssetDelivery.ShowCellularDataConfirmation();

yield return userConfirmationOperation;

switch(userConfirmationOperation.GetResult()) {

case ConfirmationDialogResult.Unknown:

// userConfirmationOperation finished with an error. Something went

// wrong when displaying the prompt to the user, and they weren’t

// able to interact with the dialog. In this case, we recommend

// developers wait for Wi-Fi before attempting to download again.

// You can get more info by calling GetError() on the operation.

case ConfirmationDialogResult.Accepted:

// User accepted the confirmation dialog - download will start

// automatically (no action needed).

case ConfirmationDialogResult.Declined:

// User canceled or declined the dialog. Await Wi-Fi connection, or

// re-prompt the user.

default:

break;

}

}

取消请求(仅限按需)


如果需要在 AssetBundles 加载到内存之前取消请求,请调用 对象AttemptCancel() 上的方法 PlayAssetBundleRequest:

// Will only attempt if the status is Pending, Retrieving, or Available - otherwise

// it will be a no-op.

bundleRequest.AttemptCancel();

// Check to see if the request was successful by checking if the error code is Canceled.

if(bundleRequest.Error == AssetDeliveryErrorCode.Canceled) {

// Request was successfully canceled.

}

异步请求资产包


在大多数情况下,你应该使用 Coroutines异步请求资产包并监控进度,如下所示:

private IEnumerator LoadAssetBundleCoroutine(string assetBundleName) {

PlayAssetBundleRequest bundleRequest =

PlayAssetDelivery.RetrieveAssetBundleAsync(assetBundleName);

while (!bundleRequest.IsDone) {

if(bundleRequest.Status == AssetDeliveryStatus.WaitingForWifi) {

var userConfirmationOperation = PlayAssetDelivery.ShowCellularDataConfirmation();

// Wait for confirmation dialog action.

yield return userConfirmationOperation;

if((userConfirmationOperation.Error != AssetDeliveryErrorCode.NoError) ||

(userConfirmationOperation.GetResult() != ConfirmationDialogResult.Accepted)) {

// The user did not accept the confirmation - handle as needed.

}

// Wait for Wi-Fi connection OR confirmation dialog acceptance before moving on.

yield return new WaitUntil(() => bundleRequest.Status != AssetDeliveryStatus.WaitingForWifi);

}

// Use bundleRequest.DownloadProgress to track download progress.

// Use bundleRequest.Status to track the status of request.

yield return null;

}

if (bundleRequest.Error != AssetDeliveryErrorCode.NoError) {

// There was an error retrieving the bundle. For error codes NetworkError

// and InsufficientStorage, you may prompt the user to check their

// connection settings or check their storage space, respectively, then

// try again.

yield return null;

}

// Request was successful. Retrieve AssetBundle from request.AssetBundle.

AssetBundle assetBundle = bundleRequest.AssetBundle;

其他 Play Core API 方法


以下是你可能希望在应用中使用的一些其他 API 方法。

检查下载大小

通过对 Google Play 进行异步调用并设置操作完成时的回调方法来检查 AssetBundle 的大小:

public IEnumerator GetDownloadSize() {

PlayAsyncOperation getSizeOperation =

PlayAssetDelivery.GetDownloadSize(assetPackName);

yield return getSizeOperation;

if(operation.Error != AssetDeliveryErrorCode.NoError) {

// Error while retrieving download size.

} else {

// Download size is given in bytes.

long downloadSize = operation.GetResult();

}

}

移除 AssetBundles

你可以删除当前未加载到内存中的快速关注和按需 AssetBundle。进行以下异步调用并设置完成时的回调方法:

PlayAsyncOperation removeOperation = PlayAssetDelivery.RemoveAssetPack(assetBundleName);

removeOperation.Completed += (operation) =>

{

if(operation.Error != AssetDeliveryErrorCode.NoError) {

// Error while attempting to remove AssetBundles.

} else {

// Files were deleted OR files did not exist to begin with.

}

};

测试

==

在 Unity Editor 中,选择Google > Build and Run。

行为

「install-time」 包将在应用程序安装过程中安装。

**「fast-follow」包的行为与「on-demand」**包一样。也就是说,当游戏被侧载时它们不会被自动获取。开发者需要在游戏开始时手动请求;这不需要你的应用程序中的任何代码更改。

限制

以下是本地测试的限制:

  • Packs 从外部存储而不是 Play 中获取,因此您无法测试您的代码在出现网络错误的情况下的行为。

  • 本地测试不包括等待 Wi-Fi 场景。

  • 不支持更新。在安装新版本的构建之前,请手动卸载以前的版本。

使用内部应用共享进行测试


当你接近发布候选版本时,请使用尽可能真实的配置来测试你的游戏,以确保你的游戏在生产环境中为您的用户提供良好的性能。 构建您的应用程序包。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
android aab + pad,Android程序员面试,android,unity,游戏引擎
android aab + pad,Android程序员面试,android,unity,游戏引擎
android aab + pad,Android程序员面试,android,unity,游戏引擎
android aab + pad,Android程序员面试,android,unity,游戏引擎

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
android aab + pad,Android程序员面试,android,unity,游戏引擎

最后:学习总结——Android框架体系架构知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。

下方即为我手绘的Android框架体系架构知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的Android框架体系架构知识脑图原件(包括上方的面试解析xmind文档)
android aab + pad,Android程序员面试,android,unity,游戏引擎

除此之外,前文所提及的Alibaba珍藏版 Android框架体系架构 手写文档以及一本 《大话数据结构》 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!

——感谢大家伙的认可支持,Free Download请注意:点赞+点赞+点赞!!!
——Android框架体系架构知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。

下方即为我手绘的Android框架体系架构知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的Android框架体系架构知识脑图原件(包括上方的面试解析xmind文档)
[外链图片转存中…(img-dkAuljdF-1710766894227)]

除此之外,前文所提及的Alibaba珍藏版 Android框架体系架构 手写文档以及一本 《大话数据结构》 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!

——感谢大家伙的认可支持,Free Download请注意:点赞+点赞+点赞!!!
自行下载领取链接:【Git】文章来源地址https://www.toymoban.com/news/detail-851004.html

到了这里,关于Android 打包AAB+PAD(Unity篇),Android开发基础面试题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity之Android项目的打包

    一 Unity里面配置Android运行环境 1.1 首先unity需要集成android编译环境,点击FIle-Build Settings 1.2 没是否有Android模块,没的话先下载Android模块 1.3 按下面的操作,下载Android支持,SDK,NDK,和JDK 1.4 如果之前AndroidStudio配置有这些,可以不用下载,进行配置就行,Edit-Preferences 1.5 选择

    2024年02月06日
    浏览(36)
  • 百度二面是什么级别的,Unity进阶技巧 - RectTransform详解,android开发需要哪些基础

    三、Pivot和Anchor的结合 在了解了Pivot和Anchor分别是什么后,我们就来看看Unity是如何使用这个两个东西来控制UI的布局 第1种情况:两个锚点重合时我们先来看看两个锚点重合时的情况,这种情况是我们最常用也是最容易理解的方式 我们将Anchor锚点放在黑框的正中间,然后将

    2024年04月12日
    浏览(43)
  • 谷歌aab包在Android 14闪退而apk没问题(targetsdk 34)

    Unity应用(target SDK 34)上线到GooglePlay,有用户反馈fold5设备上(Android14系统)疯狂闪退,经测试,在小米手机Android14系统的版本复现成功了,奇怪的是apk直接安装没问题,而打包成aab就是疯狂闪退。 Unity版本Unity2020.3.18f1c1。 老办法,logcat抓包,看看闪退日志。 日志有一行引起了

    2024年02月21日
    浏览(36)
  • Unity移动平台相关(一)Android打包设置

    Unity2019及以上 发布Android准备工作 通过UnityHub安装Android平台相关工具 1.Android构建支持 2.Android SDK(安卓软件开发工具包)、NDKTools(本地开发工具包) 3.OpenJDK(Java开发工具包) 注意:Unity支持Android 5.1及以上版本 Unity2019以下版本 1.Android构建支持工具安装(Unity提供下载,安装

    2023年04月14日
    浏览(30)
  • 局域网实现PC、Pad、Android互联

    在我们使用多设备时,往往会因为多设备的文件不能同步而造成很多麻烦(QQ等软件不能传输大文件)。这里我们使用计算机网络的知识来实现多设备的互联,使得多设备的文件更方便传输。 注意,这里的前提条件都是所有的设备连接在同一个 WIFI 上面。 设备版本: Android:

    2024年02月11日
    浏览(30)
  • Unity-Android 打包报错记录

    1.使用srp渲染管道后 打包时勾选 Development Build 时 报错 :ArgumentNullException:Value Cannot be null :Parament name :_unity_self :  at UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCamera() 原因: 解决办法:删除这个脚本中的宏或者反选 Development Build  

    2024年01月18日
    浏览(30)
  • Unity2022.2 版本 Android 打包环境踩坑

    最近项目用到了Unity 2022.2版本,在打Android包时遇到了一些问题:用UnityHub下载的 Android JDK, SDK, NDK 在unity编辑器中都不支持, 原因是当前hub下载的jdk版本是老版本8.0, 而此unity版本需要的是OpenJDK version 11 和 NDK r23b,参考官网:Android 环境设置 - Unity 手册 (unity3d.com) 所以这里

    2024年02月08日
    浏览(64)
  • 解决Unity打包时,Android SDK 报错问题

    报错内容应该包括类似如下信息: 不一定完全一致(比如版本号不同),但肯定会包含这些信息。 这个问题其实不难解决,之前解决过一次,但是后来又碰到了,忘了之前是怎么搞得了,结果又整了半天,这回直接记录一下好了,节省下次再配的时间。 下面进入正题,其实

    2024年02月05日
    浏览(47)
  • 使用apktool、aapt2、bundletool将apk转为aab(Android App Bundle)

    上一篇文章我们讲了AAPT2命令行使用总结,里面有个使用场景就是将apk转为aab文件,aab文件是应用上架Google play的指定包格式,下面我们就来实践下 假如我们有这样一个场景需求,一个游戏或者应用接入了我们开发的聚合SDK,然后提供给我们一个apk包,我们拿到这个apk包可以

    2023年04月27日
    浏览(55)
  • Unity3D PC、Android、iOS平台打包流程

    在Unity窗口中,按下Ctrl+Shift+B快捷键,或者在菜单栏选择File-BuildSettings...,打开设置窗口。“Platform”下的选择项默认选择“Windows,Mac,Linux”。单击左下方的“Player Settings...”继续后续设置(应用名、应用分辨率、图标等),如图1-1所示。 图1-1 PC平台选择 接着,点击Add Op

    2023年04月20日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包