Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植
更新:HHH   时间:2023-1-7


Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植

题外话: 有时打开博客想写点什么时,心中感到有点酸楚,尽管语言不那么精简,或者说是准确,而且很可能文中的总结极不成熟,甚至还夹带些错误;但是,它们毕竟是自 己经过“痛苦”的挣扎后取得的一点成绩,于是,还是下决心记下来,一方面充实了自己尘封的笔记,另一方面也不敢独享-因为我看到有那么多的朋友把自己的心 血也无保留地奉献出来。或许,我的这一点一滴也能成为他们决战BUGS中的LITTLE TIP吧。



注意:本博客转移自本人约一年前的ITPUB博客文章,为的是便于学员参考之用。


最近在致力于使用COCOS2D-X 开发ANDROID平台的程序,于是,集成sqlite不知觉中成为了必须攻克的堡垒之一。有关sqlite的C++ wrapper在网络上存在不少,但是能够直接应用于如题所示的开发环境的实在不多(也许自己这方面知识太少)。终于,我在CSDN中找到了一个 sqlite的C++ wrapper-SQLiteDatabase(http://download.csdn.net/download/jiuhaolong11 /4822274)。除了有一个平台依赖的uSleep函数(我暂时把它去掉了--或者说“短路”了更合适些)外,其他感觉没有什么问题(至少在现在学习 时是这样的)。

于是,在WIN32下编写DEMO,没有问题,一切OK。但是,最终移植到ANDROID如何呢--毕竟这是最终目标!根 据我2012年9月份写的那篇博文(http://space.itpub.net/14466241/viewspace-744390),我在 ANDROID平台重新编译,结果出现错误。大致是说,存在两个main函数。注意:一开始,我把sqlite源码下的四个文件(包括shell.c)一起通过android.mk进行编译了。其实,根据shell.c的作用,在ANDROID平台编译时应该把它排除在外。

于是,我最终的android.mk内容如下:
-------------------------------
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := game

#LOCAL_MODULE_FILENAME := libgame

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp \
                   ../../Classes/ListViewTestLayer.cpp \
                   ../../Classes/SQLiteDatabase.cpp \
                   ../../Classes/SQLiteResultSet.cpp \
                   ../../Classes/sqlite3.c \
                   ../../Classes/CCListView/CCListView.cpp \
                   ../../Classes/CCListView/CCListViewCell.cpp
                  
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
        $(LOCAL_PATH)/../../Classes/CCListView \
        $(LOCAL_PATH)/../../../cocos2dx \
        $(LOCAL_PATH)/../../../cocos2dx/platform. \
        $(LOCAL_PATH)/../../../cocos2dx/include \
        $(LOCAL_PATH)/../../../cocosDension/include

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static
           
include $(BUILD_SHARED_LIBRARY)

$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions)
------------------------------------------------------

另外,为了编写DEMO的方便,我把cocos2d-x老版本中的CCListView使用目前的API改写了一些-感觉它还是很好用的;而目前2.1BETA 3中的CCTableView还很不成熟。

经过上面的修改后,一切顺利,终于可以把DEMO运行于自己的真机上了!结果如下:




注意:在上面的DEMO中,使用了数据库中表格的新建,记录的写入及读取操作等。

返回游戏开发教程...