たなかこういちの資料室

システム開発に携わる筆者があれこれ試したことや学んだことについてのまとめ

iOSアプリ開発のための、Carthageビルド環境作り、奮闘メモ

iOSアプリ開発のため、環境準備しようとしたときの記録です。
 
<まとめ>
・HomebrewでCarthageの更新をしようとして、いくつか引っかかりポイントがあった。
・Carthageのダウンロードand/orビルド済みモジュールやキャッシュを一旦全消去した。
・App Storeからの最新版Xcodeではなく、古いバージョンのXcodeを使う必要があって、複数バージョン共存環境を用意した。
 
事前知識
 
o Xcodeとは?
 
・Appleが提供するiOS/macOSアプリ開発用のIDE。
・App Storeで配布されているが、Apple Developerのサイトから、バージョン指定してダウンロードすることもできる。
 
o Carthageとは?
 
・Swift界におけるパッケージ管理ツール。Java界のMaven、PHP界のComposerに相当する。
・Cathargeの導入手順や使い方はこちらなどを参考に。
 
実施環境
 
- macOS Mojava 10.14.6
- Xcode 11.3、過去に導入済み状態
- Carthage、過去に導入済み状態
 
実施日時
 
- 2020年1月8日
 
やったことメモ
 
1. (carthageを最新化するため、その前に念のため、)homebrewを最新化した。
 
$ brew update
 
2. そして、(install済みだった)carthage(およびその他も)を最新化した。
 
$ brew upgrade
 
2-1. そうしたら、次のようなエラーが出たので、オーナー(だけ)を変更した。
 
$ brew upgrade
Error: The following directories are not writable by your user:
/usr/local/include
/usr/local/lib
 
You should change the ownership of these directories to your user.
  sudo chown -R $(whoami) /usr/local/include /usr/local/lib
 
And make sure that your user has write permission.
  chmod u+w /usr/local/include /usr/local/lib
$ sudo chown kou /usr/local/include /usr/local/lib
$
 
 
2-2-1. brew upgrade再実行したら、pythonの更新中に、次のように「"/usr/local/Frameworks"が作れない」というエラーが出て、実行が中断した。
 
$ brew upgrade
...
==> Installing python
######################################################################## 100.0%
==> Pouring python-3.7.6_1.mojave.bottle.tar.gz
Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks
$
 
 
2-2-2. 調べたら、手で作るればよい/作るしか無いようなので、"/usr/local/Frameworks"を作った。
 
$ sudo mkdir Frameworks
$ sudo chown kou Frameworks/
 
2-3-1. 再度brew upgrade再実行したら、carthageの更新中に、次のようなエラーが出た。ただし、brew upgradeの後続処理は最後まで実行された模様。
 
$ brew upgrade
 
...
==> Upgrading carthage
######################################################################## 100.0%
==> Pouring carthage-0.34.0.mojave.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink etc/bash_completion.d/carthage
Target /usr/local/etc/bash_completion.d/carthage
is a symlink belonging to carthage. You can unlink it:
  brew unlink carthage
To force the link and overwrite all conflicting files:
  brew link --overwrite carthage
To list all files that would be deleted:
  brew link --overwrite --dry-run carthage
Possible conflicting files are:
/usr/local/etc/bash_completion.d/carthage -> /usr/local/Cellar/carthage/0.31.2/etc/bash_completion.d/carthage
/usr/local/bin/carthage -> /usr/local/Cellar/carthage/0.31.2/bin/carthage
/usr/local/share/fish/vendor_completions.d/carthage.fish -> /usr/local/Cellar/carthage/0.31.2/share/fish/vendor_completions.d/carthage.fish
/usr/local/share/zsh/site-functions/_carthage -> /usr/local/Cellar/carthage/0.31.2/share/zsh/site-functions/_carthage
...
 
 
2-3-2. 指示通り、brew link --overwriteを実行した。
 
$ brew link --overwrite --dry-run carthage
Would remove:
/usr/local/etc/bash_completion.d/carthage -> /usr/local/Cellar/carthage/0.31.2/etc/bash_completion.d/carthage
/usr/local/bin/carthage -> /usr/local/Cellar/carthage/0.31.2/bin/carthage
/usr/local/share/fish/vendor_completions.d/carthage.fish -> /usr/local/Cellar/carthage/0.31.2/share/fish/vendor_completions.d/carthage.fish
/usr/local/share/zsh/site-functions/_carthage -> /usr/local/Cellar/carthage/0.31.2/share/zsh/site-functions/_carthage
$ brew link --overwrite carthage
Linking /usr/local/Cellar/carthage/0.34.0... 4 symlinks created
$
 
 
3-1. こちらを参考にしつつ、「Xcode 11.2.1」をダウンロード&インストールした。
 
*App Storeから導入していたXcodeは、最新化して「11.3」になっていた。しかし、対象プロジェクトの都合上「11.2」が必要だった。よって、導入済みの「11.3」とは別に「11.2」を導入した。
*なお、パッケージ名は下記の通りとした。
 
11.3 → "/Applications/Xcode.app"
※App Storeで更新し続ける対象として、リネームしなかった。
11.2.1 → "/Applications/Xcode 11.2.1.app"
※バージョン固定として明示するためにリネームした。
 
3-2. 下記コマンドで、コマンドラインで使用するバージョンを変更した。
 
$ sudo xcode-select -s "/Applications/Xcode 11.2.1.app"
$ xcode-select -p
/Applications/Xcode 11.2.1.app/Contents/Developer
$
 
 
※ちなみに、現状自機は下記の状態。
$ sudo xcode-select -s "/Applications/Xcode.app"
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
$ xcodebuild -version
Xcode 11.3
Build version 11C29
$ swift -version
Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
Target: x86_64-apple-darwin18.7.0
...
 
$ sudo xcode-select -s "/Applications/Xcode 11.2.1.app"
$ xcode-select -p
/Applications/Xcode 11.2.1.app/Contents/Developer
$ xcodebuild -version
Xcode 11.2.1
Build version 11B500
$ swift -version
Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
Target: x86_64-apple-darwin18.7.0
...
 
$ sudo xcode-select -s "/Applications/Xcode 10.2.app"
$ xcode-select -p
/Applications/Xcode 10.2.app/Contents/Developer
$ xcodebuild -version
Xcode 10.2
Build version 10E125
$ swift -version
Apple Swift version 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3)
Target: x86_64-apple-darwin18.7.0
...
 
 
4. carthageの古いモジュールやキャッシュを念の為削除した。
 
$ rm -rf ~/Library/Caches/carthage
$ rm -rf ~/Library/Caches/org.carthage.CarthageKit
 
こちらを参考にした。
 
$ rm ./Carthage
 
※対象のiPhoneアプリプロジェクトのホームディレクトリに作られるものを削除するということ。
 
5. cathage依存パッケージをビルドした。
 
$ carthage bootstrap --platform iOS
 
6. Xcodeを起動して、対象のiPhoneアプリプロジェクトを開いた。
 
◆以上