从零开始搭建M1笔记本的cocos2dx环境

新得一台macbook m1pro笔记本, 基于该型号的笔记本发热低,性能优良,打算在上面搭建一个cocos2dx的开发环境, 但是没想到会有这么多兼容问题. 所以记录一下自己遇到的问题以及各种问题的解决方案, 以备后续遇到类似问题的同学可以快速解决.

环境:

Xcode: Version 15.2
Mac M1: Version 14.3.1
Python 2.7.18
cmake version 3.28.3

主要遇到以下几个问题:

1、git submodule update 更新不了(猜测是访问github失败导致)
2、初始化执行的时候,python需要python2版本, 通过安装pyenv解决了
3、没有cmake, 自行安装了brew, 通过brew安装了cmake
4、新建应用项目,发现环境变量不行, 通过 source .zshrc 搞定
5、运行程序提示没有模拟器sdk, 将base sdk里的配置改成ios可以了
6、编译的时候提示没有iconv库, 修改了源代码,搞定了.
7、运行的时候,提示代码异常,无法安装(通过第5步解决了)
8、cocos2dx更新下来的项目是默认8.0的操作系统,需要改一下
9、libchipmunk.a 不兼容问题, 修改一下destiation就可以了, 详细的请看下面
10、cocos HelloCpp.app has missing or invalid CFBundleExecutable in its Info.plist
11、cocos lua_open Thread 1: EXC_BAD_ACCESS (code=1, address=0x6010759), 解决方案是用这个替换cocos里面的luajit的库

以下是基本步骤:

  1. 首先, 跟着github的readme进行初步下载和搭建
        cocos2d-x
  2. 根据另外一个wiki创建程序
    cmake#generate-ios-project
    初始化模拟器目录的方法:

    cd cocos2d-x mkdir si-ios-build && cd si-ios-build 
    cmake .. -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator 
    open Cocos2d-x.xcodeproj

     

  3. git submodule update –init 失败了

    Please make sure you have the correct access rights and the repository exists. fatal: clone of 'git://github.com/dumganhar/ccs-res.git' into submodule path '/Users/xxxx/game_workspace/cocos2d-x/tests/cpp-tests/Resources/ccs-res' failed Failed to clone 'tests/cpp-tests/Resources/ccs-res'. Retry scheduled Cloning into '/Users/xxxx/game_workspace/cocos2d-x/tools/bindings-generator'... fatal: Could not read from remote repository.

    最后没办法,只能自己一个目录一个目录cd进去 执行git clone命令

  4. 编译发布的时候提示自己的arm64不能在mac M1上运行, 提示安装异常
    原因是 cocos2d-x/external/chipmunk/prebuilt/ios/libchipmunk.a[arm64][2](chipmunk.c.o))
    built for ‘iOS’
    解决方案 : xcode -> product -> destiation -> destiation architectures -> show rosetta destiations
    兼容m1芯片的笔记本 运行模拟器
  5. 发现在模拟器上一直运行不起来HelloApp, 于是尝试在真机上运行,但是又卡在了在provision profile这里了,不知道哪里可以生成证书, 试了几种方式都不行, 包括下面这个
        create-developer-id-certificates
  6. 还有一个问题是运行HelloApp的时候遇到的:
    Please try again later. Bundle at path /Users/xxxx/Library/Developer/CoreSimulator/Devices/B6E81142-7BD6-4BB6-9344-2ECCB504FEF4/data/Library/Caches/com.apple.mobile.installd.staging/temp.x0tP0S/extracted/Jump.app has missing or invalid CFBundleExecutable in its Info.plist

    这个问题也困扰了我很久

  7. 最后
    5和6 没办法解决,
    但是模拟器里目前可以运行cocos的例子了.