cocos2d-2.0-x-2.0.3 交叉編譯到android報錯解決
更新時間:2013年01月17日 16:21:54 作者:
我用的是cocos2d-2.0-x-2.0.3 之前弄了一天也沒成功 今天來了下載了最新的ndk8 更新了sdk 又重新是了一遍 居然成功了,不知道是工具的版本問題還是哪一步出錯誤了,在這里詳細的整理一下,感興趣的朋友可以了解下
我用的是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.修改完畢后運行這個文件 按照提示步驟創(chuàng)建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
里面主要是配置一些路徑 大家要好好對照下綠色部分 我就是這個文件配置了好久都沒成功導(dǎo)致后面的怎么也不行
5.配置Android.mk
主要就配置LOCAL_SRC_FILES這個參數(shù) 如果你沒加什么類庫的話其余的參數(shù)都不用配置 當(dāng)然制作了一個小游戲直接用的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 這個錯誤
然后運行就應(yīng)該成功了
首先各個工具都下下來配置好,然后將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.修改完畢后運行這個文件 按照提示步驟創(chuàng)建android的工程然后將里面的Classes和Resources換成你之前寫好的
4.打開proj.android這個文件中的build_native.sh進行編輯 新版的coco2.x 和之前的coco1.x這個文件不大一樣 2.x的這個改了半天也不好用 我把1.x的直接拷貝過來修改了一下
復(fù)制代碼 代碼如下:
# 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
里面主要是配置一些路徑 大家要好好對照下綠色部分 我就是這個文件配置了好久都沒成功導(dǎo)致后面的怎么也不行
5.配置Android.mk
主要就配置LOCAL_SRC_FILES這個參數(shù) 如果你沒加什么類庫的話其余的參數(shù)都不用配置 當(dāng)然制作了一個小游戲直接用的cocos生成的類 所以這個文件壓根都不用改
復(fù)制代碼 代碼如下:
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的
還有就是類中生成的這句話不要改
復(fù)制代碼 代碼如下:
static {
System.loadLibrary("game");
}
不然后報java cocosdx Couldn't load cocos2dx: findLibrary returned null 這個錯誤
然后運行就應(yīng)該成功了
相關(guān)文章
Android創(chuàng)建與解析XML(三)——詳解Sax方式
本篇文章主要介紹了Android創(chuàng)建與解析XML(三)——詳解Sax方式 ,這里整理了詳細的代碼,有需要的小伙伴可以參考下。2016-11-11Android開發(fā)中l(wèi)ibs和jinLibs文件夾的作用詳解
這篇文章主要給大家介紹了關(guān)于Android開發(fā)中l(wèi)ibs和jinLibs文件夾的作用的相關(guān)資料,文中通過圖文及示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-09-09Android studio 引用aar 進行java開發(fā)的操作步驟
這篇文章主要介紹了Android studio 引用aar 進行java開發(fā)的操作步驟,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09Android自定義View實現(xiàn)水平帶數(shù)字百分比進度條
這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)水平帶數(shù)字百分比進度條,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12詳解Android應(yīng)用開發(fā)中Intent的作用及使用方法
這篇文章主要介紹了Android應(yīng)用開發(fā)中Intent的作用與用法,包括如何激活A(yù)ctivity組件與Intent的投遞等,需要的朋友可以參考下2016-03-03