cocos2dx工程打包成Android APK当然少不了编辑android工程目录下的Android.mk文件,主要工作就是把Classes目录下的*.cpp文件添加进来进行编译。
下面就分Android工程在Eclipse和AndroidStudio两种情况来说明。
Eclipse
在项目的 proj.android\jni 目录下的 Android.mk 文件中,需要对 LOCAL_SRC_FILES 进行赋值,将项目中用到的cpp文件都写入,自动生成的内容一般都是这样:
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp
如果想要添加新增cpp文件,常理来说就是依样画瓢“../../Classes/XXX.cpp”但是对程序员来说需要手动一个一个添加简直是不科学!因此有网上的牛人就找到了新的方法:
使用通配符(wildcard)的方式就可以解决
写法如下:
SRC_FILES := hellocpp/main.cpp
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp) SRC_FILES += $(wildcard $(LOCAL_PATH)/../../Classes/*/*.cpp)
LOCAL_SRC_FILES := $(SRC_FILES:$(LOCAL_PATH)/%=%)
上面的写法会搜索Classes目录和子目录中的所有的cpp文件,改变一下写法就能一劳永逸!
以上写法参考:
http://blog.163.com/long_wtf/blog/static/18555327020149144495734/
Android-studio工程
在项目 proj.android-studio中,由于jni文件夹放到了proj.android-studio\app中,因此要在上面的模板上多加一层回退 /.. 。
因此最后的模板如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
SRC_FILES := hellocpp/main.cpp
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../Classes/*.cpp)
SRC_FILES += $(wildcard $(LOCAL_PATH)/../../../Classes/*/*.cpp)
LOCAL_SRC_FILES := $(SRC_FILES:$(LOCAL_PATH)/%=%)
LOCAL_CFLAGS := -DUSE_FILE32API -DGL_GLEXT_PROTOTYPES=1
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes
# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END
LOCAL_STATIC_LIBRARIES := cocos2dx_static
# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END
编译时,输入命令为 cocos run -p android –android-studio 就能在proj.android-studio目录编译生成所有cpp的 .so 库使用
这里推荐使用android-studio作为开发工具,方便多渠道打包,具体需要配置build.gradle和Manifest,build.gradle的配置请参考上一篇
cocos2dx工程部署到android-studio中,build.gradle的写法。