默认player是从预编译framework_precompiled.zip包加载framework的, 这样做会提高运行效率,但是也会带来一些不便:

1. framework的错误无法命中行号:

1
2
3
stack traceback:
[C]: in function 'addChild'
[string ".../quick-cocos2d-x-2.2.5//framework/shortcodes.lua"]:0: in function 'add'

如上, 无论错误在哪里, 都会显示0 行.

2. 修改framework后得重新打预编译包, 无法做到实时, 出错后又无法准确定位.

这就需要我们从源码加载framework.

打开$QUICK-COCOS2D-X/player/sources/AppDelegate.cpp, 找到:

1
2
3
4
5
if (projectConfig.isLoadPrecompiledFramework())
{
const string precompiledFrameworkPath = SimulatorConfig::sharedDefaults()->getPrecompiledFrameworkPath();
pStack->loadChunksFromZIP(precompiledFrameworkPath.c_str());
}

修改为:

1
2
3
4
5
if (projectConfig.isLoadPrecompiledFramework())
{
const string quickCocos2dxRootpath = SimulatorConfig::sharedDefaults()->getQuickCocos2dxRootPath();
pStack->addSearchPath(quickCocos2dxRootpath.c_str());
}