文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

cocos2d-2.0-x-2.0.3 交叉编译到android报错解决

2022-06-06 11:02

关注

我用的是cocos2d-2.0-x-2.0.3 之前弄了一天也没成功 今天来了下载了最新的ndk8 更新了sdk 又重新是了一遍 居然成功了,不知道是工具的版本问题还是哪一步出错误了,在这里整理一下
首先各个工具都下下来配置好,然后将cygwin中的.bash_profile这个文件打开 在最后加上ndk的路径
NDK_ROOT=/cygdrive/c/android-ndk-r8d
export NDK_ROOT
2.找到cocos2dx中的create-android-project.bat这个文件打开然后有三个地方需要改
set _CYGBIN=C:\cygwin\bin
set _ANDROIDTOOLS=E:\eclipse\and sdk\tools
set _NDKROOT=C:\android-ndk-r8d
意思很明显就不多说了
3.修改完毕后运行这个文件 按照提示步骤创建android的工程然后将里面的Classes和Resources换成你之前写好的
4.打开proj.android这个文件中的build_native.sh进行编辑 新版的coco2.x 和之前的coco1.x这个文件不大一样 2.x的这个改了半天也不好用 我把1.x的直接拷贝过来修改了一下
代码如下:
# set params
NDK_ROOT_LOCAL=/cygdrive/c/android-ndk-r8d
COCOS2DX_ROOT_LOCAL=/cygdrive/e/cocos2d-2.0-x-2.0.3
buildexternalsfromsource=
usage(){
cat << EOF
usage: $0 [options]
Build C/C++ native code using Android NDK
OPTIONS:
-s Build externals from source
-h this help
EOF
}
while getopts "s" OPTION; do
case "$OPTION" in
s)
buildexternalsfromsource=1
h)
usage
exit 0
esac
done
# try to get global variable
if [ $NDK_ROOT"aaa" != "aaa" ]; then
echo "use global definition of NDK_ROOT: $NDK_ROOT"
NDK_ROOT_LOCAL=$NDK_ROOT
fi
if [ $COCOS2DX_ROOT"aaa" != "aaa" ]; then
echo "use global definition of COCOS2DX_ROOT: $COCOS2DX_ROOT"
COCOS2DX_ROOT_LOCAL=$COCOS2DX_ROOT
fi
HELLOWORLD_ROOT=$COCOS2DX_ROOT_LOCAL/TestCocos/proj.android
# make sure assets is exist
if [ -d $HELLOWORLD_ROOT/assets ]; then
rm -rf $HELLOWORLD_ROOT/assets
fi
mkdir $HELLOWORLD_ROOT/assets
# copy resources
for file in $COCOS2DX_ROOT_LOCAL/TestCocos/Resources/*
do
if [ -d $file ]; then
cp -rf $file $HELLOWORLD_ROOT/assets
fi
if [ -f $file ]; then
cp $file $HELLOWORLD_ROOT/assets
fi
done
if [[ $buildexternalsfromsource ]]; then
echo "Building external dependencies from source"
$NDK_ROOT_LOCAL/ndk-build -C $HELLOWORLD_ROOT $* \
NDK_MODULE_PATH=${COCOS2DX_ROOT_LOCAL}:${COCOS2DX_ROOT_LOCAL}/cocos2dx/platform/third_party/android/source
else
echo "Using prebuilt externals"
$NDK_ROOT_LOCAL/ndk-build -C $HELLOWORLD_ROOT $* \
NDK_MODULE_PATH=${COCOS2DX_ROOT_LOCAL}:${COCOS2DX_ROOT_LOCAL}/cocos2dx/platform/third_party/android/prebuilt
fi

里面主要是配置一些路径 大家要好好对照下绿色部分 我就是这个文件配置了好久都没成功导致后面的怎么也不行
5.配置Android.mk
主要就配置LOCAL_SRC_FILES这个参数 如果你没加什么类库的话其余的参数都不用配置 当然制作了一个小游戏直接用的cocos生成的类 所以这个文件压根都不用改
代码如下:
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp

6.运行cygwin 输入 cd $NDK 回车
然后用/cygdrive/后面加文件位置定位到 你的build_native.sh这个文件位置
然后输入 ./build_native.sh
 
就会将你的c++代码编译成android的class文件并将资源文件什么的都拷贝过去
7.倒入这个项目到eclipse中
里面可能会报红叉,比如找不到库文件 这是要把cocos2d-2.0-x-2.0.3\cocos2dx\platform\android\java\src这个目录下的lib包拷贝到项目中
还有其他的错误可是要点击项目右键androidtools->fix project一下 然后把java compiler换成 1.6的
还有就是类中生成的这句话不要改
代码如下:
static {
System.loadLibrary("game");
}

不然后报java cocosdx Couldn't load cocos2dx: findLibrary returned null 这个错误
然后运行就应该成功了 您可能感兴趣的文章:Android如何防止apk程序被反编译(尊重劳动成果)android的编译和运行过程深入分析android apk反编译到java源码的实现方法使用android-apktool来逆向(反编译)APK包方法介绍Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解使用Android studio创建的AIDL编译时找不到自定义类的解决办法ubuntu 12.10 上 android 编译环境搭建的深入解析Mac OS下为Android Studio编译FFmpeg解码库的详细教程Android开发apk反编译和二次打包教程Android Studio gradle 编译提示‘default not found’ 解决办法


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯