Cocos2d-x第一个坑,NDK 编译环境

时间:2023-03-09 01:08:36
Cocos2d-x第一个坑,NDK 编译环境

这些天搭建windows cocos2d-x的环境,基本上崩溃到死。目前好转。终于可以编译通过:

生成模板工程:在cmd下进入cocos2d-x的主目录,D:\Android\cocos2d-x-2.2.1\tools\project-creator 使用命令创建工程Demo,然后通过cygwin进入D:\Android\cocos2d-x-2.2.1\project,发现若干目录。进入proj.android,照规定调用./build_native.sh

坑1:未定义NDK_ROOT,去环境变量增加 D:\Android\ndk ,后编译通过。生成so文件。

坑2:把工程从cocos2d的目录拷贝了出去,于是出现各种编译问题:

make: 进入目录“/cygdrive/g/NextWork/demo2/proj.android”
jni/Android.mk:23: *** Android NDK: Aborting. 。 停止。

make: 进入目录“/cygdrive/g/NextWork/demo2/proj.android”
/cygdrive/d/Android/ndk/build/core/build-binary.mk:272: *** 目标模式不含有“%”。 停止。

解决问题方法:

1、修改build_native.sh文件,其中

# ... use paths relative to current directory
COCOS2DX_ROOT="/cygdrive/d/Android/cocos2d-x-2.2.1"  //////此处要更换为你的cocos的目录,注意用/cygdrive/的方式。 我被D:/坑了很久
APP_ROOT="$DIR/.."
APP_ANDROID_ROOT="$DIR"

2、位于proj.android/jni中的android.mk文件

修改在$(call import-module,cocos2dx)前增加两行

$(call import-add-path, D:/Android/cocos2d-x-2.2.1)   
$(call import-add-path,D:/Android/cocos2d-x-2.2.1/cocos2dx/platform/third_party/android/prebuilt)

3、如果先前通过cmd直接调用过ndk-build命令的话,可能工程下生成有obj文件夹,这个要清理掉,我被坑了几次。

然后进入cygwin,再次输入./build_native.sh

编译通过,注意检查该命令在开始执行时输出的信息是否正确

NDK_ROOT = D:\Android\ndk
COCOS2DX_ROOT = /cygdrive/d/Android/cocos2d-x-2.2.1
APP_ROOT = /cygdrive/g/NextWork/demo2/proj.android/..
APP_ANDROID_ROOT = /cygdrive/g/NextWork/demo2/proj.android

由于我在环境变量里设置的NDK_ROOT是win的路径,有一个警告,不过好像没什么问题。

cygwin warning:
MS-DOS style path detected: D:\Android\ndk/ndk-build
Preferred POSIX equivalent is: /cygdrive/d/Android/ndk/ndk-build