Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
T treasure
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 12
    • Issues 12
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • FE
  • treasure
  • Issues
  • #150

Closed
Open
Created Apr 06, 2023 by zhoudanjie@zhoudanjieDeveloper

iOS私有库开发流程

背景:

多个iOS项目之间可通用的处理,可以使用cocoapods私有库的方式来封装SDK。

私有库开发流程如下。

需要说明的是,

  • 其中步骤1~3、以及第10,只有新建项目时才需要。

  • 其中步骤第13(app方执行pod install)是在app开发方执行。,工作都是在SDK开发方进行。

1、创建pod库

pod lib create LocUI

2、在公司gitlab上创建空白项目

3、将步骤1新建的项目上传到gitlab

4、修改SDK代码

5、修改Pod目录下的podspec文件

有几项的配置需要按实际修改

s.version          = '0.1.2'
s.homepage         = 'https://gitlab.lanhanba.com/iOS/ioslocui'
s.source           = { :git => 'https://gitlab.lanhanba.com/iOS/ioslocui.git', :tag => s.version.to_s }

每次对私有库迭代版本时,其中的version必须更新,才能在调用方app项目执行 pod install 时拉到最新版本的代码

在私有库中调用外部库时,

  • 引用的外部cocoapod库,设置s.dependency 比如
s.dependency 'YTKNetwork', '~> 3.0.6'
  • 非pod方式使用的第三方库-动态库(.framework文件),设置s.vendored_libraries 比如
s.vendored_frameworks = 'iOSSocialShare/Classes/Vendor/TencentOpenAPI/TencentOpenAPI.framework'
  • 非pod方式使用的第三方库-静态库(.a文件),设置s.vendored_frameworks 比如
  s.vendored_libraries = 'iOSSocialShare/Classes/Vendor/WechatOpenSDK/libWeChatSDK.a', 'iOSSocialShare/Classes/Vendor/WXWork/libWXWorkApi.a'

6、检查podspec文件

终端切换到podspec文件所在路径,执行命令,确保没有报错。

pod lib lint

或者

pod lib lint --allow-warnings

7、私有库自带的demo项目更新调用库

Demo项目执行 pod install 获取库的最新代码 demo重新编译,调用新版私有库,确认新版可以被正常调用

8、提交代码修改到git

9、git上打tag标签

标签必须同第5步podsepc文件中设置的 s.version 值一致

10、创建podspec(仅限添加私有库时)

使用pod repo list 可查看已有的repo

使用pod repo remove specsName 来删除repo

新建私有库后,用pod repo add命令创建podspec

pod repo add SpecsNameXXX sourceCodeGitUrlXXXX

11、更新podspec(仅限后续更新私有库时)

使用pod repo update specname 会更新最新版本代码

pod repo update specname

12、推送podspec

比如

pod repo push LocUI LocUI.podspec

或者

pod repo push LocUI LocUI.podspec --allow-warnings

执行后会把我们的pod放到本地podspec中

如:/Users/zhoudanjie/.cocoapods/repos/LocUISpecs/LocUI/0.1.0/LocUI.podspec

13、app项目中调用私有库

platform :ios, ‘9.0’
target 'appLocUI' do
pod 'LHBridge', :git => 'https://gitlab.lanhanba.com/iOS/iosbridge.git', :tag => '0.1.1' # 添加这一行
end

执行pod install,拉取SDK指定版本代码后,就可以基于SDK进行相应开发了。

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking