从零开始,自己鼓捣一套ShareSDK组件

2022-06-11  本文已影响0人  红发_KVO

公司有个小插曲之后,要我做一个自己的shareSDK辣样子的东东,一开始真的觉得鸭梨山大。我是谁?我在哪?我要干什么?我只是一个卑微的UI仔啊,不应该啊,实在不应该啊。但是作为一个快四十岁的萌新,没办法啊,只能硬着头皮上了。。。


一、先搭建自己的Pod多组件调试项目

platform :ios, '12.0'
target 'HFKitTest' do
  use_frameworks!
  # Pods for HFKitTest
  pod "AFNetworking"
  pod 'SVProgressHUD'
  pod 'Toast-Swift'
  pod 'YYModel'
  pod 'Masonry'
  pod 'IQKeyboardManager'

  pod 'HFKit', :path => '../HFKit.podspec'

  pod 'FacebookComm', :path => '../FacebookComm.podspec'
  
  pod 'AppleComm', :path => '../AppleComm.podspec'
  
  pod 'GooglePlusComm', :path => '../GooglePlusComm.podspec'
  
end

主要看下面本地库的依赖,主组件是HFKit,后面三个是国外主平台的中间件连接库。每个库单独依赖,写成这样子是因为,主framework下面的子framework不能设置为s.static.framework = true

Pod::Spec.new do |s|
  s.name             = 'FacebookComm'
  s.version          = '1.0.O'
  s.summary          = 'FaceSDK中间层'

  s.homepage         = 'https://www.mini1.cn'
  s.author           = { 'KVO' => 'handsonwu.tan@gmail.com' }
  s.source           = { :git => 'git@xxxx.git', :tag => s.version.to_s }
  s.static_framework = true
  s.ios.deployment_target = '12.0'
  s.frameworks = 'Foundation', 'UIKit'
  s.source_files = 'FacebookComm/**/*.{h,m}'
  s.prefix_header_file = false
  s.library = 'c++', 'stdc++','z'
  s.vendored_frameworks = 'HFKit/**/ShareSDK/PlatformSDK/FacebookSDK/*.framework'
  s.ios.weak_framework = 'Accelerate', 'Accounts', 'CoreLocation', 'Social', 'Security', 'QuartzCore', 'CoreGraphics','UIKit', 'AudioToolbox','AuthenticationServices','SafariServices','CoreServices'
  
  s.resources = 'HFKit/**/ShareSDK/PlatformSDK/FacebookSDK/*.bundle'
  s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
  s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
  
  s.public_header_files = 'FacebookComm/**/{FacebookCommunication}.h'
  
  s.dependency 'HFKit'
  
end

主要主要就是s.vendored_frameworks,s.resources,s.dependency这个三个参数的配置,我这边依赖本地静态库的方式所以设置了s.vendored_frameworks,其实也可以改用s.dependency直接依赖FBSDKLoginKit。这里只是写了一个podspec的配置,其它也大致如此~

这里调试库的搭建方式大致就完了,后面就是具体的编写业务逻辑代码和调试了。大家可能很奇怪为什么要这么搭建,会不会太过于多此一举,主要是因为我们的库只提供.framework依赖,不可以暴露源码。。。

二、创建自己的公共Pod库,让内部可以方便的集成


三、去GitHub上创建一个仓库

//打开当前项目所在文件夹
$ cd /Users/xxxx/Desktop/Cocoapods/HFKit
$ git remote add origin 此为GitHub上面的仓库地址(现在push除了ssh方式,还有token方式,具体自己百度,主要是针对多个ssh key配置导致的)
$ git add .
$ git commit -m "first commit"
$ git push -u origin master

终端出现该输出,标识上传成功
To https://github.com/xxxx/HFKit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
xxxx@admindeMac-mini HFKit % pod lib lint HFKit.podspec 

 -> HFKit (0.1.0)
    - WARN  | summary: The summary is not meaningful.
    - WARN  | url: There was a problem validating the URL https://github.com/xxxxx/HFKit.
    - NOTE  | xcodebuild:  note: Using new build system
    - NOTE  | xcodebuild:  note: Using codesigning identity override: -
    - NOTE  | xcodebuild:  note: Build preparation complete
    - NOTE  | [iOS] xcodebuild:  note: Planning
    - NOTE  | [iOS] xcodebuild:  note: Building targets in dependency order

[!] HFKit did not pass validation, due to 2 warnings (but you can use `--allow-warnings` to ignore them).
You can use the `--no-clean` option to inspect any issue.

看到上面的报错提示,只需要按照它的指引, 再指令后面加`--allow-warnings`
xxxx@admindeMac-mini HFKit % pod lib lint HFKit.podspec --allow-warnings
 'HFKit passed validation.' 出现这个表示成功了
$ git add .
$ git commit -m "添加测试代码"
$ git push
'发布项目到Cocoapods上去需要添加版本号的,并创建同名分支branch,用如下指令添加版本号'
//添加版本号
$ git tag -a 0.1.0 -m "开始我的冈本0.1之旅"
//创建同名分支
$ git branch 0.1.0
//查看版本号
$ git tag
//将本地的添加的tag同步到远程代码仓库
$ git push --tag
//HFKit.podspec 就是自己的podspec文件名称
$ pod trunk push HFKit.podspec 

出现如下日志就表示发布成功了
Updating spec repo `trunk`
Validating podspec
Updating spec repo `trunk`

--------------------------------------------------------------------------------
 🎉  Congrats

 🚀  HFKit (0.1.0) successfully published
 📅  Jun 10st, 16:51
 🌎  https://cocoapods.org/pods/HFKit
 👍  Tell your friends!

'如果出现任何警告,验证都是不通过的,会导致发布失败!我们也可以继续用如下命令`pod trunk push HFKit.podspec --allow-warnings`'
'这样子创建和发布就结束了,你注册的邮箱也会收到发布成功的邮件,可以使用了'
pod search HFKit
'如果搜索不到的话,不要着急,可以先试着移除索引'
`rm ~/Library/Caches/CocoaPods/search_index.json`
再次搜索时,会自己重新创建索引
'还搜索不到的话,可以先执行`pod update` 来更新库'
'依然搜索不到的话,那就放弃吧,不要纠结了,直接新建一个工程’
导入`pod HFKit` 然后pod install吧!这时候不行的话你就要打我了,可是打不着。对咯,这里的HFKit是代号(全程要换成你自己的库)

四、自动生成你的framework的注释使用文档

这边,我是借鉴别人,使用的appledoc这个库,官方的DocC我看了半天都看明白,用它的指令也没生成。不知道是不是只针对swift有效~还请高人指定,让我这个逼能装到。。。

git clone https://github.com/tomaz/appledoc.git
cd 到你的appledoc的目录下
sudo sh install-appledoc.sh
'执行下面命令看是否安装成功'
appledoc --version
cd 你的framework项目路径

使用命令行创建docset-install.txt,安装到当前项目中,也可以指定路径

appledoc --output ./doc --project-name 你的项目名字 --project-company "你的公司名字" --company-id "你的公司id啥的" ./
'记住,最后的./一定不能少,不然会报缺少一个路径'

成功之后会显示如下:


生成了docset-install.txt.png

接着,我们在调用下面的指令:

appledoc --no-create-docset  --output ./doc --project-name 你的项目名字 --project-company "你的公司名字" --company-id "你的公司id啥的" ./
'记住,最后的./一定不能少,不然会报缺少一个路径'

成功之后会显示如下:


生成doc的html.png

打开我们的index看一看,用浏览器打开:


生成的文档的所有头文件png 单个头文件的注释.png

总结:一套下来,就是生成自己pod库的组合拳了,当然,具体的用法,还是要在readme里面写一下的。今天不开心到此为止吧,明天依旧光芒万丈哦!(还有一些奇淫巧技,例如如果把别人的源码库,通过pod的形式,打成静态库,自己内部引用,还可以隐藏内部引用库等等就不细说了,说多了都是泪!)

上一篇下一篇

猜你喜欢

热点阅读