Cocos2d-x 3.x下使用VS2013进行项目打包的经验

Cocos2d-x 3.x的自动打包功能是可以支持VS2013的,但是由于自动创建的项目中使用了VS2012的解决方案文件,导致cocos2d-x打包在寻找编译器时,无法找到VS2012的编译器而宣告打包失败。实际上你需要的只是VS2013的编译器不是么。

Cocos2d-x 3.x的编译

Cocos2d-x 3.x的编译工具与新项目创建工具相同,同样是运行cocos命令,只是参数不一样了。在命令行中,更改当前目录为你的项目目录,确保当前目录中存在“.cocos-project.json”文件,该文件很重要,是cocos命令确认项目属性的关键文件。执行以下指令可以开始编译:

cocos compile -p 平台名称 -m [debug|release]

平台名称即是你所看到的目录中proj.后面的那些名字,比如win32、android等,指定不同的平台名称,会编译不同的平台。-m指定是以debug模式打包还是release模式。打包后的程序会出现在publish目录中以平台命名的目录中。

如果执行以下命令

cocos run -p 平台名称 -m [debug|release]

将在编译完成后直接启动编译后的程序,如果执行的是Android程序,你需要先用USB连接开启了调试模式的Android设备,因为虚拟设备中没有硬件加速,不能运行cocos2d应用。

使用VS2013的编译器进行编译

在仅安装有VS2013的机器上执行编译时,会提示无法找到VS2012的编译器。我们用的是VS2013,当然找不到VS2012的。这个问题是由于cocos在寻找编译器时,是根据解决方案(.sln)文件中的内容来决定选择哪个编译器的。虽然我们用VS2013转换了cocos2d-x提供的VS2012的解决方案,但是sln文件里依旧写的是2012的信息。所以,一劳永逸的办法就是修改cocos命令。当然你也可以修改sln文件内容,不过这个方法不推荐,因为这样有可能会有损坏sln文件的风险,一切以保证项目的安全为准。

进入cocos2d的根目录,打开tools\cocos2d-console\plugins\project_compile目录中的project_compile.py文件,最好使用sublime text或者notepad++之类的编辑器,会比较好寻找行号。不用理会那个同样名字的pyc文件,pyc文件会在py文件发生更改后,重新编译生成。在文件中寻找以下这个方法

    def _get_required_vs_version(self, proj_file):
        # get the VS version required by the project
        file_obj = open(proj_file)
        pattern = re.compile(r"^# Visual Studio (\d{4})")
        num = None
        for line in file_obj:
            match = pattern.match(line)
            if match is not None:
                num = match.group(1)
                break

        if num is not None:
            if num == "2012":
                ret = "11.0"
            elif num == "2013":
                ret = "12.0"
            else:
                ret = None
        else:
            ret = None

        return ret

看到这个对于2012和2013的判断了么,所有问题就出在这个地方。不要修改那些将ret设置为None的地方,直接将ret = “11.0"改为ret = “12.0"即可。保存后重新开始编译,VS2013的编译已经可以找到。

你可能感兴趣的:(android,打包,编译,cocos2d-x,VS2013)