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

我用的是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 这个错误
然后运行就应该成功了

(0)

相关推荐

  • android的编译和运行过程深入分析

    首先来看一下使用Java语言编写的Android应用程序从源码到安装包的整个过程,示意图如下,其中包含编译.链接和签名等: (1)使用aapt工具生成R.java文件 可以先通过搭建好的Eclipse开发环境创建一个未编译的Android工程,记的一定要将Eclipse中Project菜单下的Build Automatically选项前面的对勾去掉后再去创建工程.创建好未编译的工程后,在命令行中输入如下命令: d:\android-sdk-windows\platform-tools>aapt

  • 使用android-apktool来逆向(反编译)APK包方法介绍

    谷歌官方提供了apktool可以逆向已经发布出去的APK应用,即反编译已经打包成功的APK文件,使用它可以将其反编译成非常接近打包前的原始格式,对于APK来说,可以具体的逆向AndroidManifest.xml.资源文件resources.arsc以及将dex文件反编译成可以调试的smali文件. Warnning 但apktool并不等于是可以用来侵犯前作者的作品的工具,所以使用apktool工具的用户千万不用用其来进行不正当.非法的使用. It is NOT intended for pi

  • Android Studio gradle 编译提示‘default not found’ 解决办法

    在导入studio工程的时候,进行sync的时候,提示Error:Configuration with name 'default' not found. 之前由于对gradle不熟悉,所以没有找到原因,其实也是偷懒,没有认真去排查问题,今天又遇到了,就折腾了会,把所有的配置文件都打开看,最终解决问题了,发现尽然是个低级的不能低级的问题,故记录下,警醒自己. 1.打开settings.gradle发现里面有很多个include ':app'这样的include,然而发现在工程的目录下面根本没有i

  • Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解

    随着工程越来越复杂,项目越来越多,以及平台的迁移(我最近就迁了2回),还有各大市场的发布,自动化编译android项目的需求越来越强烈,后面如果考虑做持续集成的话,会更加强烈.    经过不断的尝试,在ubuntu环境下,以花界为例,我将一步一步演示如何使用命令行,使用ant编译android项目,打包多渠道APK.    要点:    (1). 编译android的命令使用    (2). ant基本应用    (3). 多项目如何编译(包含android library)    (4). 如

  • android apk反编译到java源码的实现方法

    Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码. 之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能. 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反编译到java源码想必就不用我来多说了吧. 首先我们需要的工具是dex2jar和jd-gui 其中第一个工具

  • Android如何防止apk程序被反编译(尊重劳动成果)

    作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一proguard文件夹 proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用. 下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先

  • ubuntu 12.10 上 android 编译环境搭建的深入解析

    1. 安装所有的套件sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 g++-multilib mingw32 openjdk-6-jdk tofrodos python-mar

  • 使用Android studio创建的AIDL编译时找不到自定义类的解决办法

    使用AS创建ADIL文件时AS会在main文件夹下给我们生成一个aidl文件夹和一个相同包名的包,通常我们会把所有和ADIL相关的类或文件放在这个包下,但是如果存在自定义的类时,程序编译时无法通过,提示找不到自定义的包.解决办法如下,在启动Module的build.gradle中加入如下代码: sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java', '

  • Android开发apk反编译和二次打包教程

    作为Android开发者,工作中少不了要反编译别人的apk,当然主要目的还是为了学习到更多,取彼之长,补己之短.今天就来总结一下Android反编译和二次打包的一些知识.首先声明本文的目的是为了通过例子讲解反编译和二次打包的原理和方法,继而作为后续讲解防止二次打包和App安全的依据,并不是鼓励大家去重新打包别人的App,盗取他人劳动成果. 本文首先介绍几种Android反编译工具的使用,然后实现在不需要知道源代码的情况下,仅通过修改反编译得到的smali文件实现修改apk逻辑功能的目的. And

  • Mac OS下为Android Studio编译FFmpeg解码库的详细教程

    NDK部分 1.下载ndk 这里就一笔带过了. 2.解压ndk 不要解压,文件权限会出错.执行之,会自动解压,然后mv到想放的地方.我放到了"/usr/local/bin/android-ndk-r10d"(此目录之后用$NDK_DIR指代). 3.下载Ffmpeg 我下的是2.5.3版本. 4.解压Ffmpeg 解压Ffmpeg到$NDK_DIR/sources/ffmpeg-2.5.3. 5.修改Ffmpeg编译配置 在ffmpeg-2.5.3目录下把configure文件中的这几

随机推荐