进入生成的obj文件夹看看 proj.android\obj\local\armeabi
发现是编译时生成的静态库动态库,我们不想每次生成一个新跨平台项目的时候都全部重新编译一次,可以重复利用这些类库
解决方案是在cocos2d-x-2.1.5目录下新建prebuild目录,把proj.android\obj\local\armeabi下(libcocos2dcpp.so就不用了)的类库都copy到prebuild,增加一个类似这样的Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dx_static
LOCAL_MODULE_FILENAME := libcocos2d
LOCAL_SRC_FILES := ./libcocos2d.a
LOCAL_EXPORT_C_INCLUDES := \
$(LOCAL_PATH)/../cocos2dx \
$(LOCAL_PATH)/../cocos2dx/include \
$(LOCAL_PATH)/../cocos2dx/kazmath/include \
$(LOCAL_PATH)/../cocos2dx/platform/android \
#LOCAL_LDLIBS := -lGLESv2 \
# -llog \
# -lz
LOCAL_EXPORT_LDLIBS := -lGLESv2 \
-llog \
-lz
#LOCAL_CFLAGS := -Wno-psabi -DUSE_FILE32API
#LOCAL_EXPORT_CFLAGS := -Wno-psabi -DUSE_FILE32API
LOCAL_WHOLE_STATIC_LIBRARIES := cocos_libpng_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_jpeg_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libwebp_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libtiff_static
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := cocosdenshion_static
LOCAL_MODULE_FILENAME := libcocosdenshion
LOCAL_SRC_FILES := ./libcocosdenshion.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../CocosDenshion/include
#LOCAL_CFLAGS += -Wno-psabi
#LOCAL_EXPORT_CFLAGS += -Wno-psabi
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := box2d_static
LOCAL_MODULE_FILENAME := libbox2d
LOCAL_SRC_FILES := ./libbox2d.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../external
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := chipmunk_static
LOCAL_MODULE_FILENAME := libchipmunk
LOCAL_SRC_FILES := ./libchipmunk.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../external/chipmunk/include/chipmunk
#LOCAL_CFLAGS := -std=c99
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos_extension_static
LOCAL_MODULE_FILENAME := libextension
LOCAL_SRC_FILES := ./libextension.a
LOCAL_EXPORT_C_INCLUDES := \
$(LOCAL_PATH)/../extensions \
$(LOCAL_PATH)/../extensions/CCBReader \
$(LOCAL_PATH)/../extensions/GUI/CCControlExtension \
$(LOCAL_PATH)/../extensions/GUI/CCScrollView \
$(LOCAL_PATH)/../extensions/network \
$(LOCAL_PATH)/../extensions/LocalStorage \
$(LOCAL_PATH)/../extensions/CCArmature
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_curl_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
LOCAL_WHOLE_STATIC_LIBRARIES += libwebsockets_static
#LOCAL_CFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1
#LOCAL_EXPORT_CFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1
#LOCAL_CPPFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1
#LOCAL_EXPORT_CPPFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1
#LOCAL_CFLAGS := -fexceptions
include $(PREBUILT_STATIC_LIBRARY)
$(call import-module,libjpeg)
$(call import-module,libpng)
$(call import-module,libwebp)
$(call import-module,libtiff)
$(call import-module,libcurl)
$(call import-module,external/libwebsockets/android)
来试一下COCOS2DX自带的demo,F:\cocos2d-x\cocos2d-x-2.1.5\samples\Cpp\TestCpp
TestCpp和pro.android/jni里都有Android.mk,打开修改尾部代码
TestCpp下的Android.mk
#$(call import-module,CocosDenshion/android)
#$(call import-module,external/Box2D)
#$(call import-module,external/chipmunk)
#$(call import-module,cocos2dx)
#$(call import-module,extensions)
$(call import-module,prebuild)
proj.android/jni里的Android.mk
$(call import-module,samples/Cpp/TestCpp)
#$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
#$(call import-module,cocos2dx)
#$(call import-module,CocosDenshion/android)
#$(call import-module,extensions)
#$(call import-module,external/Box2D)
#$(call import-module,external/chipmunk)
$(call import-module,prebuild)
cygwin进入到F:\cocos2d-x\cocos2d-x-2.1.5\samples\Cpp\TestCpp\proj.android
./build_native.sh
发现编译快多了,只是编译了Classes和jni部分,其他都利旧。现在可以导入到eclipse里运行TestCpp了么么哒
分享到:
相关推荐
cocos2dx 的编译到 Android 平台需要安装多个工具,包括 Eclipse、SDK、NDK、Python 和 Cygwin,然后使用 create_project.py 命令创建一个新的项目,最后使用 build_native.sh 脚本编译项目并导入到 Eclipse 中。...
5. **构建脚本**:如`build_native.sh`(在Linux或Mac上)或`build_native.bat`(在Windows上),这些脚本用于编译C++源码并生成平台特定的应用程序包。 6. **cocos2dx android引擎分析文档.pdf**:这是一份关于...
总结来说,Cocos2dx在Android上的编译涉及C++和Java两部分,需要理解JNI原理,熟悉Android应用的生命周期,并掌握如何使用Cocos2d-x提供的Java接口来与C++代码交互。正确配置和理解这些知识点将有助于顺利地在...
- 为了让cocos2dx支持Android平台,通常需要安装Android NDK(Native Development Kit),它包含了一系列的开发工具,可以用来编译C或C++代码生成可在Android设备上运行的本地库。 以上就是cocos2dx在Windows环境...
在Android平台上,使用Cocos2d-x提供的`build_native.sh`脚本来生成项目工程,然后在Android Studio中导入生成的工程,进行编译和调试。在iOS平台,你可以通过Xcode直接打开Cocos2d-x生成的.xcodeproj文件,进行编译...
- 将Android项目转换为C++项目,通过右键项目选择“Convert to a C/C++ Project”,然后在构建配置中取消默认的构建命令,改为调用NDK的`build_native.sh`脚本进行编译。 - 添加包含路径,以使Eclipse能够找到...
- 右键点击项目,选择`Properties > Builders`,取消勾选`CDT Builder`,并新建一个Builder,指定其执行脚本为`build_native.sh`,工作目录设置为`build_native.sh`所在的目录。 7. **配置路径与符号**: - 在...
这可能需要用户根据自己的项目需求,手动配置CMakeLists.txt或者proj.android下的build_native.sh脚本来链接libcurl库。 标签“openssl”表明libcurl可能依赖于OpenSSL库,OpenSSL是一个强大的安全套接字层密码库,...
12. **编译项目**:在Cygwin终端中,切换到项目目录,执行`build_native.sh`脚本,编译生成Android项目的.so库文件。 13. **导入项目到Eclipse**:将生成的Android项目导入Eclipse,以便在Eclipse中进行编辑和调试...
接下来,以管理员权限运行Cygwin,导航到新项目的Android目录下,执行`./build_native.sh`脚本来进行交叉编译。如果遇到权限问题,确保给予Jni文件夹及其所有子文件夹完全访问权限。首次编译可能需要较长时间,完成...
进入`TestDemo/proj.android`目录,运行`build_native.sh`脚本来编译项目。 为了在模拟器上运行Cocos2d-x应用,你需要创建一个支持OpenGL 2.0的AVD(Android Virtual Device)。因为Cocos2d-x 2.0及以后的版本需要...