美文网首页程序员
cocos2d-js打包重签名

cocos2d-js打包重签名

作者: samael | 来源:发表于2017-02-06 11:31 被阅读257次

    原文地址

    问题

    游戏要出包, 由于使用cocos2d-js开发, 所以在发布游戏的时候js文件要编译成jsc的格式. 如果使用xcode进行Archive那么需要以下步骤

    1. 对js文件进行编译
    2. 修改项目结构中的Resource/src(游戏代码)与script(引擎代码), 使之指向jsc的目录
    3. 打包

    这种方式其实对开发很不友好, 因为在发布之后我们又需要改一遍项目结构进行开发, 而且不能进行自动化的集成.

    cocos compile其实可以对js文件进行编译并输出ipa, 之后输出的ipa包使用iOS App Signer 重签名. 虽然签名成功了, 但是在安装到真机上时会报出CPU类型不符这样的错误

    原因

    查看引擎目录下的

    /tools/cocos2d-console/plugins/plugin_compile/project_compile.py

       def build_ios(self):
            if not self._platforms.is_ios_active():
                return
    
            if not cocos.os_is_mac():
                raise cocos.CCPluginError(MultiLanguage.get_string('COMPILE_ERROR_BUILD_ON_MAC'),
                                          cocos.CCPluginError.ERROR_WRONG_ARGS)
            # 这里
            if self._sign_id is not None:     
                cocos.Logging.info(MultiLanguage.get_string('COMPILE_INFO_IOS_SIGN_FMT', self._sign_id))
                self.use_sdk = 'iphoneos'
            else:
                self.use_sdk = 'iphonesimulator'
    
        ... 以下省略 ...
         try:
                cocos.Logging.info(MultiLanguage.get_string('COMPILE_INFO_BUILDING'))
    
                command = ' '.join([
                    "xcodebuild",
                    "-project",
                    "\"%s\"" % projectPath,
                    "-configuration",
                    "%s" % 'Debug' if self._mode == 'debug' else 'Release',
                    "-target",
                    "\"%s\"" % targetName,
                    # 这里
                    "%s" % "-arch i386" if self.use_sdk == 'iphonesimulator' else '', 
                    "-sdk",
                    "%s" % self.use_sdk,
                    "CONFIGURATION_BUILD_DIR=\"%s\"" % (output_dir),
                    # 这里
                    "%s" % "VALID_ARCHS=\"i386\"" if self.use_sdk == 'iphonesimulator' else ''
                    ])
        ... 以下省略 ...
    

    这里可以发现, 如果在cocos compile中不使用SIGN_ID时, 生成的其实是让模拟器使用的i386的包

    解决

    真正的命令是:

    cocos compile -p ios -t TARGET -m release –sign-identity SIGN_ID

    之后在会在游戏项目publish下生成ipa文件

    相关文章

      网友评论

        本文标题:cocos2d-js打包重签名

        本文链接:https://www.haomeiwen.com/subject/giiyittx.html