cocos2dx3.2在安卓下实现资源和程序分离调试

       大鸟勿喷!!!最近在做安卓移植,一直郁闷为啥每次调试安卓都如此麻烦,程序的资源有好几百兆,每次打包到虚拟机调试都是个折磨,那么问题来了,为什么就不能像win一样,源码和资源分离?在折腾好几天之后,找出了个比较好的方案:

1.添加自定义资源路径(反正就是安卓下随便一个可读写的路径就行了),程序启动之后直接从这个路径读取资源,而不是从assets获取。

   const string GlobalSetting::CopyResToWriteDirOfAndroid="/mnt/shared/Resources/";  //稍后解析为什么我使用这个路径

 

2.在程序启动的时候修改引擎的资源搜索路径(我是在AppDelegate.cpp中添加的)

 

#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID

    if(GlobalSetting::CopyResToWriteDirOfAndroid!="")
    {
        //如果这个字段不是空的
        vector<string>SearchPaths=FileUtils::getInstance()->getSearchPaths();
        //将可读写目录加入到搜索的路径,这个其实是为了方便调试,不用打包资源到apk中
        SearchPaths.push_back(GlobalSetting::CopyResToWriteDirOfAndroid);
        FileUtils::getInstance()->setSearchPaths(SearchPaths);
        vector<string>().swap(SearchPaths);
    }
#endif


3.修改build_native.py中复制资源的代码,将下面两行注释掉就行,就是不要让脚本复制资源文件到assets文件夹中随程序打包到apk中

#if os.path.isdir(resources_dir):

     #copy_files(resources_dir,assets_dir)


4.将工程中Resources文件夹映射或挂载到android下

    其实完成了上边的三步就可以了,可是每次更新资源都要先复制一份到Resources文件夹下再复制一份到    GlobalSetting::CopyResToWriteDirOfAndroid这个路径下,略显麻烦,为了偷懒,我直接使用文件共享的功能将这个文件夹挂载到android下,然后程序直接访问这个文件夹,这样的话就只维护一份资源就行了。其实只要你想办法将文件共享下来就行了,如果是真机测试的话,安卓上有大把的软件可以实现着个功能。因为我使用的是genymotion模拟器,在virtualbox可以直接设置共享的文件夹,所以就直接使用了/mnt/shared/Resources/这个路径。至于具体的方法,就不列举了,反正想办法挂载到安卓中,在re管理器中能访问到这个文件夹就行,注意这个文件夹的权限问题。大概就这么多了。


5.延伸

    资源的热更新可以由这个方法中进行改造,具体的实现我还没有尝试,有时间在折腾折腾。。。。。。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值