unity 打包 Android 并读取外部存储即USB 上的AB包并进行加载

2023-10-21 08:50

本文主要是介绍unity 打包 Android 并读取外部存储即USB 上的AB包并进行加载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家可能对这个标题有点拗口,先给大家解释一下

前几天公司老大提了一个需求,说是要把unity制作的软件搬到桌面投影机上。一听这个…WTF!?一开始我和CTO一起向老板提出产品架构的时候专门询问了一下,考虑移动端吗?再三确认,不考虑,只做PC端。所以,我们在技术架构设计和产品设计的时候根本没考虑移动端的东西,现在搞这个。。。怎么搞?唉😔,谁让人家大老板呢。
怎么弄涅?
初步计划三步曲:

  1. 验证AB包模式可以在安卓平台使用(AB包先放到StreamingAssets目录下)
  2. 验证AB包放到U盘中,软件也能读取
  3. 项目整合测试
  4. 对了,我们使用安卓版本是8.0

1.验证AB包模式在安卓平台可用

虽然没难度,但是当时还是遇到了些问题,暂且记录一下,当然有些问题是比较愚蠢的。
具体情况是为了快速解决问题,直接把原来的AB包打包脚本直接拿过来用了。后来怎么加载都报错:

报错信息:该AB包的类型不能在此平台上使用

后来一想,知道原因了。之前的AB包打包脚本是按照windows平台打的,把目标平台改为安卓就好了。代码如下:

BuildPipeline.BuildAssetBundles(outPath, builds.ToArray(), BuildAssetBundleOptions.None | BuildAssetBundleOptions.DeterministicAssetBundle, BuildTarget.Android);

打包完成之后,把AB包放到StreamingAssets目录下,打包APK,放到安卓平板上测试一下。
嗯~ o( ̄▽ ̄)o,果断OK。接下来第二步

2.验证AB包放到U盘中是否也能读取

这个上来就遇到了大困难:我们不知道USB 的盘符,不能获取绝对路径。这怎么搞?
只能想招测试了。
开始我们使用/storage/emulated/0/Android 目录是可以获取文件的。所以首先想到的就是将0改为1,然我改到了3都没用。。。
后来又搜到安卓平台区分内部存储和外部存储的方式是使用storage和exstorage,试了一下,还是不行。我估计这种方式对于之前版本可能是有效的。对于我们使用的版本不起作用。
算了,一个一个测试吧。直接从storage目录开始。一测试,咦,出现三个目录。如下图:

在这里插入图片描述
分别是:
/storage/5098·····················
/storage/emulated
/storage/self
忽然柳暗花明,这个5098········莫不是??
果断测试,嗯,果然是可以滴。所以最终目录就是:/storage/5098·····················
虽然目录拿到了,但是读取内容时还是获取不到东西。后来发现,在打包安卓时需要设置外部存储的权限。设置为下图就可以了。
在这里插入图片描述

接下来就是最后进行内容的测试和整合。果然没有问题,可以使用了。
但是后续又有了其他问题。。如何往USB外部存储中写入文件?
等我有空再聊。。

这篇关于unity 打包 Android 并读取外部存储即USB 上的AB包并进行加载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/253297

相关文章

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动