在cocos的交叉编译中,我们或多或少的都需要对android.mk进行一些修改,那么android.mk到底是个用来做什么的文件呢?
首先来看一下在我们创建项目后,android.mk里边到底有些什么。
下边就是创建项目后,android.mkde 的原内容
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cocos2dx)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
$(call import-module,CocosDenshion/android)
$(call import-module,extensions)
$(call import-module,external/Box2D)
$(call import-module,external/chipmunk)
好吧,里边的大部分内容,虽然不明白,但是下边这些,你肯定认识:
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp
这不就是classes下的helloworld和appdelegate么~ 那这两个文件又是做什么的呢?appdelegate当然是我们在vs中调试运行的入口了。
说到这里,我们再来想一想,android.mk是做什么的。
Android.mk就是用来向编译系统描述源代码所在地的一个文件。
当我们在vs中,编写、调试完毕后,我们的代码当然不可能只有appdelegate和helloworld了。
下边就是一种对android.mk的简单修改,从而可以使我们的项目可以正常编译。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/EnemyBig.cpp \
../../Classes/EnemyMid.cpp \
../../Classes/EnemySmall.cpp \
../../Classes/LayerBullet.cpp \
../../Classes/LayerEnemy.cpp \
../../Classes/LayerGame.cpp \
../../Classes/LayerGround.cpp \
../../Classes/LayerMenu.cpp \
../../Classes/LayerProp.cpp \
../../Classes/LayerUI.cpp \
../../Classes/PlayerPlane.cpp \
../../Classes/SceneGame.cpp \
../../Classes/SceneMenu.cpp \
../../Classes/SceneOver.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cocos2dx)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
$(call import-module,CocosDenshion/android)
$(call import-module,extensions)
$(call import-module,external/Box2D)
$(call import-module,external/chipmunk)
看到和原文件有哪些不同了么?
这种方式需要做些简单的操作如下图所示,我们需要把自己的代码,从proj.win32中,移动到Classes中,
然后在android.mk中把自己编写的cpp的路径写入到android.mk,helloworld.cpp哪一行删除即可。
下边是编译成功的截图
然后就可以导入eclipse了
导入后还有其他问题,详解见另一篇多图文章
小弟才疏学浅,也恳请各位路过的大神多指点,小弟定加努力