更新模块的整体方案终于搞定了,包括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还未测试

ANDROID下面的游戏更新目录的更多相关文章

  1. android SDK 离线下载更新

    http://blog.csdn.net/harvic880925/article/details/37913801 前言:在公司配置eclipse做android开发,真是烦死了,不知公司做了哪门子 ...

  2. android sdk manager 无法更新解决方法

    因为在开始->运行->cmd 中敲入 ping dl-ssl.google.com -t 始终ping不通 ,关闭cmd后 首先需要下载一个代理服务器下载地址 http://pan.bai ...

  3. Android SDK Manager无法更新,内容显示不全的解决办法

    最近在初学android开发,在更新SDK的时候遇到了麻烦. 发现Extras文件夹下为空,没有内容,包括sdk列表也不全面,更新也没有反应 解决方法: 1.在SDK Manager下Tools-&g ...

  4. 项目源码--Android答题类游戏源码

    下载源码 技术要点: 1. 精致的答题UI 2. Android的Http通信技术 3. Android数据库QLITE与其他数据存储技术 4. Android在线音乐背景技术 5. Android答 ...

  5. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)

    正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...

  6. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之开发游戏界面(二)

    连连看的游戏界面十分简单,大致可以分为两个区域: 游戏主界面区 控制按钮和数据显示区 1.开发界面布局 本程序使用一个RelativeLayout作为整体的界面布局元素,界面布局上面是一个自定义组件, ...

  7. Android SDK Manager 无法更新问题(转载)

    先看看如何加快更新速度,再说如何更新. 首先更新host文件,如图,打开目录 C:\Windows\System32\drivers\etc,在目录下有hosts文件 打开方式选用“记事本”打开 将一 ...

  8. Android接入百度自动更新SDK

    一:前言 公司的app,上传到百度应用市场,然后说必须要接入百度的自动更新sdk才能上架,于是从百度官网上去下载jar包,下载的时候必须要带上数据统计,如果使用自动的jar包,还需要带上广告联盟,坑爹 ...

  9. Android斗地主棋牌游戏牌桌实现源码下载

    本次给大家分享下Android斗地主棋牌游戏牌桌实现源码下载如下: 为了节约内存资源,每张扑克牌都是剪切形成的,当然这也是当前编程的主流方法. 1.主Activity package com.biso ...

随机推荐

  1. Youth -Samuel Ullman

    Samuel Ullman(塞缪尔.厄尔曼) Youth is not a time of life,it is a state of mind;青春不是年华,而是心境: it is not a ma ...

  2. shell(一)

    #服务器之间拷贝数据 scp  -r   本地文件目录    系统用户名@IP:目标文件夹路径

  3. python 学习第五天,python模块

    一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py ...

  4. Qt实现端口扫描器

    首先展示一下效果: 界面通过Qt设计师做出来的. 主要有两个类. 首先主函数: #include "mainwindow.h" #include <QApplication& ...

  5. Ajax跨域Post方法调用Web Api(NuGet配置的环境)

    没安装的去NuGet安装, 然后安装, 建立Web Api项目.需要在里的WebApiConfig.cs里配置 config.EnableSystemDiagnosticsTracing(); //感 ...

  6. jQuery.rotate.js参数

    CSS3 提供了多种变形效果,比如矩阵变形.位移.缩放.旋转和倾斜等等,让页面更加生动活泼有趣,不再一动不动.然后 IE10 以下版本的浏览器不支持 CSS3 变形,虽然 IE 有私有属性滤镜(fil ...

  7. [资料分享]nutch视频教程

  8. 【翻译svg教程 】svg 的坐标系统

    http://tutorials.jenkov.com/svg/svg-coordinate-system.html svg的坐标系统(和大多数计算机绘图的坐标系统)和数学中绘图系统有点不一样 数学/ ...

  9. Js的typeof和Js的基本数据类型

    本文将从以下几个方面介绍Js的typeof和Js的基本数据类型: ** Js的typeof的用法 ** Js的基本数据类型 ** 使用基本类型使用typeof的返回结果 ** Js的typeof的用法 ...

  10. C#SerialPort如何读取串口数据并显示在TextBox上

    SerialPort中串口数据的读取与写入有较大的不同.由于串口不知道数据何时到达,因此有两种方法可以实现串口数据的读取.一.线程实时读串口:二.事件触发方式实现. 由于线程实时读串口的效率不是十分高 ...