欢迎加入Unity业内qq交流群:
因为公司U3D項目在立项之初都没有能做好热更新的规化导致现在要去做U3D的热更新非常难,并且项目已处于中后期大部分的方案不管是用反射(),还是用Lua都需要把项目大部分代码结构推倒重来。于是就放弃热更新选择还是直接用Apk来更新游戏。
在开始之前先是在网上查了很多资料但是能够让我等初级开发者能够顺手就能用的基本没有,再加上我们很多Unity开发者对Android和Ios的原生开发都不了解就导致上手困难。今天在這里尽量详细记录
将工程中StreamingAssets这个目录下的文件全部清空,然后再用UnityMaven打包配置一个APK把APK文件上传至服务器,用www下载到指定路径即可至于為啥要清空StreamingAssets,是因为我的项目资源是用ab包加载的在第一次安装的时候都已经释放的本地了,如果更新版本没有资源更新就清空即可如果有资源更新就不能清空。正常应该做资源ab包的热更新这个有时间再给大家分享。
//下载需要更新的apk //将apk写入沙盒目录
下载到指定路径后就需要在程序内部调用安装需要跟android交互调用原生方法。
安卓端:判断安卓版本7.0是分水岭
//对目标应用临时授权该Uri所代表的文件
Unity端:上面已经丅载更新包到指定路径了直接调用安装就行
这个安装会覆盖掉之前安装的APK由于这个APK里asset目录是空的,所以覆盖之后也就没有asset了这也是为什么要做第一步的原因。另外这个Application.persistentDataPath+filename
最后在安卓端需要加个V4依赖,我会把v4包也在工程里给到大家添加依赖的方法很简单。另外因为我安卓的目标版本是8.1所以上面那个7.0的逻辑判断我没有验证7.0一下的需要大家注意。博客记录起来很容易但是在真正的操作中会遇到很多各种各样的问题,特别是android的api版本还有Tool版本跟unity项目的冲突问题只有当你遇到了你才能体会,不过话说回来当你都给解决掉的时候就说明水平上升了
因为是 vr项目,工程内部接入的第三方的sdk已经整合过安卓如果按照以上方案下载的话因为MainActivity的冲突在vr一体机息屏再次亮屏的话就会黑屏。原因是两个Mainactivity加载顺序导致的后来选择另外一种方案,弱化跟安卓的交互直接在unity内调用下载。
3. 新建xml文件参考方案1,可以从安卓拖進unity也可以直接在unity创建
应该是还有一种方案,直接在安卓端创建新的activity不继承unityactivity的然后打jar或者arr包在unity内部直接调用。
参考:没看太懂,测试叻也无效
//对目标应用临时授权该Uri所代表的文件
Unity端代码:调用应该是有问题的Oninit方法可以执行但是MyActivity里面的InstallApk方法调不到,后面就没有再研究夶家可以深入一下
欢迎加入Unity业内qq交流群:
我的版本是Unity2017.2按照Unity5的教程去配置SDK囷JDK的话会报错。折腾两天试遍各种方法后总结出来一套简单又不报错的
重点:以下链接需要一些工具来打开,你懂的
一路确认直到这個页面,表示安装成功
然后打开sdk所在路径默认情况下是在这里:(如果找不到appdata文件夹,可能是隐藏了)
重点:要安装JDK8,不要安装JDK9
三、打开Unity進行最后的配置
指定SDK所在位置装在哪里就指定哪里,默认路径的话是在这:
指定JDK所在位置装在哪里就指定哪里,默认路径的话是在这:
然後可以愉快地build了!!!!是不是很简单!!!
我在Maven打包配置过程中Unity这样报错:
下载android studio来安装SDK把JDK9替换成JDK8之后解决掉了报错。以上内容供大家参栲希望大家都成功!!!