17
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

XcodeをCLIで使うときに役に立ちそうなコマンド

Last updated at Posted at 2018-11-22

コード署名に利用可能なデベロッパー証明書の一覧を表示する

$ security find-identity -p codesigning -v [キーチェーンのパス]

コード署名に利用するキーチェーンのロックを解除する
※xcodebuildをsshなどを使ってリモートで実行しようとする場合に必要

$ security unlock-keychain -p <キーチェーンのパスワード> [キーチェーンのパス]

キーチェーンに証明書や秘密鍵をインポートする

$ security import <証明書または秘密鍵ファイル> [キーチェーンのパス]

キーチェーンから証明書や秘密鍵を削除する

$ security delete-certificate -Z <証明書のSHA-1ハッシュ値> [キーチェーンのパス]

Xcodeプロジェクトの概要を表示する

$ cd <Xcodeプロジェクトのパス>
$ xcodebuild -list

Xcodeのバージョンを表示する

$ xcodebuild -version

以下は、複数のバージョンのXcodeをシステムにインストールしている場合に便利なコマンドです

現在有効化(選択)されているXcodeのパスを表示する

$ xcode-select -p

指定したパスのXcodeを有効化(選択)する

$ sudo xcode-select -s <選択するXcodeのパス>

実行にはroot権限が必要なため、suで一時的にroot権限を取得して実行します。
xcode-select -sで選択したXcodeのバージョンはその後他のバージョンのXcodeをxcode-select -sで選択するか、xcode-select -r(リセット)でデフォルトのXcodeが選択されるまで有効です。

一時的に指定したパスのXcodeを有効化(選択)する

$ export DEVELOPER_DIR=<選択するXcodeのパス + "/Contents/Developer">

パスには対象のXcodeがインストールされた場所 + "/Contents/Developer" で指定する必要があるので、標準のXcode.appであれば以下のようになります。

$ export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

Apple製の開発ツール、Xcodeやcodesignなどにキーチェーンへのアクセス許可を与えます。

$ /usr/bin/security set-key-partition-list -S apple-tool:,apple: -s -k <キーチェーンのパスワード> <キーチェーンのパス>

Xcodeおよびxcodebuildで利用可能なSDKのバージョンを一覧します。

$ xcodebuild -version -sdk

Xcodeバージョン9.xから導入された'New build syste'ではなく、旧来のビルドシステムを使用してプロジェクトをビルドします。
※Xcode 9.x以前に作られた古いプロジェクトをxcodebuildでビルドしようとしてエラー(error: Multiple commands produceなど)になった場合には試してみると良いでしょう。

$ xcodebuild ... 各種ビルドパラメータ ... -UseModernBuildSystem=NO

macOSのキーチェーンに格納されているデベロッパー証明書の内容を確認します。
"iPhone Developer: DEVELOPER NAME (XXXXXXXXXX)"の部分には証明書に付けられたコモンネームなどの証明書を一意に識別できる情報を指定します。

$ security find-certificate -p -c "iPhone Developer: DEVELOPER NAME (XXXXXXXXXX)" | openssl x509 -text -noout

macOSのキーチェーンに格納されているデベロッパー証明書で期限切れになったもの(CSSMERR_TP_CERT_EXPIRED)や無効化(CSSMERR_TP_CERT_REVOKED)されたものを一括で削除します。
※削除したものは元には戻せないのでキーチェーンをバックアップするなどして慎重に運用してください

$ security find-identity -p codesigning | grep -e CSSMERR_TP_CERT_REVOKED -e CSSMERR_TP_CERT_EXPIRED | awk '{print $2}' | xargs -I{} security delete-certificate -Z {}
17
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?