Categories
Cocoapods

How to switch cocoapod version

Bundler

The way I usually introduce Bundler to iOS developers is “like CocoaPods, but for Ruby”. This is correct but a bit unfair, as it is actually CocoaPods which took inspiratino by Bundler, not vice versa.

Bundler lets you specify your dependencies into a Gemfile, it installs or update them for you, and finally makes sure that the executables your are calling are actually the ones specified for the project.

Bundler is a Ruby tool itself, so you can install it like this:

gem install bundler

Once installed you can setup your project to use Bundler with this command from the root of your project:

bundle init

This will generate a template Gemfile. Like a Podfile, a Gemfile is actually a Ruby file in which you can use a special DSL to specify which dependencies you are using, and their version.

This is how a Gemfile for an iOS project might look like:

source "https://rubygems.org"

gem 'cocoapods', '1.0.0.beta.3'
gem 'fastlane', '~> 1.57.0'

The string after the gem names informs Bundler on the version requirement. In our case CocoaPods should be exactly at version 1.0.0.beta.3, while Fastlane latest version that is greater or equal than 1.57.0, but less that 1.58.0.

Fun fact: Bundler and CocoaPods share the same dependency resolution library, molinillo.

To install your dependencies simply run:

bundle install

Bundle Exec

Installing the right version of a given tool is only the start, actually using the tool is what matters.

I can sometimes happen to be working on different projects at the same time which are using different versions of a tool. Sometimes is not wise to always use the latest version on all the projects, for example and older project might be structured in an incompatible way.

Rather than going down the rabbit hole of updating or downgrading everything, you can rely on Bundler to make sure you are actually using your tools in the version specified in the Gemfile. This can be done by calling them through Bundler via bundle exec, for example:

bundle exec pod install

hat’s quite verbose, so I’d recommend to use an alias) for that. Mine is be, I actually have two special aliases for CocoaPods and Fastlane, bp and bf.

Ref:
https://mokacoding.com/blog/ruby-for-ios-developers-bundler/
https://stackoverflow.com/questions/42293121/how-to-switch-cocoapod-version

Categories
Cocoapods

Install CocoaPod Version

Recently, I’ve created react native app with this command:

npx react-native init myapp

and I got these error: “Installing required CocoaPods dependencies”

info Installing required CocoaPods dependencies
(node:8874) UnhandledPromiseRejectionWarning: Error: Failed to install CocoaPods dependencies for iOS project, which is required by this template.
Please try again manually: "cd ./myapp/ios && pod install".

and “React requires CocoaPods version >= 1.10.1”

`React` requires CocoaPods version `>= 1.10.1`, which is not satisfied by your current version, `1.10.0`

Here is my solution:

  1. Check cocoapods version
pod --version
1.10.0

2. Cocoapods gem list

gem list cocoapods
*** LOCAL GEMS ***

cocoapods (1.10.0)
cocoapods-core (1.10.0)
cocoapods-deintegrate (1.0.4)
cocoapods-downloader (1.4.0)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.0)
cocoapods-trunk (1.5.0)
cocoapods-try (1.2.0)

3. Install cocoapods version

gem install cocoapods -v 1.10.1
Fetching cocoapods-1.10.1.gem
Fetching cocoapods-core-1.10.1.gem
Successfully installed cocoapods-core-1.10.1
Successfully installed cocoapods-1.10.1
Parsing documentation for cocoapods-core-1.10.1
Installing ri documentation for cocoapods-core-1.10.1
Parsing documentation for cocoapods-1.10.1
Installing ri documentation for cocoapods-1.10.1
Done installing documentation for cocoapods-core, cocoapods after 3 seconds
2 gems installed

4. Cocoapods install specific version in your project.

pod _1.10.1_ install
// pod _{version}_ install

** Don’t forget to put underscore before and after version number

This does not change the default CocoaPods version used when running pod install

I hope this help.

Ref: https://blog.echobind.com/managing-cocoapods-versions-across-projects-93cb2222f906