Cocos2d-x中使用第三方so庫
來源:程序員人生 發布時間:2014-11-10 08:26:18 閱讀次數:2976次
項目中如果使用到第3方的SDK,大多數是以.so動態同享庫的文件打包給我們使用,如何使用他們,見下面分析。
1、取得庫文件
假設我們得到的庫文件是libxxx.so(注:關于.so文件的命名方式,可百度)。在Jni目錄下新建prebuilt文件夾,把取得的庫文件
拷貝到該文件夾下。
2、使用庫文件
庫文件的使用需要修改Android.mk,在mk文件中加入以下代碼:
include $(CLEAR_VARS)
LOCAL_MODULE := xxx
LOCAL_SRC_FILES := prebuilt/libxxx.so
include $(PREBUILT_SHARED_LIBRARY)
LOCAL_SHARED_LIBRARIES := xxx
static {
System.loadLibrary("XXX");
System.loadLibrary("cocos2dcpp");
}
3、編譯
編譯后會在libs/armeabi目錄下生產我們需要的libxxx.so文件,并編譯到APK中。
4、萬普例子
以下是萬普平臺Demo的mk文件,在這貼出來,讓大家體會以下使用方法。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := uninstall //第1步
LOCAL_SRC_FILES := prebuilt/libuninstall.so //第2步
include $(PREBUILT_SHARED_LIBRARY) //第3步
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
LOCAL_SRC_FILES := hellocpp/main.cpp
../../Classes/AppDelegate.cpp
../../Classes/HelloWorldScene.cpp
../../Classes/WapsAd.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES := cocos_extension_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
# LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
# LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SHARED_LIBRARIES := uninstall //第4步
$(call import-module,.)
$(call import-module,audio/android)
$(call import-module,Box2D)
$(call import-module,editor-support/cocostudio)
$(call import-module,extensions)
# $(call import-module,Box2D)
# $(call import-module,editor-support/cocosbuilder)
# $(call import-module,editor-support/spine)
# $(call import-module,editor-support/cocostudio)
# $(call import-module,network)
# $(call import-module,extensions)
注意事項
在主java文件中找到System.loadLibrary("cocos2dcpp");這句,然后在下面一樣添上你要加載的3方庫名稱便可。貌似默許不指明的話,會到系統路徑下去找so文件(沒有root或system的權限,無權對這個文件夾操作),這幾個so按道理是會裝到data/appname/lib目錄下的。
加載順序
這里有個問題要特別注意,就是這些動態庫的加載順序,1定要放到libcocos2dcpp前加載,否則在載入libcocos2dcpp時,會由于沒有之前這兩個依賴的動態庫而報錯,報的就是對應的動態庫木有載入。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈