美文网首页
iOS. 自己Framework上传Cocospods 流程处

iOS. 自己Framework上传Cocospods 流程处

作者: 笑颜_d1ed | 来源:发表于2021-08-26 17:45 被阅读0次

    前因:

    因公司需要做一些自定义动态库 且适应多项目使用,鉴于方便管理,变想放入Cocoapods管理,然后经历一番波折,写下此篇问题解方案

    正题:

    一、电脑具有cocoapods环境

    1.
    2.
    3.常用命令:
    pod trunk register 邮箱 '名字' --description='description'// 注册,然后CocoaPods会发送一封邮件到你的邮箱,按照提示打开一个连接激活就ok拉,最后再重复前面步骤,提交到CocoaPods官方仓库
    pod cache clean --all // 清除pod缓存
    pod lib lint JYUtils.podspec --allow-warnings // 校验
    pod trunk push XXXX.podspec --allow-warnings // 提交到CocoaPods官方仓库
    pod lib lint XXXX.podspec --allow-warnings --use-libraries //如果在自己的库中有引用到其他公有库,例如MBProgressHUD、AFNetworking等库,则需要在后面加上命令:–use-libraries
    pod search // 命令重新搜索库
    pod repo update     // 更新本地库
    

    二、创建cocoapods trunk账户(有账号略过)

    1.用你的电子邮件地址注册一个帐户,这将在当前设备上开始一个会话。注册cocoapods trunk命令:
    $ pod trunk register 你的邮箱 '用户名' --description='描述内容' (邮箱参数是必须的,用户名和--description参数可省略)
    
    注册后cocoapods会给你的邮箱发送一个确认cocoapods会话的邮件,打开你的邮箱,点击链接确认cocoapods会话(这个链接是验证你的帐户与当前计算机之间的连接)。
    
    2.查看你的注册信息(必须在确认cocoapods会话后,才执行)
    $ pod trunk me
    显示注册信息如下所示:
    - Name: 名称
    - Email: 邮箱(GitHub账号)
    - Since: August 2nd, 2018 19:27
    - Pods:
    - Test0
    - JYTest0
    - Sessions:
        - 
        - 
    
    3.常用命令:
    将.podspec文件提交到Cocoapods命令:
    $ pod trunk push 文件名.podspec
    将公共库的.podspec文件,部署到自己的私有库中,命令如下:
    $ pod repo push REPO 文件名.podspec # REPO 私有索引库名
    添加其他人共同维护某库,命令:
    $ pod trunk add-owner 公共库名 已注册trunk的邮箱地址
    移除某个维护人员,命令:
    $ pod trunk remove-owner 公共库名 已注册trunk的邮箱地址
    删除已发的某个版本对应的工程信息
    pod trunk delete 工程名 版本号
    查看trunk的所有可执行命令,运行:
    $ pod trunk
    

    三、开始创建测试库

    1. 打开终端,cd <文件目录地址>(任意文件夹地址,可以是桌面),进入指定文件夹,本文测试文件夹名TestSDK_iOS
    cd /Users/***/Desktop/TestSDK_iOS
    
    2. 在你进入的目录下从cocoaPod官方下载一个模版,会自动生成一个demo。
    pod lib create TestSDK_iOS
    
    3. 紧接着会提示输入一些信息,回车之后会在我们cd的目录下帮我们创建好一个xcode模版,并自动打开项目,如果未打开项目则需要自己进入项目文件夹进行pod install 安装cocoapods资源并打开项目
    What is your email?
    //这是输入你开源中国申请的git邮箱账号
    What platform do you want to use?? [ iOS / macOS ]
    // 这里输入你使用的平台
     > iOS
    What language do you want to use?? [ Swift / ObjC ]
    //这里输入你使用的语言
     > ObjC
    Would you like to include a demo application with your library? [ Yes / No ]
    //这里输入你是否需要生成一个 demo 应用
    //这里最好 Yes 这样你可以查看你创建的库是否可以使用
     > NO
    Which testing frameworks will you use? [ Specta / Kiwi / None ]
    // 这里输入你需要用到的测试框架,随意选
     > None
    Would you like to do view based testing? [ Yes / No ]
    //是否做基于视图的测试 Yes/No 都可以
     > No
    What is your class prefix?
    //输入前缀
     > XR
    
    4. 进入项目文件内,把自定义的Framework包放在TestSDK_iOS/TestSDK_iOS/Classes 文件夹下
    番外:同级Assets 文件夹是放置项目资源的 比如图片音频之类的
    5. 配置信息,在 demo 工程中有一个 Podspec Metadata 文件夹,查看里面的白文件: 工程名. podspec 配置里面的信息,这个根据具体情况自行配置,下文有字段说明:
    s.name        = 'TestSDK_iOS' #项目名称
    s.version      = "1.0.1" #版本号 要和接下来上传git的tag版本号一致
    s.summary      = "Test For TestSDK_iOS." #这里对你写的库进行简要的概述一下
    s.description  = <<-DESC
    这就是一个测试,没别的,你信不信?(这里对你写的库进行具体的使用方法说明及其他描述,稍微写一下就行后期再整改)
                       DESC
    s.homepage     = "https://github.com/*********/TestSDK_iOS.git"# 你git库的地址首页,可以在开元中国创建你的库,不需要使用什么初始化方法,不要勾选 readme
    s.license          = { :type => 'MIT', :file => 'LICENSE' } #这里不需要改变,使用默认,文件指向的文件名与工程中文件名要一致。
    s.author           = { '名字' => '**********@qq.com' } #作者信息:账户名,账户邮箱地址
    s.source           = { :git => 'https://github.com/**********/TestSDK_iOS.git', :tag => s.version.to_s } # 这里输入邮箱如果你在开元中国申请的 git 账号,那么把你在开元中国创建的项目的 https 网址输入到这里,
    s.platform     = :ios
    s.platform     = :ios, "9.0" #iOS 支持的最低级别,这里最低9.0
    s.frameworks = "CoreVideo","OpenGLES","AVFoundation","CoreMedia","VideoToolbox","AudioToolbox" #这里输入需要用到的依赖库,如果没有特别的需要可以不用输入直接注释掉
    s.vendored_frameworks = 'TestSDK_iOS/Classes/TestSDK.framework' #静态库文件的依赖,意思是执行到Classes文件夹下检索.framework类型的文件,我们放入的是动态库文件需要写入进行标注
    s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' }  # 如果项目已经设置 pod_target_xcconfig,添加到已有值的后面。此处解决了模拟器和真机包合并问题
    
    6. 在git上创建我们的远程库,输入项目名称,项目描述,选择开发语言,我们做的是公开库,这里选择公开, 我们不要初始化这个工程,因为我们的工程是从本地上传上去,所以三个初始化方式都不要勾选,然后点击创建,完成我们远程库的创建。
    7. 然后获取我们远程项目库的 https 地址,在第6步配置 s.name、s.source、s.homepage, 这里输入我们在开元中国创建的远程库的 https 网址
    8. 在终端中输入命令行,先关联本地仓库和远程仓库
    // 关联项目
    cd “你工程文件夹名(Example 的上层)”
    git add .
    git commit -m "自定义提交信息"
    git remote add origin "你工程远程仓库的地址,也就是你在git上创建的项目仓库地址"
    // 上传项目
    git branch -M main   
    git push -u origin main
    
    9. 校验我们的配置信息。这里有两个指令,一个是本地校验(lib),一个是远程校验(spec),当出现passed validation.时表示校验通过,此处先进行本地校验,看看本地配置是否有问题,在提交远程的时候需要进行远程校验
    $ pod lib lint --allow-warnings
    
    10. 添加信任在pod上注册你的git账号,两种方案(一繁一简),终端命令:
    pod trunk register git账号(邮箱) '名称' --description='描述内容随意写'
    pod trunk register git账号(邮箱)  
    ----------------------------------------
    说明:
    1、 git账号邮箱,是你在开源中国申请的 git 账号
    2、'名称',可以是你的账号昵称,也可以是你的真是名称,也可以不写
    3、 descrition=''这里可以随意填写也可以不写
    如果出现
    Please verify the session by clicking the link in the verification email that has been sent to ‘你的邮箱’
    去你自己的邮箱拷贝发送的网络连接并打开,出现You can go back to your terminal now.说明验证成功,以后你这台设备,以及这个账号就不要再次验证了,如果你有多个账号,这个方法也是在告诉你的 git 推送你的库到哪个账号上去
    命令:pod trunk me可在终端查看验证是否通过
    -----------------------------------------
    
    11. 提交项目到远程库在提交之前最好先进行远程校验pod spec lint,直到出现passed validation.
    12. 推送版本号这里必须先推送项目,之后推送版本号,顺序不能错
    git tag "0.1.0"     这个版本要要与你podspec文件中定义的版本号一致
    git push --tags     推送版本号
    
    13. 最后所有配置完成 提交到cocospods
    pod trunk push TestSDK_iOS.podspec --allow-warnings
    --------------------------------------------------------------------------------
     🎉  Congrats
    
     🚀  ADYLiveSDK_iOS (0.1.6) successfully published
     📅  August 26th, 03:46
     🌎  https://cocoapods.org/pods/ADYLiveSDK_iOS
     👍  Tell your friends!
    --------------------------------------------------------------------------------
    
    
    14. 成功 新建项目进行测试 pod 'TestSDK_iOS' 时,记得更新本地Cocoapods库:pod repo update 或者 pod install --repo-update

    问题总结:

    其他问题网络应该很多可以自行百度,说明我遇到的问题
    使用自定义Framework会遇到模拟器和真机合并问题,自行测试动态库没问题但是使用上传到cocoapods时就会报错
    - ERROR | [iOS] unknown: Encountered an unknown error (The 'Pods-App' target has transitive dependencies that include statically linked binaries:
    
    等等 这种情况下可以用 --allow-warnings 来允许警告。
    Ld .../Build/Intermediates.noindex/App.build/Release-iphonesimulator/App.build/Objects-normal/arm64/Binary/App normal arm64
    
    上面的错误就是我今天遇到的 下面是解决办法
    在 podspec 文件中添加 s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' },如果项目已经设置 pod_target_xcconfig,添加到已有值的后面。
    使用以上方式 让编译通过

    闲聊

    制作 FrameWork时可以剔除i386 毕竟很老旧的机型了
    制作和申请过程下次在补上 因为网上众多教程这里就不详细写入了

    相关文章

      网友评论

          本文标题:iOS. 自己Framework上传Cocospods 流程处

          本文链接:https://www.haomeiwen.com/subject/yvduiltx.html