为了账号安全,请及时绑定邮箱和手机立即绑定

怎么修改第三方静态库支持的架构?没有源码

怎么修改第三方静态库支持的架构?没有源码

慕田峪4524236 2019-05-25 16:57:31
我想把已写好的项目文件放到cocoapods上供他人使用,我的项目文件包含一个由第三方开发的静态库,libEZOpenSDK.a,这个静态库只支持真机架构,不支持模拟器架构,所以在进行podliblint进行本地验证的时候会出现错误:Undefinedsymbolsforarchitecturei386:"_OBJC_CLASS_$_EZDeviceInfo",referencedfrom:objc-class-refinCamera_TZYOPHomePageViewController.o"_OBJC_CLASS_$_EZOpenSDK",referencedfrom:objc-class-refinCamera_TZYHistoryRecordViewController.oobjc-class-refinCamera_TZYOPFunctionsSDK.oobjc-class-refinCamera_TZYOPHomePageViewController.oobjc-class-refinCamera_TZYSettingViewController.old:symbol(s)notfoundforarchitecturei386clang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)BUILDFAILEDThefollowingbuildcommandsfailed:Ld/Users/yuancong/Library/Developer/Xcode/DerivedData/App-fmvnjejbnyymigeawgsdeaxjbfki/Build/Intermediates/Pods.build/Release-iphonesimulator/Cameara_TZYEZFunctions.build/Objects-normal/x86_64/Cameara_TZYEZFunctionsnormalx86_64Ld/Users/yuancong/Library/Developer/Xcode/DerivedData/App-fmvnjejbnyymigeawgsdeaxjbfki/Build/Intermediates/Pods.build/Release-iphonesimulator/Cameara_TZYEZFunctions.build/Objects-normal/i386/Cameara_TZYEZFunctionsnormali386(2failures)所以我想问,有什么办法可以通过这个验证吗?比如,我是否需要在对应的podspec文件里面设置什么?或者有什么办法可以修改这个静态库支持的架构?注意:我没有这个静态库的源码最好是有什么方法可以修改静态库支持的架构,求大神解答,谢谢。通过lipo-info查看的静态库的信息:yuancongdeiMac:~yuancong$lipo-info/Users/yuancong/Desktop/iOS_v4.4.0.build20170320/SDK/libEZOpenSDK.aArchitecturesinthefatfile:/Users/yuancong/Desktop/iOS_v4.4.0.build20170320/SDK/libEZOpenSDK.aare:armv7arm64yuancongdeiMac:~yuancong$下面是我的podspec文件里的配置:Pod::Spec.newdo|s|s.name='Cameara_TZYEZFunctions's.version='0.1.0's.summary='Cameara_TZYEZFunctions.'s.description='LICENSE'}s.author={'tencheer2017'=>'stevenzhu@tencheer.com.cn'}s.source={:git=>'https://github.com/tencheer20...',:tag=>s.version.to_s}s.ios.deployment_target='8.0's.source_files='Cameara_TZYEZFunctions/Classes/*/','Cameara_TZYEZFunctions/sdk/openssl/include/openssl/.h','Cameara_TZYEZFunctions/sdk/SDK/include/TestLib/.h's.resources=['Cameara_TZYEZFunctions/Camera_TZYResources/images//.png','Cameara_TZYEZFunctions/Camera_TZYResources/xib/.xib','Cameara_TZYEZFunctions/Camera_TZYResources/storyboard/.storyboard','Cameara_TZYEZFunctions/Camera_TZYResources/other//.strings']s.public_header_files='Cameara_TZYEZFunctions/Classes/*/.h','Cameara_TZYEZFunctions/sdk/openssl/include/openssl/.h','Cameara_TZYEZFunctions/sdk/SDK/include/TestLib/.h's.frameworks='CoreMedia','AudioToolbox','VideoToolbox','GLKit','OpenAL','MobileCoreServices','SystemConfiguration','CoreTelephony','AVFoundation's.libraries='stdc++.6.0.9','c++','iconv.2.4.0's.vendored_libraries='Cameara_TZYEZFunctions/sdk/SDK/libEZOpenSDK.a','Cameara_TZYEZFunctions/sdk/openssl/lib/libssl.a','Cameara_TZYEZFunctions/sdk/openssl/lib/libcrypto.a's.dependency'AFNetworking's.dependency'Toast's.dependency'ZASwitch'end
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我前几天集成支付宝SDK的帮助类的时候,遇到了集成.a文件的问题,不知道是不是楼主遇到的情况。写下我遇到的情况,希望能帮到你。
支付宝SDK官方没有iOS的githubrepo,因此只能手动导入到工程里,还要解决各种依赖库。然后我就想要把它集成到github里。
然后主要有2个难点:
如何集成SDK里的AlipaySDK.framework到CocoaPods里
如何集成.a和依赖它的.h文件到CocoaPods里。这里我也没拿到.m源码,只有.a和.h文件。
然后,google和stackoverflow,再有就是CocoaPods里的issue,最终把上面的问题解决了。先放一个我集成好的AlipaySDK帮助类repo,链接在这.
针对问题1:
找了各种方法,最后发现无法集成到一个repo里。所以单独将AlipaySDK.framework和AlipaySDK.bundle抽取出来,放到一个repo里。这样,其他库想用的话,直接依赖这个repo就好了。
针对问题2:
首先,将.a和.h放到subspec里进行管理,然后主要用vendored_libraries索引.a文件,用libraries标定这个子模块作为库使用。
其次,需要修改Example里Podfile的内容,在最后添加:
pre_installdo|installer|
#workaroundforhttps://github.com/CocoaPods/CocoaPods/issues/3289
definstaller.verify_no_static_framework_transitive_dependencies;end
end
解决targethastransitivedependenciesthatincludestaticbinaries的问题
最后,在验证的时候要加上podliblint--use_libraries修饰,告诉pods这里用到了静态库。
至此,上面的问题被解决掉。
                            
查看完整回答
反对 回复 2019-05-25
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

只回答第一个问题吧。。。你没有源码的话,你引用的第三方库是没办法修改成支持模拟器的,源码编译的时候,需要针对不同的architecture单独编译不同的库,最终合成一个.a文件,并不是修改某个值就可以的,具体的你可以搜一下“Mach-OFileFormat”这个官方文档,有具体的.a文件格式介绍
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 426 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号