将完整的iOS项目转换成一个framework,并做成CocoaPods远程依赖

作者 : 开心源码 本文共2729个字,预计阅读时间需要7分钟 发布时间: 2022-05-14 共235人阅读

将完整的项目制作成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.pngimage.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远程依赖

发表回复