Xamarin跨平台项目(Android、iOS)安装包体积超150MB的紧急解决方案咨询
Xamarin跨平台项目(Android、iOS)安装包体积超150MB的紧急解决方案咨询
兄弟,我太懂你两周内要发版的焦虑了!130MB的视频直接塞进安装包,体积不爆才怪,而且你不想折腾Android和iOS的原生代码,那咱们就来搞几个简单直接、不用大改原生部分的办法:
针对Android:用Asset Delivery,完全不影响iOS
你之前没搞懂的Android Asset Delivery,其实是Google官方给的轻量方案,完全不需要写原生代码,Xamarin已经做好封装了,而且这个方案只作用于Android端,对iOS没有任何影响,放心用就行!
- 操作步骤:把大视频从常规资源文件夹移到Android项目的
AssetPacks目录下 - 然后在
AndroidManifest.xml里加几行配置,指定视频是「随安装包分块下载」还是「按需下载」 - 这样主安装包就不会包含这个130MB的视频,体积直接降到150MB以内,用户安装时会自动下载分块资源,或者在需要播放时再触发下载
针对iOS:用On-Demand Resources(ODR)
iOS这边对应的轻量方案是App Thinning里的ODR,同样不用改原生代码,在Xamarin.iOS项目里就能搞定:
- 找到你的视频文件,在属性里把它标记为「按需资源」,设置一个资源标签
- 在共享代码里调用Xamarin封装的API,当需要播放视频时,请求下载这个标签对应的资源
- 上传到App Store后,视频会和主包分开,用户下载主包时不会自动下载视频,只有用到时才会拉取,主包体积就能控制住
最省事的通用方案:云存储托管视频
如果觉得上面两个平台的配置还是有点麻烦,那直接把视频上传到云存储(比如对象存储服务),App里只存视频的下载链接:
- 只需要在共享代码里加一段简单的下载逻辑,启动时或者需要播放前下载视频到本地缓存
- 这个办法完全不用碰Android和iOS的原生配置,半天就能搞定,唯一要注意的是给用户加个下载进度提示,确保网络差的时候体验也还行
最后再给你解惑:Android Asset Delivery只针对Android平台,和iOS没有任何关联,iOS用自己的ODR方案就行,两者互不影响,不会因为用了Android的方案就搞乱iOS的部分。
两周时间足够搞定这些方案,尤其是云存储那个,快得很,别慌!
备注:内容来源于stack exchange,提问作者AMine03
相关产品推荐
相关产品推荐

