这个可以在更新flist文件的时候就应该可以获取到需要下载的文件大小总和,来判断存储空间是否不足。
怎么知道存储空间还有多大,要下载的文件的总和我是知道的
不同平台有不同的接口, 你可以搜索下 ios 和 android 上获取存储空间还有多大的相关链接。
用的是这更新,iOS真机报错app里已经下到flist,需要更新的资源上传到服务器根目录就行么?
flist 文件是按照我给的样式写的吗?请检查下。
问下 launcher里面getappversioncode()这个方法 得出来的版本是哪个版本?
在不同平台上定义的版本。对应发布整包的版本。
那这个发布版本是一定的,那更新过一次后,每次启动更新都会将更新目录删除?
local appVersionCode = Launcher.getAppVersionCode()
if appVersionCode ~= self._fileList.appVersion then
–新的app已经更新需要删除upd/目录下的所有文件
Launcher.removePath(self._path)
require(“main”)
return
end
不是 的 这块逻辑是当有大版本更新的时候,也就是apk 或者ipa更新了,在更新第一次启动的时候才会删除以前保存在upd/目录下的资源文件。之后再启动游戏就不会走这块的逻辑了。
thanks我看错了是
楼主可以出个quickV3的例子吗?感觉还是有点迷糊。。。
有点不太明白为什么framework_precompiled.zip也要热更新?
如果这个zip热更新到了新版,但对应的C++部分的代码还是旧版,会有问题吧,如果API变了怎么办。
我的理解这个zip应该和C++部分的核心一起升级才对,也就是需要通过app store进行大版本更新。
我遗漏了什么?
ramework_precompiled.zip 不一定是c++ 代码有问题啊 ,C++ 有问题就只能等整包更新,framework_precompiled lua 也有很多代码的 你能保证没有bug?
请看一下我楼上的解释,有不明白的,可以再提出来。
多谢解答。
如何才能得知某一版本的更新只变动了framework的而没有变动C++呢?
通过人工去看?如果只变了framework,则热更新,如果C++也变了,则app store整包更新?
一般自己的项目发布了,底层框架就应该上传自己的svn 或者git 备份保,有些改动并不是框架会修改,很有可能是你们项目需求需要修改。这样你就得维护你自己的框架版本。另外 quick 更新了, 不是大版本的更新,只是修改了一些bug,比如内存泄露,ui 等等,你的项目受到影响 需要更新,你可以从github上下载更新的quick 在和自己备份的底层框架做merge.
明白了,这样的话确实是有用。多谢多谢!
楼主您好,我有几个问题希望能帮我解答下。
1、AppDelegate.cpp 中的
void AppDelegate::initResourcePath()
{
CCFileUtils* sharedFileUtils = CCFileUtils::sharedFileUtils();
//设置SearchPaths
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
std::vectorstd::string oldSearchPaths = sharedFileUtils->getSearchPaths();
std::vectorstd::string tempPaths(oldSearchPaths);
std::vectorstd::string searchPaths;
searchPaths.push_back(sharedFileUtils->getWritablePath() + “upd/”);
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
searchPaths.push_back(“res/”);
#else
std::string strBasePath = getAppBaseResourcePath();
searchPaths.push_back(strBasePath);
searchPaths.push_back(strBasePath + “res/”);
#endif
for (int i = 0; i < tempPaths.size(); ++i) {
//searchPaths.push_back(tempPaths); 我这里编译不了 我用的是xcode6.1 改成了下面的代码
searchPaths.push_back(tempPaths*);
}
sharedFileUtils->setSearchPaths(searchPaths);
#else
sharedFileUtils->addSearchPath(“res/”);
#endif
}这样改是否有问题? 2、客户端的flist文件是打第一个包的时候就打到res根目录下的?还是怎么回事? launcher.lua 请看注释描述 <pre class="brush:lua; toolbar: true; auto-links: false;"> function LauncherScene:_checkUpdate() Launcher.mkDir(self._path) self._curListFile = self._path .. Launcher.fListName print("curListFilePath:" .. self._curListFile) if Launcher.fileExists(self._curListFile) then self._fileList = Launcher.doFile(self._curListFile) end if self._fileList ~= nil then local appVersionCode = Launcher.getAppVersionCode() if appVersionCode ~= self._fileList.appVersion then --新的app已经更新需要删除upd/目录下的所有文件 Launcher.removePath(self._path) require("main") return end else -- 程序在这里出问题了 调用doFile方法报错 Launcher.fListName=flist 错误为 LUA ERROR: :0: bad argument #1 to 'loadstring' (function expected, got nil) -- 应该是这个文件不存在导致的 而且这里只是传入一个文件名是怎么回事? self._fileList = Launcher.doFile(Launcher.fListName) end if self._fileList == nil then self._updateRetType = Launcher.UpdateRetType.OTHER_ERROR self:_endUpdate() end self:_requestFromServer(Launcher.libDir .. Launcher.lcherZipName, Launcher.RequestType.LAUNCHER, 30) end3、require(“lfs”) 这个lfs是什么东西?
4、我使用的是quickV3 RC1 我将launcher中的v2的代码全部改成了V3支持。暂时不知道还有没有其他问题,如果我所有测试通过。我将会把我的发上来跟大家分享。*
*
*
*
*
期待楼主大大的回答 多谢!!!
问题1: 是我再论坛上打漏了,应该是这样的searchPaths.push_back(tempPaths i ]);
问题2:客户端的flist文件是打包的时候就放到res根目录下的
问题3:require(“lfs”) 是lua版本的文件操作库
问题4:quick v3版本的只需要修改v3支持的地方就可以跑在v3上了。
PS: 我发现 论坛上的bug了 “ i ]” 打了不能显示 。。。。。。必须在中间加空格。
请查看楼上回答。