我们知道eclipse编译的apk,默认会对kzb格式的文件进行压缩的,kanzi 3.5开始为了加快kzb的读取速度,使用的是非压缩的文件读写的方法,无法读取压缩过的kzb,所以默认编译的apk会无法启动,提示无法读取kzb~
最好的解决办法是配置eclipse编译apk不压缩kzb,但是没找到办法
另一个解决办法就是指定kzb从sdcard读取,不把kzb打包到apk里
代码如下
virtual void onConfigure(ApplicationProperties& configuration) KZ_OVERRIDE
{
...
#ifdef ANDROID
kzsFileBaseSetResourceDirectory("/sdcard/DCIM/Kanzi/");
#endif
}
virtual void onProjectLoaded() KZ_OVERRIDE
{
...
//this works on android, proving that the path is correct
KzcImage* image = NULL;
kzcImageLoadFile(getDomain()->getMemoryManager(), "/sdcard/DCIM/Kanzi/3D-Car-Models-7.jpg", &image);
kzsLogFormat(KZS_LOG_LEVEL_INFO, ("image: %p", image));
//this is expected to work, if the above works.
TextureSharedPtr texture = getResourceManager()->tryAcquireResource<Texture>("file://./3D-Car-Models-7.jpg");
}最好的办法还是推荐直接使用kanzi的scons来编译~
如果是android studio 的话,直接添加如下配置再build.gradle 里添加
build.gradle里加入如下内容
aaptOptions {
noCompress 'cfg', 'kzb', 'txt'
}