フレームワーク3サードパーティのライブラリを使用して

コンテンツ

使用するCocoapodsサードパーティの依存関係の枠組みを管理します。

http://guides.cocoapods.org/making/using-pod-lib-create


作成プロジェクト

1
ポッドはlibにプロジェクト名を作成するLIB

以下を選択するよう求め次にステップ

  • プログラム言語
  • テストフレームワークを追加するかどうか
  • UIのテストを追加するかどうか
  • 接頭プロジェクトとは何ですか

選択後Cococpods自動的に作成Libのプロジェクト、追加ポッドプロフィール xcworkspace


そして、このプロジェクトのLibを管理するためのgitリポジトリを作成します

  • githubのを使用して倉庫を作成します
  • その後、リモートのgitリポジトリ、ローカルにクローン
  • そして、プロジェクト内のすべてのファイルがローカルリポジトリディレクトリに以前のLibディレクトリを作成したコピー
  • リモートのgitリポジトリへの最後のプッシュ
1 
2
3
gitのアドオン。
Gitは-m「情報」をコミット
gitのプッシュ原点マスター

で、ご質問、だから库工程とは主App工程、コンパイルエラーが発生します同じサードパーティのオープンソースのライブラリを参照してください。

  • 以下のような:ライブラリプロジェクトはAFN、またAFN使用される主なアプリケーションプロジェクトを使用しています
1
私たちは、ゾーンを区別するために接頭辞が追加されます、すべてのソースファイルは、ライブラリプロジェクトをAFN必要です。
  • 上記の修正私たち自身の手で、あまりにも面倒です。あなたは使用することができCocoaPods、私たちは、上記の完了与える添加前缀肉体労働を
1
CocoaPodsは均一でLibのプロジェクトを作成する前に接頭辞を追加したときにデフォルトでソースファイルのすべてのサードパーティのライブラリライブラリプロジェクトの依存関係が指定されている、ライブラリプロジェクトを満載しました。
  • 最後に、CocoaPodsAFNのソースを1つに詰め、アプリケーションにプロジェクトを追加します


プロジェクトのルートディレクトリにlibには、編集者がMyLib.podspec他の第三のライブラリライブラリプロジェクトの依存関係を追加します

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
ポッド:: Spec.newん|よ| 
s.name = "MYLIB"
s.version = "0.1.0"
s.summary = "MYLIBの簡単な説明"。

s.description =「具体的な記述情報...」

s.homepage = "https://github.com/<GITHUB_USERNAME>/MyLib"
#s.screenshots = "www.example.com/screenshots_1"、 "www.example.com/screenshots_2"
s.license = 'MIT'
s.author = { "xiongzenghui" => "[email protected]"}
s.source = {:gitの=> "https://github.com/<GITHUB_USERNAME>/MyLib.git":タグ= > s.version.to_s}
#s.social_media_url = 'https://twitter.com/ <TWITTER_USERNAME>'

s.platform =:IOS、 '7.0'
s.requires_arc =真

#ホストのすべてのソースは、ポッド/クラス/ファイル
s.source_files =「ポッド/クラス/ ** / *」

#Storeは、すべてのリソースは、ポッド/資産/ファイル
s.resource_bundles = {
'MYLIB' => [ 'ポッド/資産/ *。PNGを']
}

#ヘッダファイルは、検索位置を指定している
。#s.public_header_files = 'ポッド/クラス/ ** / *。H'

#依存性システムの枠組み
#s.frameworks = 'のUIKit'、 'MapKit'

#依存他のカスタムライブラリ
#1 s.libraries = 'xxx.framework'、 ' xxx.framework'、 'xxx.framework'

#サードパーティ製のオープンソースのライブラリに依存する、埋めるために多くの必要がある場合は、複数s.dependency
s.dependency「AFNetworking」、「〜> 2.6.3」

終わり

あなたが書くとき、その検証podspec文件が正しいのは、ディレクトリpodspecでコマンドを使用することですpod lib lint

  • 成功した後の出力

  • それが失敗した場合、すべての操作をすることができ完了します

  • 注意: 一定要先创建远程git仓库,来管理Lib工程


入力しLib工程/Example/、実行しますpod installか、pod install --no-repo-update

1
Podfileをファイルを含むディレクトリを検索します


ライブラリプロジェクトのソースコードファイルを追加します。

  • アドインソースパス Xcode工程路径

  • アドインソースパス 本地路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MyLib
├── .travis.yml
├── _Pods.xcproject
├── Example
│ ├── MyLib
│ ├── MyLib.xcodeproj
│ ├── MyLib.xcworkspace
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ └── Tests
├── LICENSE
├── MyLib.podspec
├── Pod
│ ├── Assets 添加所有的资源文件
│ └── Classes 添加所有的源码文件
│ └── RemoveMe.[swift/m]
└── README.md
  • 在Xcode工程中的: Pods/Development Pods/MyLib/Pod/Classes目录下,添加 库源码
1
2
3
4
5
6
7
8
#import <Foundation/Foundation.h>


@interface NetManager : NSObject

+ (void)log;

@end
1
2
3
4
5
6
7
8
9
10
11
12
13
#import "NetManager.h"

//使用AFN第三方库
#import <AFNetworking/AFNetworking.h>

@implementation NetManager

+ (void)log {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSLog(@"manager = %@n", manager);
}

@end
  • 如果要添加私有的库源码,不向外暴露


只要 新增 类、资源文件、依赖的三方库、podspec文件修改、都需要重新运行pod install --no-repo-update来更新配置信息


App工程中的代码中使用库工程的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
大专栏  Framework三 使用第三方库ass="line">19
20
21
#import "XZHViewController.h"

//导入库工程的代码
#import <MyLib/NetManager.h>


@interface XZHViewController ()

@end

@implementation XZHViewController

- (void)viewDidLoad
{
[super viewDidLoad];

//使用库代码
[NetManager log];
}

@end

库代码修改完毕之后提交到远程仓库,一定要打tag,然后将tag也推送到远程仓库

  • 提交库源码
1
2
3
4
5
6
7
8
9
10
git add .

当前提交的版本
git commit -a -m 'v0.1.0'

添加远端仓库(clone下来的工程可以不用执行)
git remote add origin git地址

推送到远程仓库
git push origin master
  • 给此次提交打一个tag,以及将tag推到服务器
1
2
3
4
5
使用当前版本号打一个tag
git tag -a 0.1.0 -m 'v0.1.0'

推送tag到远端仓库
git push --tags

库代码提交到远程git仓库之后,编辑库工程根目录下的podspec文件

  • 设置远程git仓库、以及此次打包需要的哪一个tag
1
s.source           = { :git => "https://github.com/xiongzenghuidegithub/MyLib.git", :tag => "0.1.0"}

验证podspec文件是否编写正确,在库工程的根目录下执行

1
pod lib lint

打包生成类库

安装打包插件 cocoapods-packager,这个插件对引用的三方库进行重命名很好的解决了类库命名冲突的问题

1
sudo gem install cocoapods-packager

打包成 .a 或 .framework

  • 打包成 .a
1
pod package BZLib.podspec --library --force
  • 打包出 .framework,不添加 --library参数即可
1
pod package BZLib.podspec --force

  • 在库工程的根目录下,可以找到新增加的目录,其目录下就是生成的framework文件,如下所示:

  • 注意,生成的framework,默认由CocoaPods完成了多cpu架构的编译,已经完成支持所有的cpu架构
1
i386, x86_64, armv7, armv7s, arm64

需要特别强调的是,该插件通过对引用的三方库进行重命名很好的解决了类库命名冲突的问题。

OK,到此位置就可以轻松的生成framework了。


如果需要使用 pod install来安装我们的库


首先需要创建一个用于存放 podspec文件 的远程git仓库

1
https://git.coding.net/xiongzenghui/SpecRepo.git

添加一个自己的所有PodSpect文件的远程git仓库,然后执行如下命令将自己的SpecRepo添加到系统CocoaPods的Spec库

1
pod repo add XiongSpecRepo https://git.coding.net/xiongzenghui/SpecRepo.git

进入 ~/.cocoapods/repos目录下,查看我们添加的spec仓库

1
2
3
xiongzenghuideMacBook-Pro:MyLib xiongzenghui$ cd ~/.cocoapods/repos
xiongzenghuideMacBook-Pro:repos xiongzenghui$ ls
XiongSpecRepo master

如果其他人员也需要操作这个spec仓库,需要给予权限.


将库工程下的PodSpect文件提交到本地SpecRepo,如下命令同时将这个podspec文件也Push到远程SpecRepo

1
pod repo push XiongSpecRepo MyLib.podspec

进入到 ~/.cocoapods/repos/XiongSpecRepo/查看添加的

1
MyLib

然后执行pod search 库名会从本地系统CocoaPods的所有的SpecRepo搜索这个库,最终查询到我们自己的SpecRepo XiongSpecRepo

1
2
3
4
5
6
7
8
xiongzenghuideMacBook-Pro:XiongSpecRepo xiongzenghui$ pod search MyLib

-> MyLib (0.1.1)
测试pod生成framework的YohunlUtilsPod.
pod 'MyLib', '~> 0.1.1'
- Homepage: https://github.com/xiongzenghuidegithub/MyLib
- Source: https://github.com/xiongzenghuidegithub/MyLib.git
- Versions: 0.1.1 [XiongSpecRepo repo]

注意: 团队内其他项目组需要使用,那么必须手动将之前的XiongSpecRepo添加到本地CocoaPods的Spec系统库中.


小结主要步骤:

  • 建立 两个 git仓库
  • 远程git仓库1,存放 库工程源码
  • 远程git仓库2,存放 所有的 PodSpec 文件

  • PodSpecライブラリファイル(.Aまたは.framework)を生成するために使用される場合は、設定ファイルを読み込み

  • リモートのgitからどのライブラリを指定し、ライブラリのソースコードを引っ張ります
  • どのタグソースの取得
  • そして、元の場所
  • システムフレームワークに依存しています
  • 他の静的ライブラリの依存関係
  • サードパーティ製のオープンソースライブラリに依存

  • pod lib create 库工程名字 ライブラリプロジェクトを作成します。

  • その後、スペックファイルを書き込みます 库工程名字.podspec
  • 上記のすべての変更を行った後
  • コマンドを実行しpod lib lint、正しいファイルの構文podspecかどうかを監視するために

  • 実行pod installだけでなく、すべてのシステムコンフィギュレーションの更新など、依存関係のライブラリをダウンロードする(ライブラリファイルのさまざまな依存を...)

  • 注:各ライブラリプロジェクトの後に変更されている、我々は実行する必要があります

  • そして、すべてのソースライブラリプロジェクトを作成します

  • 提出する库工程源码だけでなく、提出するよう、リモートのgitリポジトリにtagリモートのgitリポジトリに

  • すべてのソースコードをプッシュします
  • タグセットの提出
  • プッシュタグ

  • 書き込み再びのPodSpecファイル

  • 対応するソースコードライブラリgitのアドレスを変更します。
  • タグを対応するライブラリのソースコードを変更します

  • そして、库工程的 PodSpec 文件スペックCocoaPodsライブラリに提出

  • マシンが直接することができpod install 库名、ライブラリを搭載し

  • 他のマシンは、最初に追加しなければならない前に、PodSpec git 库仕様のあなたの地元の図書館CocoaPodsにして、上記のインストールコマンドを実行します


あなたが実際にCocoaPodsを見ることができます

  • まず、githubのか、他のgitリポジトリのすべてのpodspec文件コピーに本地的Spec Repo
  • その後、クエリは本地podspec文件、ライブラリをダウンロードするには、ソースコードを見つけるためにgit地址、以及tag、依赖关系、など

学習出典:http://www.cnblogs.com/brycezhang/p/4117180.html

おすすめ

転載: www.cnblogs.com/liuzhongrong/p/12361698.html
おすすめ