IOS 创建远程私有代码库

2020-08-12  本文已影响0人  越天高

有些时候我们的项目太过于庞大,需要进行组建化开发,可以将每个模块开发成一个组件。或者是我们的一些自己库,想用pod倒入,又不想使用本地路径的方式。这时候我们就可以做一个远程的私有代码仓库,这样我们开发的库就可以满足我们自己用pod进行导入,又不用让别人看到

  1. 在代码托管平台创建我们的代码仓库,因为GitHub上面私有的要钱,所以我们可以其他的比如码云,coding都可以,这里我使用的是coding ,先在网上创建好我们的代码仓库。复制url连接
    可以在终端执行pod repo查看当前存在的索引库
  2. 把自己的索引库添加到CocoaPods
    pod repo add 库名 url
  3. 创建一个我们需要开发的组件
    pod lib create 组件名
    然后终端就会执行一些基本让我选择的基本选项,执行完之后就创建了我们的项目,这是后我们需要把自己要开发的库托到项目里面的一个文件夹里
添加开发的库.png 添加完之后项目结构
然后在终端,执行一下 pod install 就把本地库引入了我们的项目,因为我们引入的时候没有选择,copy item if needed。所以项目中只是对文件的引用,我们这样就可以边开发边测试了,等开发功能差不多的时候,就可以进行下一步了。

在代码托管平台创建我们的托管项目

创建的时候注意,不要勾选,readeMe和gitignore,因为我们上一步创建出来的项目里面自带这两个文件。如果远程又创建了会产生冲突,


创建远程代码管理

创建完之后,会有一个url用来cloning的
然后找到url更改我们本地代码的.podspec文件的里面一些配置

#核心代码所在的位置
  s.source_files = 'HomeKit/Classes/**/*'

默认当前文件在哪里,他就是找到当前文件的目录下面,因为 HomeKit跟。podspec文件在同一级目录,所以不需要,跳转文件夹
/**他会找当前文件夹里面的所有文件,不写的话他只会查找一层

之后开发更新,版本号也是需要更改的。每次更新版本都需要更改,注意跟tag保持一致

  s.version          = '0.1.0'

因为Cocoapod是根据tag去索引代码的,git的tag。如果没有写的话是不能下载的,
创建好远程的代码库,然后将.podspec里面source改成创建好的远程地址

  s.source   = { :git => '创建好的远程代码托管url', :tag => s.version.to_s }
  1. 把文件添加到本地暂缓区
    git add .
  2. 把文件添加到本地代码仓库
    git commit 文件名
  3. 建立本地仓库与远程代码仓库之间的连接
    先查看是不是有远程的代码仓库
    git remote
    如果没有的话手动添加关联
    git remote add origin 远程仓库url
  4. 把本地代码提交到远程代码仓库
    git push origin master
  5. 添加tag,这里面的tag要跟.podspec里面的version保持一致
    git tag -a 0.1.0 -m '描述文字'
  6. 把tag推送到远程代码仓库
    git push --tags
pod repo push  HLPrivateStore  HomeKit.podspec

执行这句可能会产生警告,这时候我们可以忽略警告,可以在后面加上 一句

pod repo push  HLPrivateStore  HomeKit.podspec --allow-warnings
 

当执行完这部我们用pod search来搜索一下看看有没有我们的库,如果有就可以使用了。注意,要在podfile文件里面加上一句

source '本地库的url '

因为他默认会从公有库里寻找,

划分子组件

如果我们的组件中用到了太了文件和一些共有的工具类,我们可以将它们划分成一个个子组件,这样当我们使用的时候,在工程里面就可以很清晰的辨别文件的类型

s.subspec   'Frame' do |frame|  
#两个frame的名字不能一样不然会出错,第二个只是一个变量名字,用来在在这个区间使用
frame.source_files = 'HomeKit/Classes/Frame/*.{h, m}'
end

因为我们没有改代码,所有子需要重新覆盖一下本地的podspec文件就好了

pod repo push  HLPrivateStore  HomeKit.podspec --allow-warnings

因为我们刚刚更新了spec的文件,划分了文件结构,所以我们引用的项目,重新pod update一下

这时候我们引用的地方可能会出现,划分的文件夹,但是里面没有文件,文件还是在外面,这是因为我们那有引用全部文件s.source_files = 'HomeKit/Classes/**/*'这句代码,所以我们要把这句话注释掉,就可以了

组件加载资源文件(图片 xib storybord)

在 .podspec文件里面更改

s.resource_bundles = {
    'HLCategory' => ['HLCategory/Assets/*.png', 'HLCategory/Classes/**/*.xib']
   }

 s.resource_bundles = {
    'SHLLiveKit' => ['SHLLiveKit/Classes/**/*.{storyboard,xib}']
  }

当我们在使用 我们框架里面的图片资源的时候,要记得加上bundle的名字,因为Xcode会将我们的资源压缩到我们框架的bundle里面,它本身不是mainBundle里面的资源,所以不能直接使用,图片名字

OC 项目使用Swift框架混编

在使用swift的框架的时候,引入头文件的代码#import  " 工程文件名-Swift",如果要有这个文件,必须要有Swift代码,不然不会生效。但是有时候,我们即使是使用了看起来是正确的头文件名字,也有Swift的代码但是还是不生效。这时候我们可以去build Setting里面,找这个工程里面的文件Objecting -C generated interface Header Name 这里面找头文件,当然要去使用Swift的那个库里面找,如果引用的地方跟Swift框架,不属于同一个库的话,需要使用 #import <库名/查看到为文件名>

引用库获取

Swift使用OC的话,会生成桥接文件

如果使用的框架Swift版本太低,我们可以使用Xcode进行转化


转换Swift的版本

使用非cocoaPods库

上一篇 下一篇

猜你喜欢

热点阅读