创建 cocos2d-x+lua for android 步骤

原创 2011年10月27日 14:12:44
1: 按照普通方法创建工程

2:请注意修改 android/build_native.sh文件, RESOURCE_ROOT修改为$GAME_ROOT/Resource, 我的0.9.1版本自动生成的为$GAME_ROOT/Resources

3: 修改android/jni/Android.mk文件如下(红色字体)

	LOCAL_PATH := $(call my-dir)
	include $(CLEAR_VARS)


	subdirs := $(addprefix $(LOCAL_PATH)/../../../,$(addsuffix /Android.mk, \
			   cocos2dx \
			   CocosDenshion/android \
			   lua/proj.android/jni \
		))
	subdirs += $(LOCAL_PATH)/pyramid/Android.mk

	include $(subdirs)



4:修改jni\helloworld\Android.mk中


LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../cocos2dx \
                    $(LOCAL_PATH)/../../../../cocos2dx/platform \
                    $(LOCAL_PATH)/../../../../cocos2dx/include \
                    $(LOCAL_PATH)/../../../../cocos2dx/lua_support \
                    $(LOCAL_PATH)/../../../../CocosDenshion/include \
                    $(LOCAL_PATH)/../../../Classes \
                    $(LOCAL_PATH)/../../../../lua/lua \
                    $(LOCAL_PATH)/../../../../lua/tolua \
                    $(LOCAL_PATH)/../../../../lua/cocos2dx_support \
                    $(LOCAL_PATH)/../../../../lua/CocosDenshion_support

LOCAL_LDLIBS := -L$(call host-path, $(LOCAL_PATH)/../../libs/armeabi) \
	-L$(call host-path, $(LOCAL_PATH)/../../../../cocos2dx/platform/third_party/android/libraries) -lcurl \
	-lcocos2d \
	-lcocosdenshion \
	-llua

5:修改jni\Application.mk
APP_MODULES := cocos2d cocosdenshion lua game


6:在android\src\org\cocos2dx\xxx\xx.java中修改:

     static {    System.loadLibrary("cocos2d");    
		System.loadLibrary("cocosdenshion");         
		System.loadLibrary("lua");         
		System.loadLibrary("game");     
	}



7: 根据需要更改默认名字
脚本自动生成的是game库和hellowworld目录
a: 将目录jni/helloworld修改为自己的名字,比如: jni/pyramid
b: 修改 jni/Application.mk中的game为pyramid
c: 在android\src\org\cocos2dx\xxx\xx.java中  System.loadLibrary("game")  为          System.loadLibrary("pyramid")
d: 修改jni/Android.mk中如下: subdirs += $(LOCAL_PATH)/pyramid/Android.mk


8:需要注意一点就是Android.mk文件中

针对SRC和INC,其路径指定不一样,编译文件需要指定相对路径,而include文件需要指定绝对路径,比如:

PYRAMID_SRC_ROOT := ../../../Classes
PYRAMID_INC_ROOT := $(LOCAL_PATH)/../../../Classes


9: 同时运行多个OS,比如windows、macos等,需要将build_native.sh文件转为unix格式

  在cygwin下运行 dos2unix build_native.sh

 

10:小技巧

(1)可以通过uname判断是在什么os下,方便设置路径

if [ $(uname -s) = "Darwin" ];
then
	echo MacOs
	ANDROID_NDK_ROOT=/Volumes/work/tools/android/android-ndk-r6b-macosx
else
	echo Cygwin
	ANDROID_NDK_ROOT=/cygdrive/f/tools/Android/android-ndk-r5c
fi

(2)由于编译时间较长,可以使用 growl来做提醒

windows下请下载: growl for windows

在build_native.sh最后加入:

if [ $(uname -s) = "Darwin" ];
then
	growlnotify -s -m :"ndk-build" $1" finish"
else
	growlnotify /t:"ndk-build" $1" finish"
fi



调试中遇到的一些问题:
1:如果需要加入sqlite, 需要下载最新的源代码(sqlite-amalgamation-3070800.zip),否则会报错误“undefined reference to `fdatasync'”,
同时在Android.mk文件中加入:
LOCAL_CFLAGS :=-Wall -D_FILE_OFFSET_BITS=64 -DUSE_OPEN -DUSE_THREAD
不加flags也会报undefined reference to `fdatasync'错误


2: How to increase storage for Android Emulator? (INSTALL_FAILED_INSUFFICIENT_STORAGE)
To summarize (and clarify), in Eclipse, go to "Debug Configurations". You can find that in the drop-down under the "debug" icon. Select "target", and select a preferred emulator target to launch. Then under "additional emulator command line options," add this:

-partition-size 1024


Another note to make: You must right click on the project you want to run in eclipse -> Run->Run Configuration->Select Project->Target ->scroll down->add -partition-size 1024 to additional Em options-> then run the project from eclipse


3: Eclipse出现android Multiple markers at this line 错误:
这是由于JDK1.5的缘故,只需要将Compiler compliance level修改为1.6即可.
此处可能需要在两个地方修改
 (1) Eclipse的Window-Preferences->Java->Compiler
(2)Eclipse的Project->Properties->Java Compiler


4:require 找不到需要的文件时, 防止弹出错误对话框

修改CCFileUtils_android.cpp文件 getFileData 函数,屏蔽 CCMessageBox(msg.c_str(), title.c_str()) 代码



【Cocos2dx-lua 3.11.1】打包lua项目为安卓apk

cocos2dx-lua的项目打包流程详细。

Cocos2d-x 3.0 Android修改APK名、更改图标、修改屏幕方向、修改版本号,一些需要注意的问题

Cocos2d-x 3.0 Android修改APK名、更改图标、修改屏幕方向、修改版本号,一些需要注意的问题。...

Cocos2d-x 3.X里的坑(2)——安卓android APP应用名称的修改

本人用的是Android Studio。如果对用Android Studio创建Cocos2d-x项目有疑问的请戳这里。 创建好Cocos2d-x项目之后,我们发现在在Android Studio里...

cocos2dx-lua 在cocos2d中使用lua脚本进行开发,并介绍脚本在游戏中的详细用途

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2dx/681.ht...

带自定义类的Cocos2dx_lua项目编译到Android

欢迎各位童鞋转载,转载请注明出处:http://blog.csdn.net/song_hui_xiang 作者新浪微博:http://weibo.com/u/3168848533 作者腾讯微博:h...

cocos2dx 3.4 lua 编译android

假定我们现在有个纯洁的处女项目,cocos2dx3.4 lua项目,在E:\cocos\cocos2d-x-3.4\cocosCode\MyGame下。 我们要把它添油加醋地发布到自己的Android...

cocos2dx 实现文字的一键复制功能(IOS、Android)

1、IOS篇(用OC和C++混编) 头文件声明: public static void copy(std::string str); 实现如下: void copy(std::string str)...

Cocos2d-x中用Lua实现剪切板的文字复制粘贴(iOS篇)

这个问题搞死我了……弄了好久才弄好。看上去其实挺唬人的,需要从Lua调到C++,再调到OC,其实仔细分析一下的话还好。我们下面开始讲解: 首先是Lua调到C++(如果直接是C++的项目请无视): 首先...

Mac上配置Android开发环境并把Cocos2d-x项目编译到Android

欢迎各位童鞋转载,转载请注明出处:http://blog.csdn.net/song_hui_xiang 作者新浪微博:http://weibo.com/u/3168848533 作者腾讯微博:h...

在Android中使用Lua脚本 —— Programing Lua on Android

Android是基于Linux 2.6 内核的系统,所以理论上Linux OS可以运行的脚本语言,给予相应的运行库,在Android也可以运行。 在Android手机上编写并运行Lua脚本 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创建 cocos2d-x+lua for android 步骤
举报原因:
原因补充:

(最多只允许输入30个字)