广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-04-05 08:32:11 次阅读 稿源:互联网
    广告
    我用的是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 这个错误
    然后运行就应该成功了

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告