叶子搭错车 發表於 2020-3-1 21:37:00

iOS组件化开发-发布私有库

<div id="cnblogs_post_body" class="blogpost-body ">
<h1>远程索引库</h1>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720122136851-1451570243.png"></p>
<h2>将远程索引库添关联到本地</h2>
<div class="cnblogs_code">
<pre>pod repo 查看本地已关联仓库源
pod repo add本地索引库名称 远程索引库仓库地址
pod repo update 索引库名称
pod repo remove 本地索引库名称</pre>
</div>
<p>&nbsp;执行命令 添加远程索引库`KTPodSpecs`克隆到本地</p>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720124148034-155412338.png"></p>
<h1>远程库&nbsp;</h1>
<h2>新建框架工程KTUIKit</h2>
<p>利用模板自动生成私有库工程&nbsp;</p>
<div class="cnblogs_code">
<pre>pod lib create 框架名称<br>pod lib create KTUIKit</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720124819530-2001239487.png"></p>
<p>生成的工程依赖关系</p>
<p>KTUIKit的示例工程的podfile配置spec的路径是相对于本地podfile的路径</p>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720130307422-275167270.png"></p>
<h2>编写PodSpec&nbsp;</h2>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720130658835-1449054005.png"></p>
<p>依赖第三方库</p>
<div class="cnblogs_code">
<pre>framewirks:依赖系统的动态库 比如 UIKit<br>vendored_framework:依赖非系统的动态库 比如TencentOpenAPI.framework<br>libraries:依赖系统静态库 比如libstdc++.a<br>vendored_libraries:依赖非系统的静态库 比如新浪微博的libWeiboSDK.a<br>dependency:依赖pod库</pre>
</div>
<h2>上传框架到远程仓库&nbsp;</h2>
<p>&nbsp;新建远程仓库</p>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720131554152-2085941085.png"></p>
<p>进入本地KTUIKit目录执行Git命令 与远程KTUIKit建立关联</p>
<div class="cnblogs_code">
<pre>git remote add origin https://github.com/coderketao/KTUIKit.git<br>git branch --set-upstream-to=origin/master master 本地分支远程分支建立track</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720132128863-1602730523.png">&nbsp;</p>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720132609326-150331540.png"></p>
<p>建立关联后,本地KTUIKit<span class="Apple-converted-space">&nbsp;push到远程仓库<span class="Apple-converted-space">&nbsp;注意:push过程记得一定将Pods和Podfile.lock文件忽略,否则导致pod install和pod repo push很慢</span></span></p>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720133501663-165979690.png"></p>
<p>远程master分支添加tag 执行命令</p>
<div class="cnblogs_code">
<pre>git tag '0.1.0' 添加
git push --tags
git tag -d 0.1.0 删除
git push origin :0.1.0</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720134608208-650939197.png"></p>
<h1>私有库发布</h1>
<p>将podspec文件到远程索引库&nbsp;执行命令 验证`KTUIKit.podspec`是否合法</p>
<div class="cnblogs_code">
<p>pod lib lint&nbsp;KTUIKit.podspec&nbsp;--allow-warnings --use-libraries 验证本地</p>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720134942361-987921901.png"></p>
<p>执行命令 发布podspec到远程索引仓库</p>
<div class="cnblogs_code">
<pre>pod repo push KTPodSpecs KTUIKit.podspec --allow-warnings --use-libraries&nbsp;</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720135150647-1767383767.png"></p>
<p>在构建组件时,如果该组件引用了其它库</p>
<div class="cnblogs_code">
<pre>s.dependendy 'SDWebImage'
s.dependendy 'AFNetWorking'</pre>
</div>
<p>在验证、推送远程索引库加上pod的source</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>pod lib lint KTUIKit.podspec --sources='http://47.93.191.194:9002/hongketao/QXComponentSpecs.git,https://github.com/CocoaPods/Specs.git' --allow-warnings --use-libraries

pod repo push KTPodSpecs KTUIKit.podspec --sources='http://47.93.191.194:9002/hongketao/QXComponentSpecs.git,https://github.com/CocoaPods/Specs.git' --allow-warnings --use-libraries </pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>&nbsp;</p>
<h1>私有库使用</h1>
<p>新建项目,应用私有库&nbsp;</p>
<p><img src="https://img2018.cnblogs.com/blog/1375651/201907/1375651-20190720140306790-907690223.png"></p>
<p>&nbsp;podspec的写法</p>
<div class="cnblogs_code">
<pre>~&gt; 1.2.0 要求版本 [1.2.0, 2.0.0)<br>&lt;= 1.2.0 版本小于等于1.2.0 超过后1.2.0后不再更新</pre>
<p>指定三方库本地路径的写法(用于提交前进行测试)</p>
<p>pod 'AFNetworking', :path =&gt; '~/Desktop/AFNetworking'</p>
<p>指定git的写法</p>
<p>pod 'AFNetworking', :git =&gt; 'https://github.com/AFNetworking/AFNetworking.git'</p>
<p>pod 'AFNetworking', :git =&gt; 'https://github.com/AFNetworking/AFNetworking.git', :branch =&gt; 'dev'</p>
<p>pod 'AFNetworking', :git =&gt; 'https://github.com/AFNetworking/AFNetworking.git', :tag =&gt; '3.1.1'</p>
<p>pod 'AFNetworking', :git =&gt; 'https://github.com/AFNetworking/AFNetworking.git', :commit =&gt; '0f506b1c45'</p>
<p>指定podspec的写法</p>
<p>pod 'AFNetworking', :podspec =&gt; '~/Desktop/AFNetworking/AFNetworking.podspec'</p>
<p>指定subspecs的写法(这也是subspec的另一个用法</p>
<p>pod 'MyThirdparty', '~&gt; 0.0.1', :subspecs =&gt; ['Sparta', 'GotyeSDK', 'TalkingData', 'Tingyun', 'BaiduPanorama']</p>
</div>
</div>
<div class="clear">&nbsp;</div>
<div id="blog_post_info_block">&nbsp;</div><br><br>
来源:https://www.cnblogs.com/jukaiit/p/12392264.html
頁: [1]
查看完整版本: iOS组件化开发-发布私有库