1、安装AndroidStudio
2、安装JDK
3、安装NDK
4、编译Cocos2dx工程,到 build 打开工程,用的都是动态库。
Cocos2dx自动生成的项目中,Additional Dependencies 里看不到引用的 Lib。
在 Command Line 可以看到引用的库,如果使用了Lua,会看到有 libluacocos2d.lib 的引用。
5、现在安卓项目都用AndroidStudio,项目下的 c/c++ 文件会先编译为 so,然后被主工程动态加载进来。
编译这些 c/c++ 文件会使用 NDK。
请阅读 NDK 的文档,如果看不太懂也先从前往后过一遍。
6、项目中如果使用预编译的库,那需要使用 PREBUILT_STATIC_LIBRARY,这个在 NDK 的手册里有专门一页来介绍。
需要给每个库文件都写一个 Android.mk 文件,然后把他们放在独立的目录中,然后依次调用。
7、静态库子工程 Android.mk 例子
1 LOCAL_PATH := $(call my-dir) 2 3 include $(CLEAR_VARS) 4 LOCAL_MODULE := pbc 5 LOCAL_SRC_FILES := libpbc.a 6 LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../Classes/pbc/include 7 include $( PREBUILT_STATIC_LIBRARY)
8、外部工程 Android.mk 例子
1 LOCAL_PATH := $(call my-dir) 2 3 include $(CLEAR_VARS) 4 5 LOCAL_CPPFLAGS := -std=c++11 -pthread -frtti 6 7 LOCAL_MODULE := cpp_empty_test_shared 8 9 LOCAL_MODULE_FILENAME := libcpp_empty_test 10 11 LOCAL_SRC_FILES := main.cpp \ 12 ../../../Classes/AppDelegate.cpp \ 13 ../../../Classes/HelloWorldScene.cpp \ 14 ../../../Classes/net_game_dispatcher.cpp 15 16 LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes \ 17 $(LOCAL_PATH)/../../../../../cocos \ 18 $(LOCAL_PATH)/../../../../../external/lua/lua \ 19 $(LOCAL_PATH)/../../../../../external/lua/tolua \ 20 D:/android-ndk-r10b/platforms/android-19/arch-arm/usr/include 21 22 LOCAL_LDLIBS := -llog 23 24 LOCAL_STATIC_LIBRARIES := cocos2d_lua_static 25 LOCAL_STATIC_LIBRARIES += pbc 26 LOCAL_STATIC_LIBRARIES += scnet 27 28 include $(BUILD_SHARED_LIBRARY) 29 30 $(call import-module,scripting/lua-bindings/proj.android) 31 $(call import-module,pbc) 32 $(call import-module,scnet)
9、可能会遇到下面类似的提示,不要惊慌,那是由于没有设置好被 call 引用的路径
创建一个类似下面的脚本,Win上使用;号隔开,Mac上可能使用:号
1 set NDK_MODULE_PATH=E:/cocos2d-x-3.11;E:/cocos2d-x-3.11/cocos;E:/cocos2d-x-3.11/external;E:/cocos2d-x-3.11/tests/cpp-empty-test/proj.android-studio/app/jni;D:/android-ndk-r10b/platforms/android-19/arch-arm/usr/include 2 ndk-build