更新模块的整体方案终于搞定了,包括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. UI设计颜色风格

    有关颜色搭配方案: 摘取:http://bbs.9ria.com/thread-395-1-1.html 有关设计,可以参考:http://www.sj33.cn/

  2. TAQSkinScrollBar 类美化滚动条再讨论

    再说:TAQSkinScrollBar 类美化滚动条,http://www.138soft.com/?p=156  里面有人提到不可以滚动 滚动的改善方法: unit AQSkinScrollBar; ...

  3. 单片机与控制实验(5)——重量测量并在LCD12864显示

    一.实验目的和要求 掌握点阵式液晶显示屏的原理和控制方法,掌握点阵字符的显示方法.掌握模拟/数字(A/D)转换方式,进一步掌握使用C51语言编写程序的方法,使用C51语言编写实现重量测量的功能. 二. ...

  4. 【BZOJ3940】【BZOJ3942】[Usaco2015 Feb]Censoring AC自动机/KMP/hash+栈

    [BZOJ3942][Usaco2015 Feb]Censoring Description Farmer John has purchased a subscription to Good Hoov ...

  5. Shader实例:NGUI制作网格样式血条

    效果: 思路: 1.算出正确的uv去采样过滤图,上一篇文章说的很明白了.Shader实例:NGUI图集中的UISprite正确使用Shader的方法 2.用当前血量占总血量的百分比来设置shader中 ...

  6. Ubuntu 14.04安装Cinnamon桌面环境

    2014年05月26日 薄荷开源网,mintos,网如其名,自然最关注的还是 Linux Mint 这个 DistroWatch 排名第一的 Linux 发行版.奈何此前的 Linux Mint 17 ...

  7. 基于shell脚本比较数字加减乘除

    让用户输入两个数来比较他们的大小 先用touch命令新建一个2.sh文件 在用vi进入i进入编辑状态 输入 保存后检查

  8. js获取浏览器高度

    常用: JS 获取浏览器窗口大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // 获取窗口宽度 if (window.innerWidth) winWidth = ...

  9. QT 文件对话框(QFileDialog)

    1.选择文件(上传.打开...) QString QFileDialog::getOpenFileName( QWidget *parent = , //parent,用于指定父组件.注意,很多Qt组 ...

  10. Spark优化之二:集群上运行jar程序,状态一直Accepted且不停止不报错

    如果运行Spark集群时状态一直为Accepted且不停止不报错,比如像下面这样的情况: 15/06/14 11:33:33 INFO yarn.Client: Application report ...