将完整的iOS项目转换成一个framework,并做成CocoaPods远程依赖
将完整的项目制作成framework和正常制作工具类SDK一个道理,需要注意的点是:
1.图片及文件(word等)资源需要制作成Resource.bundle2.app里面得依赖有的是动态库,有的是静态库,他们引入方式要注意一下(这里顺带讲一下项目pods库解决)3.反射类名调用及交换方法要特别注意调用的实际和影响范围4.项目启动方式要改,你只能移动项目的内容,appdelegte不需要,少量设置得从appdelegate中挪到其余地方1.图片及文件资源的bundle制作
image.png
建好之后直接将图片及文件资源直接拖到bundle中
image.png
在项目中的图片、文件加载方式换一下,相似于
btn.imageName = [NSString stringWithFormat:@"Resource.bundle/%@",icons[I]];
image.png
2.制作framework
先看下需要做成远程依赖的演示项目,就这么一个简单的页面和一个弹框。
image.png
下面是制作framework的过程
image.png
由于我们是将项目制作成framework供其余人调用,所以删除创立时生成的TestDemoSDK.h,重新创立一个继承于NSObject的类,用来写方法名和实现供他人使用。
image.png
image.png
而后是少量framework的常规配置
image.png
image.png
image.png
设置framework支持的设施和最低版本号
image.png
将演示项目中的主要代码导入到这个framework中,Resource.bundle可以不用导入,后面提交的时候需要用到,导入了也没关系,就是打出来的包里面会多了一个Resource.bundle包,这样后面在写podspec的时候可以不写source地址,直接食用framework包里面的bundle资源也是同样可以的
image.png
image.png
将pch文件设置一下地址,和你正常项目中设置是一样的$(SRCROOT)/TestDemo/LFPrefixHeader.pch
image.png
项目中依赖了Masonry这个三方库,所以要将当前的framework工程和普通项目一样进行pod init ->pod install一下,将Masonry库集成到framework工程中
继承后的项目是
到这里编译一下项目,假如报三方库头文件找不到,可能是由于上面第4步导致的起因,Build Active Architecture Only 设置为NO的意思是当前打包的.framework支持所有的设施.否则打包时只能用当前版本的模拟器或者真机运行.可以测试下,将debug改成YES,release改成NO,假如编译成功了,说明是这个问题导致的这样应该就能够处理编译报错的问题3.构建自己设置代码类
在刚才创立的TestDemoSDKManager里面写方法供别人调用你的项目
image.png
完事之后将需要暴露给别人使用的或者是看到的.h文件暴露出去,直接从project中拽到public中即可以了
image.png
4.编译framework合并模拟器和真机包
分别选择真机和模拟器com+b编译
image.png
image.png
合并两个包,在终端输入命令行 -lipo create 真机包地址(直接拖拽进来) 模拟器包地址 -output 真机包地址
image.png
image.png
合并完了之后,将真机包复制出来,这就是最后的framework包,可以先测试下这个包能不能用,新建一个测试项目,将刚才导出的framework包和Resource.bundle包导入到项目中,并pods之前SDK依赖的Masonry库
image.png
我这里跑一下是没有问题的,下面就是上传做远程依赖了
5.制作cocoapods远程依赖库
在github上创立自己的仓库,注意勾选指示的位置
image.png
将仓库clone到桌面后,写podspec文件,假如有不懂的可以自行百度,下面简单说明下,可以直接复制我的修改下使用。 spec.author 是制作者信息,spec.author = { “github账户昵称” => “github登录邮箱” }
Pod::Spec.new do |spec| spec.name = "TestDemoSDK" spec.version = "0.0.1" spec.summary = "test TestDemoSDK 1224" spec.description = <<-DESC 此版本SDK说明文字,自己根据实际书写 DESC spec.homepage = " marsLiuFei/TestDemoSDK" spec.license = "MIT" spec.author = { "GaiShiDaYingXiong" => "mars_liu_dev@163.com" } spec.ios.deployment_target = "9.0" spec.source = { :git => " marsLiuFei/TestDemoSDK.git", :tag => "#{spec.version}" } spec.resource = 'TestDemoSDK/Resource.bundle' spec.ios.vendored_frameworks = 'TestDemoSDK/TestDemoSDK.framework' spec.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } spec.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } # spec.source_files = 'TestDemoSDK/*' spec.dependency 'Masonry' spec.requires_arc = trueend
image.png
该写的都写了,而后就是提交这个仓库了
image.png
image.png
提交完后,打tag
image.png
而后提交自己的pod,执行pod trunk push TestDemoSDK.podspec –allow-warnings,TestDemoSDK这个是自己的framework名称,假如你没有登录trunk或者者没有账户,自行百度。
image.png
看到这个就说明提交成功了。
使用的时候,用下面的方法导入,不写git地址的话,会等几个小时后才能使用。
image.png
最后将所有的文件放到github,可以对照着文件研究点击下载
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 将完整的iOS项目转换成一个framework,并做成CocoaPods远程依赖