2023年2月1日水曜日

[Xcode Organizer] ipaファイルをexportできない

【問題】

Xcode OrganizerでArchivesを選び「Distribute App」するとエラーが出る

次出るはずの画面はApp Thining(下図)なのだが、エラーになるということは、おそらくプルダウンメニューを作るために走らせているrubyのスクリプトが、途中でコケている模様。

なお残念ながら「Show Logs」を押しても、足がかりとなる情報は何も得られない。


【手がかり】

「/usr/bin/gem list」のコマンドが、正しく動作しないことに気がついた。


【背景】

cocoapodsを入れるために、Rossetaモードで試みたり、brewで導入したりと、環境を悪くしたことに原因があると思われる。


【対処】

「sudo /usr/bin/gem update --system」で、gemの更新を実行(3.0.3.1→3.4.2)。
エラーとなったので、Rossetaモードで実行し直した。
「/usr/bin/gem list」は動くようになり、「Distribute App」は成功するようになった。

【解決までの過程】

Xcodeは、プリインストールされたrubyを使っていると思われる。

brewによる導入のためgemが2つ存在(where gemで確認できる)し、brew側が優先されている(which gemで確認できる)場合に、優先されていないプリインストールされた「/usr/bin/gem」側で実行しようとして、失敗しているようだった。

上手くいっている別環境と比べると、「/usr/bin/gem env」で見えるパスに「/usr/bin/〜」が混ざっている点に気がついた。

ここを直せば治りそうなものだが、設定を直す方法がさっぱりわからず、試行錯誤していたところ「ver.3.0.3.xのgemはupdateすべき」というメッセージが出てきたので、試しに3.4.xに更新したら解決した。

改めてenvしてみると「/usr/bin/〜」が

「/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/〜」

に置き換わっていた。

2023年1月22日日曜日

[Xcode] 古いXcodeを使う方法

libstdc++を要求するモジュールをビルドしたいのだが、


の方法でlibstdc++を導入しても、ビルドできるのは、Xcode 13.2.1が最後。


でXcode自体は入手できるが、


というマークとなり、起動すると「最新版を取得せよ」と意地悪される。
この問題を解決したい。


【命題】


古いXcodeでビルドしたい。


【解決策】


ターミナルで、

#!/bin/zsh

/Applications/Xcode_13.2.1.app/Contents/MacOS/Xcode



というスクリプトを書き、例えば「Xcode13.command」という名で保存する。


【使い方】


このコマンドをダブルクリックすると、Xcode13.2.1が立ち上がる。
ただしターミナルは開きっぱなしになる。

Xcode終了時に自動的に閉じるようにするには、以下のようにする。



【残念ながら】


ここまで頑張っても、App Storeへの提出要件が、Xcode14になるとリリースできなくなる。

Xcode13.2.1でしか生成できないものはライブラリとしてFIXしてしまい、Xcode14で改めて外部リソースとして引き込むように、プロジェクトを見直せばいいのかな?