博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ANDROID下面的游戏更新目录
阅读量:6224 次
发布时间:2019-06-21

本文共 1384 字,大约阅读时间需要 4 分钟。

更新模块的整体方案终于搞定了,包括launcher的自更新,以及framework,app等代码的更新,均测试通过。

很激动地拿到ANDROID上去测试,一下就傻眼了。 在创建upd目录的时候,就遇上了 Permission Denied
我勒个X,我有WRITE_EXTERNAL_STORAGE权限呀。
 
经过百度后发现,cocos2dx返回的是路径为 /data/data/<package_name>/files
这是在内部存储卡上的,而要想对这个进行操作, 只能是使用Context相关API了。
 
在我的更新方案中,我使用了lfs,这当然是不行了。
经过多番搜索,一个东西映入我眼帘
Context.getExternalFilesDir()
 
这个API将会返回  /mnt/sdcard/android/data/<package_name>/files 目录
这个目录与/data ...../files目录一样,会在程序删除时被删除。 这样一来,你的数据将不会保存在玩家机器上了(其实,对于删游戏的玩家,可以考虑留下点什么,哈哈)
 
修改方法很简单,将Cocos2dxHelper.Java中的sFileDirectory赋值的那一行改为如下即可
Cocos2dxHelper.sFileDirectory = pContext.getExternalFilesDir(null).getAbsolutePath();
 
但这个路径需要注意的是,它可以被用户操作, 在APP信息里面, 清除数据就是清除的这个目录下的东西。网上也有人建议换一个地方来保存,以避免这个情况。
 
同时,将数据写在SD卡上,来带的问题就是 用户有没有安装SD卡
 
目前我的做法是,如果用户没有安装SD卡,就提示他去安装一个SD卡。
 
Context.getExternalFilesDir()取到的路径,与通过Enviroment.getExternalStorage取到的目录,再加上 /android/data/<package_name>/files的结果是一样的。
因此,回到getExternalStorage这个地方来,这个函数的注释说得很清楚了。
 
getExternalStorage返回的是 /mnt/sdcard/  这个路径指向的是主SD卡。
 
像小米3,或者是一些其它ANDROID机器,你会发现,根本没有机会让你使用SD卡,你怎么办呢?
答案是,你不需要怎么办,因为你买的小米3 16G,这个16G,就是sd卡,而不是机身内部存储。 
 
到此,可能你还是不放心,万一真的有用户没有SD卡怎么办呢。
我想的是弹一个提示,告诉用户去买张SD卡吧,又不贵。 因为一个没有SD卡的用户,机身内部存储卡估计也早满了,能够安装你的游戏,已经算是挤得不能再挤了,何必为这点东西而大改你的设计。
 
如果想要做得好,也可以先判定是否有SD卡,如果没有SD卡,则还是使用机身内存……。这要看如何取舍了。
 
BTW:在ANDROID上,判定SD卡剩余空间,也挺好弄的。 http://www.oschina.net/question/54100_33506?sort=time
PS:IOS还未测试

转载于:https://www.cnblogs.com/qilinzi/p/3828897.html

你可能感兴趣的文章
一位开发者的 Linux 容器之旅
查看>>
《实践者的研究方法》—— 第2章 软件工程 2.3 软件工程实践
查看>>
《妥协的完美主义:优秀产品经理的实践指南(卷二)》一2.4 团队外部协调...
查看>>
《贝叶斯方法:概率编程与贝叶斯推断》——1.8答案
查看>>
《C和C++代码精粹》——1.3 类型系统
查看>>
30个实例详解TOP命令
查看>>
《HTML CSS JavaScript 网页制作从入门到精通 第3版》—— 2.6 段落标记
查看>>
《响应式Web设计实践》一1.6 本书包含哪些内容
查看>>
《Java和Android开发实战详解》——导读
查看>>
《Netty 实战》Netty In Action中文版 第2章——你的第一款Netty应用程序(三)
查看>>
从学界到业界:关于数据科学的误解与事实
查看>>
3.6 HyperLogLog
查看>>
游戏玩家的福音:在 Ubuntu 上安装开源 VoIP 应用 Mumble
查看>>
《Web性能实践日志》一第1章 WebPageTest内部原理1.1 函数拦截
查看>>
《Android Studio应用开发实战详解》——第1章,第1.4节Android和Linux的关系
查看>>
《多核与GPU编程:工具、方法及实践》----3.4 信号量
查看>>
用机器学习的经验指导人生:如何实现学习效率最大化
查看>>
《Hack与HHVM权威指南》——1.6.1 没有类型的变量
查看>>
一次马失前蹄的SQL优化:递归查询引发的血案
查看>>
《HBase实战》一第一部分 HBase基础
查看>>