Objective
As each language develops to a single stage, a corresponding dependency management tool appears, or a central code repository. Like what
- Java:maven,ivy
- Ruby:gems
- Python:pip, Easy_install
- nodejs:npm
As iOS developers have grown, the industry has also come up with a dependency management tool for iOS programs called CocoaPods.
Cocoapods Introduction
Cocoapods is a tool for managing third-party open source code in iOS projects. The source code for the Cocoapods project is managed on GitHub. The project began on August 12, 2011, and after more than a year of development, it has now been submitted more than 1000 times and has continued to remain active and updated. Developing iOS projects inevitably uses third-party open source libraries, and the advent of cocoapods allows us to save time setting up and updating third-party open source libraries.
Take my previous development of the chalk Web iphone Client For example, which uses 14 third-party open source libraries. Before using cocoapods, I need to:
- Copy the relevant files from these third-party open source libraries to the project, or to Git's submodule, and these open source libraries often need to rely on some framework of the system, I need to manually add these frameworks one by one to the project dependencies, For example, the ASI network Library needs to add the following framework:cfnetwork, SystemConfiguration, Mobilecoreservices, Coregraphics and zlib.
- For regexkitlite This regular expression library, I also need to set the compilation parameters of-licucore
- Manually manage updates for these dependent packages.
These physical activities, though simple, have no technical content and waste time. After using Cocoapods, I only need to put the third-party open Source Library in a file named Podfile, and then execute the pod install. Cocoapods will automatically download the source code of these third-party open source libraries and set up the corresponding system dependencies and compilation parameters for my project.
Installation and use of Cocoapods installation
The installation is exceptionally simple, with Ruby on your Mac, and you can download the installation using Ruby's GEM command:
12 |
$ sudo gem install cocoapods$ pod setup
|
When the second row above executes, it will output Setting up CocoaPods master repo
, but will wait for a longer time. This step is actually cocoapods to download its information into the ~/.cocoapods
directory, if you wait too long, you can try to CD to that directory, use du -sh *
to check the download progress.
If your gem is too old and may be problematic, try upgrading the gem with the following command:
1 |
sudo gem update --system
|
In addition, Ruby's software source rubygems.org because of the use of the Amazon Cloud service, so it was wall, need to update the source of Ruby:
123 |
gem sources --remove https://rubygems.org/gem sources -a http://ruby.taobao.org/gem sources -l
|
Use
When using, you need to create a new file named Podfile, in the following format, the dependent library name is listed in the file.
123)45 |
platform :iospod ‘JSONKit‘, ‘~> 1.4‘pod ‘Reachability‘, ‘~> 3.0.0‘pod ‘ASIHTTPRequest‘pod ‘RegexKitLite‘
|
Then you put the edited Podfile file in your project root directory and execute the following command:
12 |
cd "your project home"pod install
|
Now that all of your third-party libraries have been downloaded and set up with compilation parameters and dependencies, you just have to remember the following 2 points:
- Use the. xcworkspace file generated by Cocoapods to open the project instead of the previous. xcodeproj file.
- Each time you change the Podfile file, you need to re-execute the pod install command.
Find a third-party library
If you don't know if there are any libraries you want in the Cocoapods managed library, then you can find them through the pod Search command, and here are all the available libraries I found with pod search JSON:
12345678910111213141516171819 20212223 242526 27282930 313233 34353637 383940 41424344 |
$ pod Search JSONAnyjson(0.0.1)Encode/decode JSON by any means possible.-Homepage:https://github.com/mattt/anyjson-Source:https://github.com/mattt/anyjson.git-versions:0.0.1[Master Repo]Jsonkit(1.5pre)A Very High Performance objective-c JSON Library.-Homepage:https://github.com/johnezang/jsonkit-Source:git://github.com/johnezang/jsonkit.git-Versions:1.5pre, 1.4[Master Repo]Mtjsondictionary(0.0.4)An nsdictionary categoryFor when' re working with it converting To/from JSON. DEPRECATED, use Mtjsonutilsinstead.-Homepage:https://github.com/mysterioustrousers/mtjsondictionary.git-Source:https://github.com/mysterioustrousers/mtjsondictionary.git-versions:0.0.4, 0.0.3, 0.0.2[Master Repo]Mtjsonutils(0.1.0)An nsobject categoryFor working with JSON.-Homepage:https://github.com/mysterioustrousers/mtjsonutils.git-Source:https://github.com/mysterioustrousers/mtjsonutils.git-Versions:0.1.0, 0.0.1[Master Repo]Sbjson(3.1.1) This library implements strict JSON parsing and generation in objective-c. -Homepage:http://stig . github.com/json-framework/ -Source:https://github.com/stig/json-framework.git -versions:3.1.1, 3.1, 3.0.4 , 2.2.3 [master repo],Touchjson (1.0) Touchjson is an objective-c based parser and Generat Or for JSON encoded data. -Homepage:https://github.com/touchcode/touchjson -source:https://github.com /touchcode/touchjson.git -versions:1.0 [master repo]
|
About. Gitignore
When you do pod install
, besides Podfile, Cocoapods will generate a Podfile.lock
file named, you should not add this file to the .gitignore
. Because Podfile.lock
the version of the current dependent library is locked, it will change if the version is not changed after multiple executions pod install
pod update
Podfile.lock
. This can prevent the third-party library from upgrading to hang up the program when many people collaborate.
To generate a third-party library's help document
If you want Cococapods to help you build a third-party library's help documentation and integrate it into Xcode, install Appledoc with brew:
As for Appledoc, I had a special introduction to the "Document generation tool using Objective-c: Appledoc" In another blog earlier this year. The biggest advantage is that you can integrate the help document into Xcode so that when you tap the code, you can click the class name or the method name to display the appropriate help document.
Principle
Probably studied the principle of cocoapods, which is to put all the dependent libraries into another named Pods project, and then let the main project depends on the pods project, so that the source management work from the main project moved to the Pods project. Some of the technical details found are:
- The PODS project is eventually compiled into a file called LIBPODS.A, and the main project only needs to rely on this. a file.
- For resource files, Cocoapods provides a bash script called pods-resources.sh, which executes every time the project is compiled and copies the various resource files from the third-party library to the target directory.
- Cocoapods uses a file called Pods.xcconfig to set all dependencies and parameters at compile time.
Reprinted from: http://blog.devtang.com/blog/2012/12/02/use-cocoapod-to-manage-ios-lib-dependency/
Use Cocoapods to do package dependency management for iOS programs