quick-cocos2dx luajit 设置 debug 上传App Store ITMS - 90209 Invalid Segment Alignment

Quick-Cocos2dx-Community 中 64 位 Luajit 使用说明

由 Benz 于 星期四, 2015-10-29 14:08 发表

在 3.6 中,我们加入了 Luajit 2.1 以支持 64 位 bytecode,并替换掉了原生lua。

由于android并没有强制要求64位,Luajit在不用的平台使用不同的位数支持。情况如下:

Android、Win32、Mac 继续使用32位的jit。

iOS更新硬件来决定使用的jit位数,5s以上设备使用64位jit,以下设备使用32位jit。

事实上每个平台都需要独立的luajit库支撑,引擎提供的luajit包含了各个平台的库,游戏开发者可放心使用。

在大部分时候,你不需要感知Luajit的存在,依然像往常一样正常使用 Player 来开发游戏。

以下两个情况是你需要注意的:

使用 Xcode 的 iOS 模拟器来测试代码。如果你选择iPhone 5s或以上的模拟器,那么你需要在 project 的 other linker flags 中增加以下参数:

-pagezero_size 10000 -image_base 100000000

切记千万别把-ObjC参数给删掉 不然会闪退,因为链接不到oc相关的库

最终是 -ObjC -pagezero_size 10000 -image_base 100000000

如下图所示:


Xcode 的 iOS 模拟器

注意:iPhone 4s模拟器不需要设置。

调试完成请去掉这个参数设置,否则AppStore上新检查将不能通过, 会报错ITMS - 90209 Invalid Segment Alignment。

游戏发布的时候,针对iOS你需要用 compile_scripts 分别生产 32 和 64 位的 bytecode包,并在游戏启动逻辑加入系统位数判断,以启动不同的包。

Quick comminuty 3.6中的compile_scripts已支持在Mac平台生成iOS上可运行的64位bytecode。

新建的工程中的文件runtime-src/Classes/AppDelegate.cpp有示例代码,如下:

#if 0

// use luajit bytecode package

stack->setXXTEAKeyAndSign("2dxLua", "XXTEA");

if (sizeof(long) == 4) {

stack->loadChunksFromZIP("res/game.zip");

} else {

stack->loadChunksFromZIP("res/game64.zip");

}

stack->executeString("require 'main'");

#else

// use discrete files

engine->executeScriptFile("src/main.lua");

#endif

发布正式ipa或apk包的时候,请把#if 0修改为#if 1。

注:3.6中修改了stack->setXXTEAKeyAndSign接口,因为两个长度参数完全多余。

有关 compile_scripts 的详细使用说明,参考链接 Quick-Cocos2dx-Community 在发布时加密lua源文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,194评论 4 61
  • 每天晚上睡不着都已经开始习惯给你写东西了,但又不知道说些什么。说再多也回不到从前了,每次都在挽留你可是得不到你的回...
    陈糖糖阅读 4,166评论 0 0
  • 期末工作极其繁忙。我负责考务。 接触好多老师,服务众多学生。 老师确实可敬,大多在拼命地工作。 老师确实可恨,不少...
    十字架下的树洞阅读 3,177评论 0 1
  • 春天到了天气开始忽冷忽热,虽然我们都知道防止换季粗糙敏感,但很多仙女们还是会叫嚷着眼珠子都要干得掉下来了。 ...
    德意志百宝箱的小辛妹儿阅读 1,742评论 0 0
  • 对比昨天的,有进步哈。。。
    若如初见_1ac9阅读 1,254评论 0 3