cocos2dx接入第三方so

Android平台

添加第三方.so

1.将.so放到prebuild目录下。

2.修改mk.

例如添加的库文件是:libfmod.so。

LOCAL_PATH := $(call my-dir)

\##### 添加第三方so库 BEGIN ######

include $(CLEAR_VARS)

LOCAL_MODULE := libfmod

LOCAL_SRC_FILES := prebuild/$(TARGET_ARCH_ABI)/libfmod.so  #第三方so

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../cocos2d-x/external/fmod/include  #导出的头文件路径

include $(PREBUILT_SHARED_LIBRARY)

\##### 添加第三方so库 END ######

include $(CLEAR_VARS)    #开始一个新的编译

LOCAL_MODULE := cocos2dlua_shared

LOCAL_MODULE_FILENAME := libcocos2dlua

\# 遍历目录及子目录的函数

define walk

​    $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))

endef

\# Classes目录下所有文件

MY_FILES := $(call walk, $(LOCAL_PATH)/../../Classes)

MY_C_FILES := $(filter %.cpp %.c, $(MY_FILES))

MY_H_FILES := $(filter %.h, $(MY_FILES))

LOCAL_SRC_FILES := hellolua/main.cpp \

​                    hellolua/JniUtil.cpp

LOCAL_SRC_FILES += $(MY_C_FILES:$(LOCAL_PATH)/%=%)

\# Classes目录下所有文件夹

MY_H_FOLDERS := $(sort $(dir $(MY_FILES)))

\#$(warning MY_H_FOLDERS:$(MY_H_FOLDERS))

MY_LOCAL_C_INCLUDES := $(sort $(dir $(LOCAL_PATH)/../../Classes/*)) 

MY_LOCAL_C_INCLUDES += $(MY_H_FOLDERS)

LOCAL_C_INCLUDES := \

$(LOCAL_PATH)/../../../cocos2d-x/external \

$(LOCAL_PATH)/../../../cocos2d-x/tools/simulator/libsimulator/lib \

$(LOCAL_PATH)/../../../cocos2d-x/tools/simulator/libsimulator/lib/protobuf-lite

LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../cocos2d-x/cocos/ui

LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../cocos2d-x/cocos/editor-support/cocostudio

LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../cocos2d-x/external/fmod/include #使用了共享库导出的头文件 在在此处定义路径

LOCAL_C_INCLUDES += $(sort $(MY_LOCAL_C_INCLUDES))

\# _COCOS_HEADER_ANDROID_BEGIN

\# _COCOS_HEADER_ANDROID_END

LOCAL_STATIC_LIBRARIES := cocos2d_lua_static

LOCAL_STATIC_LIBRARIES += cocos2d_simulator_static

LOCAL_STATIC_LIBRARIES += testin_agent_helper_static 

LOCAL_STATIC_LIBRARIES += testin_agent_helper_lua

\# _COCOS_LIB_ANDROID_BEGIN

\# _COCOS_LIB_ANDROID_END

LOCAL_SHARED_LIBRARIES := libfmod     #添加共享库

include $(BUILD_SHARED_LIBRARY)   #编译成共享库

$(call import-module,scripting/lua-bindings/proj.android)

$(call import-module,tools/simulator/libsimulator/proj.android)

$(call import-module,external/testinagenthelper) 

$(call import-module,external/testinagenthelper/lua)

\# _COCOS_LIB_IMPORT_ANDROID_BEGIN

\# _COCOS_LIB_IMPORT_ANDROID_END
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
PREBUILT_SHARED_LIBRARY—>LOCAL_C_INCLUDES —>LOCAL_SHARED_LIBRARIES 这三放置的位置得注意。

3.在java层加载so

合适的地方调用 如下代码,一般放在静态方法里面。

   try {
​          System.loadLibrary("fmod");
   }catch (UnsatisfiedLinkError e) { }
  static {
​        System.loadLibrary("XXX");
  }
1
2
3
4
5
6
注意加载的第三方库一定得在 cocos的so之前加载。

以上添加一个动态库编译完成后.so会出现在包里。

---------------------------------------------------------------------------------------------------------

添加第三方.a
————————————————
版权声明:本文为CSDN博主「bytemode」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/blogsun/article/details/86016258

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值