首页 > 其他分享 >iOS组件化开发之私有库

iOS组件化开发之私有库

时间:2024-03-26 22:47:15浏览次数:23  
标签:JJTost git 私有 iOS repo 组件 pod com

0、了解iOS组件化

1、制作开源组件库

预备工作:
1、安装cocoapods
2、准备github账号,gitee账号,和cocoapod账号
其中github,gitee账号直接在线创建即可。

而注册cocoapods账号需要的终端命令:
pod trunk register [email protected] "xxx"
然后在邮箱里找到验证链接,登录一下即可。
pod trunk me命令,显示如下格式信息,证明注册成功:

 - Name:     xxx
  - Email:    [email protected]
  - Since:    November 17th, 09:33
  - Pods:     None
  - Sessions:
    - November 17th, 09:33 - March 24th, 2024 09:34. IP: 112.64.61.93

3、使用pod search libName 命令,在在线库中查找有没有同名的组件库
pod search JJTost
没有的话可以使用。

4、创建库
使用pod lib create libName命令创建一个模板工程
根据提示,选择平台语言,等一系列信息。 如图:
平台选iOS,语言选Objc, 创建一个示例工程选yes, 可以不选测试框架,可以选一个前缀JJ

使用pod create JJTost 创建我们自己的组件库,等待pod创建项目骨架。
创建完成会自动用Xcode打开。

5、
终端页面,跳转到Example,写好组件库和导入好资源文件后,执行一下podinstall。

了解.podspec文件,它是pod工程配置文件.
里面包括组件名,组件发布地址等信息。

#
# Be sure to run `pod lib lint JJTost.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
  s.name             = 'JJTost' #组件名
  s.version          = '0.1.0'  #组件版本号
  s.summary          = 'A short description of JJTost.' #组件的再要信息

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

# 组件的描述信息
  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

# github地址
  s.homepage         = 'https://github.com/wjwdive/JJTost'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
# 作者信息
  s.author           = { 'wjwdive' => '[email protected]' }
# 仓库地址
  s.source           = { :git => 'https://github.com/wjwdive/JJTost.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
# 支持目标工程版本
  s.ios.deployment_target = '10.0'
# 源文件目录
  s.source_files = 'JJTost/Classes/**/*'
  
# 资源文件引入目录
  # s.resource_bundles = {
  #   'JJTost' => ['JJTost/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

经过以上1-5不,本地工作基本完成。之后需要将我们的代码同步到gitee仓库

6、需要创建远程私有管理库。
在gitee或者github创建私有组件索引库。
6.1 在git创建一个repo_spec仓库:
6.2 使用命令: pod repo add repo_spec仓库地址。添加私有索引库到repo.

pod repo add jj_pod_repo_specs https://gitee.com/wjwdive/jj_pod_repo_specs.git
Cloning spec repo `jj_pod_repo_specs` from `https://gitee.com/wjwdive/jj_pod_repo_specs.git`

6.3 使用命令:pod repo 查看已关联的索引库.

pod repo

jj_pod_repo_specs
- Type: git (master)
- URL:  https://gitee.com/wjwdive/jj_pod_repo_specs.git
- Path: /Users/wjw/.cocoapods/repos/jj_pod_repo_specs

trunk
- Type: CDN
- URL:  https://cdn.cocoapods.org/
- Path: /Users/wjw/.cocoapods/repos/trunk

2 repos

7、创建私有库(组件)
本地的操作就是1~5步,类似的步骤,但是呢需要远端创建一个仓库。

之后将本地代码提交

cd ..
git add .
git commit -m "初始化组件代码"
//管理远程仓库
git remote add origin https://gitee.com/wjwdive/jjtoast.git
//推送代码前,拉去一次
git pull origin master
如果有警告,报错,同时远端确实存在仓库。
强制拉去一次:
git pull origin master -f
//
可能会让你关联分支,使用下面命令
 git branch --set-upstream-to=origin/<branch> master
然后推送
git push origin master -f

打tag
git tag '0.1.0'

推送tag
git push --tags

8、配置.podspec文件
修改s.homepage,s.source 为私有库地址

  s.homepage         = 'https://gitee.com/wjwdive/jjtoast'
  s.source         = 'https://gitee.com/wjwdive/jjtoast.git'

修改完成之后保存,验证下组件是否可以提交成功。

pod spec lint --verbose 
//如果有爆红, 不用理会,已经提交成功。
"
[!] The spec did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it).
"
//或用这个命令,重新提交 
pod spec lint --verbose --allow-warnings

//见到以下命令,就ok了
    ** BUILD SUCCEEDED **
    
   Testing with `xcodebuild`. 
 -> JJTost (0.1.0)
    - WARN  | summary: The summary is not meaningful.
    - NOTE  | url: The URL (https://gitee.com/wjwdive/jjtoast) is not reachable.
    - 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 parallel
    - NOTE  | [iOS] xcodebuild:  warning: Capabilities for Signing & Capabilities may not function correctly because its entitlements use a placeholder team ID. To resolve this, select a development team in the App editor. (in target 'App' from project 'App')

Analyzed 1 podspec.


9、使用我们制作好的远程组件库
9.1 直接在宿主项目中,Podfile文件中配置。

use_frameworks!
source "https://gitee.com/wjwdive/jj_pod_repo_specs.git"
platform :ios, '10.0'

target 'JJTost_Example' do
  # 本地私有组件
  #pod 'JJToast', :path => '../'
  pod 'JJToast'
  target 'JJTost_Tests' do
    inherit! :search_paths

  end
end

之后使用命令,把私有库推送到远程私有索引库。

%pod repo push jj_pod_repo_specs JJToast.podspec --allow-warnings
//
% pod repo push jj_pod_repo_specs JJTost.podspec --allow-warnings 


Validating spec
 -> JJTost (0.1.0)
    - WARN  | summary: The summary is not meaningful.
    - NOTE  | url: The URL (https://gitee.com/wjwdive/jjtoast) is not reachable.
    - 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 parallel
    - NOTE  | [iOS] xcodebuild:  warning: Capabilities for Signing & Capabilities may not function correctly because its entitlements use a placeholder team ID. To resolve this, select a development team in the App editor. (in target 'App' from project 'App')

Updating the `jj_pod_repo_specs' repo


Adding the spec to the `jj_pod_repo_specs' repo

 - [Add] JJTost (0.1.0)

Pushing the `jj_pod_repo_specs' repo
// - [Add] JJTost (0.1.0) 代表成功。

10、私有库的升级

组件库有新的代码更新之后,重复第7-9步。

2、制作私有组件库

标签:JJTost,git,私有,iOS,repo,组件,pod,com
From: https://www.cnblogs.com/wjw-blog/p/17840001.html

相关文章

  • [引]ArkTS 自定义组件
    创建自定义组件-自定义组件-基本语法-学习ArkTS语言-入门-HarmonyOS应用开发HarmonyOSDeveloper > 文档 > 指南 > 入门创建自定义组件 更新时间:2024-01-1511:55分享添加收藏在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为系统组件,由开......
  • Blazor学习记录六_模版化组件_渲染模式_CSS隔离和代码隔离
    17.模版化组件在组件中放置一个可渲染的代码片段供外部调用者来传入要渲染的内容及渲染样式,这样的组件就叫做模版化的组件。一般是一个支持泛型的组件,目标为消费者封装重复使用的通用性良好的UI组件。比如一个用来给用户呈现表格数据的表格组件。示例组件GenaricTable.razor代......
  • Vue学习笔记62--多组件共享数据
    多组件共享数据main.js//引入VueimportVuefrom'vue'//引入AppimportAppfrom'./App.vue'//配置提示Vue.config.productionTip=false//引入vuex、storeimportstorefrom'./store'//默认引入index.jsnewVue({render:h=>h(App),stor......
  • 基于 Vue3 + Element-plus 封装的 Table 组件
    项目信息项目名称:vue3-xmw-table预览地址:点击预览Github:vue3-element-table使用方法根目录下执行npmivue3-xmw-table命令npmivue3-xmw-table全局挂载组件import{createApp}from'vue'importAppfrom'./App.vue'importXmwtablefrom'vue3-xmw-table'......
  • 15进程ps、主机信息top、磁盘信息iostat、网络状态sar
    进程什么是进程进程是指程序在操作系统内运行后被注册为系统内的一个进程,并拥有独立的进程程序运行在操作系统中,是被操作系统所管理的为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个:进程并会为每一个进程都分配一个独有的:进程ID(进程号)查看进程可以......
  • iOS开发优势解析,费用探究以及软件开发详解
    摘要本文探讨了iOS开发的优势、费用以及软件开发方面的相关内容。通过分析iOS开发所采用的编程语言、开发环境、用户界面设计、应用审核流程以及应用领域等方面,展示了iOS开发的诸多优势和特点。虽然iOS开发具有高用户体验、统一的硬件和软件环境、良好的市场份额等优势,但也存在着......
  • 深入探讨iOS开发:从创建第一个iOS程序到纯代码实现全面解析
    iOS开发作为移动应用开发的重要领域之一,对于开发人员具有重要意义。本文将深入探讨iOS开发的各个方面,从创建第一个iOS程序到纯代码实现iOS开发,带领读者全面了解iOS应用程序的开发流程和技术要点。 ......
  • 鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
    ......
  • Cocos实例3:VideoPlayer组件使用常见问题集
    VideoPlayer组件使用常见问题集Q1:为什么视频不能自动播放?即使勾选了PlayOnAwake属性。首先要确定是不是平台限制,在Web平台下,某些浏览器出于安全性和用户体验考虑,会阻止网页内嵌视频自动播放音频。在这种情况下,即使设置了playOnAwake也可能不会自动播放,除非用户有交互行......
  • elasticsearch 组件基于单机的多实例集群
    声明:本示例主要作为测试用,生产请慎重。最近公司突发奇想,想让我们搞个单机多实例的es的集群,看看其性能咋样。通常来说,es作为搜索引擎,应用场景不乏日志分析、网络安全、搜索引擎等,有时也会用作日志数据库使用,毕竟其出色的搜索查询性能,不是同等量级关系型数据库可以比拟的,主要......