Notatki Deva Notatki Deva

CocoaPods na Mac M1

Mobile

Ten wpis to przeredagowana odpowiedź na How to run CocoaPods on Apple Silicon (M1). Poprawna odpowiedź nie została oznaczona jako rozwiązanie, a mało kto szuka dalej, jeżeli pierwsza odpowiedź działa.

Błąd podczas instalacji pods

Jeżeli spróbujesz zainstalować pods na “czystym” MacOS, dostaniesz piękny load error. Dzieje się tak, ponieważ ruby dostarczone z systemem zostało skompilowane na maszynie x86_64 pod uniwersalną architekturę. Gdyby tego było mało, niedługo ruby zniknie z systemu:

WARNING: This version of ruby is included in macOS for compatibility with legacy software.
In future versions of macOS the ruby runtime will not be available by
default, and may require you to install an additional package.

Nie pozostaje nic innego, jak zainstalować ruby samodzielnie, zbudowane specjalnie pod arm64.

Opisany proces korzysta z domyślnych ścieżek homebrew. Jeżeli korzystasz z niestandardowej konfiguracji, ścieżka /opt/homebrew będzie odpowiadać wynikowi brew --prefix

Instalacja ruby z homebrew

Zacznijmy od instalacji i konfiguracji ruby:

brew install ruby

Po instalacji, homebrew poinformuje Cię, że binarki zostały zainstalowane do /opt/homebrew/lib/ruby/gems/3.1.0/bin (katalog wersji oczywiście może się różnić).

By default, binaries installed by gem will be placed into:
/opt/homebrew/lib/ruby/gems/3.1.0/bin

You may want to add this to your PATH.

ruby is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have ruby first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc

For compilers to find ruby you may need to set:
export LDFLAGS="-L/opt/homebrew/opt/ruby/lib"
export CPPFLAGS="-I/opt/homebrew/opt/ruby/include"

Dopisz ścieżki do ruby i gemów w .zshrc, .zprofile czy innym .bashrc

export PATH="/opt/homebrew/opt/ruby/bin:/opt/homebrew/lib/ruby/gems/3.1.0/bin:$PATH"

Naturalnie po tej operacji należy albo załadować zmienione ustawienia, albo zrestartować shell.

Po wszystkim, sprawdź, czy ruby to rzeczywiście nowo zainstalowane ruby. Ścieżka powinna wskazywać na /opt/homebrew/opt/ruby/bin/ruby.

$ which ruby
/opt/homebrew/opt/ruby/bin/ruby

Instalacja Cocoapods

Skoro ruby już jest w poprawnej wersji, zainstaluj cocoapods

gem install cocoapods

Ponownie musisz sprawdzić ścieżki, tym razem do pods. Ścieżka powinna wskazywać na /opt/homebrew/lib/ruby/gems/3.1.0/bin/pod

$ which pod
/opt/homebrew/lib/ruby/gems/3.1.0/bin/pod

Instalacja podów

Po dokonaniu powyższych zmian, pod install przestaje rzucać błędami i pody instalują się poprawnie.

$ pod install
Analyzing dependencies
Downloading dependencies
Generating Pods project
Integrating client project
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

Poprzedni artykuł