本站文章均为 李华明Himi 原创,转载务必在明显处注明:(作者新浪微博: @李华明Himi )
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/lua-game/1388.html
☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!
width="150" height="210" frameborder="0" scrolling="no" src="http://widget.weibo.com/relationship/bulkfollow.php?language=zh_cn&uids=1916000601&wide=1&color=FFFFFF,FFFFFF,0082CB,666666&showtitle=0&showinfo=1&sense=0&verified=1&count=1&refer=http%3A%2F%2Fwww.himigame.com%2Flua-game%2F1388.html&dpc=1" style="border-width: 0px; margin: 0px; padding: 0px; font-family: arial, helvetica, clean, sans-serif;font-size:12px; line-height: 16px; text-align: left; ">
唉,首先说点闲话 – -。Himi搞了不短的时间,这个问题一直没有解决,最后终于在张大(cocos2dx引擎开发者之一 张小明)的指导下解决了此问题。
本章基于上一篇 【COCOS2DX-LUA 脚本开发之十三】 与之前的项目整合 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.x版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!)
在进入正文之前,讲解下一些基础知识:(当前Himi的版本是cocos2xx 2.1.2 hotfix)
第一部分:
编译过项目到Android的童鞋们肯定知道创建好的Android项目下的jni下的Android.mk 这个文件,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := game_shared
LOCAL_MODULE_FILENAME := libgame
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_STATIC_LIBRARIES := curl_static_prebuilt
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_lua_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cocos2dx)
$(call import-module,CocosDenshion/android)
$(call import-module,scripting/lua/proj.android/jni)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
$(call import-module,extensions)
|
这个文件中,主要我们关注如下几个配置:‘
1. LOCAL_SRC_FILES : 编译到Android的本地的类cpp或c,比如自定义了一个类HSprite.h HSprite.cpp
那么需要添加到这个 LOCAL_SRC_FILES 中,如下:
1
2
3
|
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HSprite.cpp
|
2. LOCAL_C_INCLUDES :编译的本地类所在的路径,例如你有一个HSprite类放在Himi的文件夹中,那么你可以如下形式添加:
1
2
3
4
5
6
7
8
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
$(LOCAL_PATH)/../../Classes/Himi
那么在你其他的类进行引用Himi文件夹下的HSprite时,无需写完整路径,如下:
#include "Himi/HSprite.h"
可以直接如下导入:
#include "HSprite.h"
|
3. LOCAL_STATIC_LIBRARIES : 添加所需要链接的静态库
本章需要关注的是如下的配置:
4. call import-module : 编译对应的模块!
$(call import-module,cocos2dx) :具体是从 NDK_MODULE_PATH 路径下的cocos2dx文件夹下的Android.mk
那么 NDK_MODULE_PATH 是指向哪里呢?哪里设置呢?下面详细讲解!
第二部分:
编译过项目到Android的童鞋们肯定也知道build_native.sh 这个文件,NDK_MODULE_PATH的路径也在此文件中进行设置, 如下图:
如下:
1
2
3
4
5
6
7
8
9
10
|