项目中需要使用翼支付 SDK ,而这个 SDK 的静态库中包含 MJExtension ,我项目中也使用了 MJExtension ,结果悲剧了,好多使用 objectArrayWithKeyValuesArray 方法的地方直接 crash ,调用堆栈显示调的是静态库的 MJExtension ,该怎么解决呢?
1
chisj 2015-10-16 15:20:49 +08:00
首先,翼支付这个 SDK 肯定是做得不好,不规范的。 然后,可以把你项目中的 MJExtension 做成代码引用的方式,并你的 MJExtension 库每个类都加上前缀。
|
3
zixincao OP 我尝试把静态库.a 文件中 MJExtension 的 category 方法去掉,并重新打包,不知道会不会有什么问题。。
|
4
SeanChense 2015-10-16 17:14:23 +08:00
@zixincao 简单的去掉不会把项目炸了么~~~
|
5
zixincao OP @SeanChense 有待测试。。
|
6
xiaomayi0323 2015-10-16 17:50:47 +08:00
楼主多邻国的?
|
7
superpeaser 2015-10-16 19:15:56 +08:00 via iPhone
之前用银联的 sdk 和数米的 sdk 也是,数米把银联的 sdk 打包在他们自己的静态库中,直接通知数米让他们重新给我们编译一份不带银联的 sdk
|
8
zixincao OP @xiaomayi0323 没猜对,^_^
|
9
zixincao OP @superpeaser 这个可以试试
|
10
juxingzhutou 2015-10-16 20:38:28 +08:00
在静态库里面直接打包别的库肯定是不规范的,如果引用的 MJExtension 的版本是一样的,那可以以代码形式引入 MJExtension ,但是不引入实现文件(把实现文件在对应 target 上的勾去掉),这样就能直接正常使用静态库中打包的 MJExtension 了。
如果未来拿到剔除了 MJExtension 的版本的话再把勾勾上就是了。 如果用 Cocoapods 引入的话可以自己放一份 spec 在本地,然后在 Podfile 中用:path 指向本地的 spec 文件,然后在 spec 文件的过滤规则里面去掉"*.m" |
11
Dashit 2015-10-16 21:03:57 +08:00
还有个办法就是改名。。
|