2022年11月21日月曜日

[Xcode, CocoaPods] VenturaでCocoaPodが動作しなくなった


1. 問題点


macOS 13 Venturaにアップデートして、pod --versionとしただけで、

Ignoring ffi-1.15.5 because its extensions are not built. Try: gem pristine ffi --version 1.15.5

Ignoring ffi-1.15.4 because its extensions are not built. Try: gem pristine ffi --version 1.15.4


こんなのがたくさん出るようになった。


2. 処方箋


1. Command Line Tools for Xcode X.Xを忘れずに。

2. Rossetaチェックを入れてターミナルを起動。uname -mでx86_64であることを確認しておくこと。

3. gem listでcocoapodsがあることを確認。入れてない人はsudo gem install cocoapods
 →gemがない人は論外。which gemでプリインストール/usr/bin/gemを確認できるはず。

4. 以下を実行
sudo gem install ffi --version 1.15.4
sudo gem install ffi --version 1.15.5

3. 結果


pod --versionとしても、エラーなくバージョンが表示される。
pod installやpod updateも、正しく動作する。

4. うまくいかない場合


ruby -v →2.6.10、gem -v →3.0.3.1の場合はうまくいったが、別に所有するgem -v →3.3.11の環境では、にっちもさっちも行かなかった。

dolphinicityさんのやり方に従ったところ、成功しました。
→ありがとうございます。


5. 追記


だんだん混乱してきたので、頭の中を整理するために記録しておく。


・そもそもの問題点

Venturaに含まれているruby/gemでは、cocoapodsはインストールできない。

→解決法

brewでrubyをインストールする。


・既に/usr/localにbrew導入済だと以下のエラーが出る

Error: Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)!

Please create a new installation in /opt/homebrew using one of the

"Alternative Installs" from:

  https://docs.brew.sh/Installation


→解決法は以下のどちらか

・brewを/opt/homebrewに入れ直す。
・brewを使う時は、我慢していちいちRossetaでターミナルを起動する。

2022年7月18日月曜日

[Xcode13.3] 非消耗型アプリ内課金コンテンツのホスティングサービスの終了


序文


Appleから2月頃以下のようなメールがきた。普段はすぐ捨てるが、なんか引っかかるところがあったので、捨てないで置いておいた。

Title: Upcoming changes to hosting non-consumable in-app purchases.

We’re reaching out to let you know about upcoming changes to in-app purchase content hosting. In Xcode 13.3, we’ve removed the option to upload non-consumable in-app purchase assets for Apple to host. In addition, support for managing these assets in App Store Connect will be removed starting in April 2022.

Existing assets hosted by Apple won’t be affected and you’ll still be able to manage their associated in-app purchase details, such as pricing and availability, in App Store Connect.

Moving forward, we recommend taking advantage of on-demand resources to host in-app purchase assets on the App Store, separately from the app bundle. You can enable smaller app bundles, faster downloads, and richer content.

最近久々に、アプリの更新をしてみたところ、このお知らせの意味する重大な問題にやっと気づいたので、これを解説したい。

何ができなくなるのか


私がリリースしている「学区ビューア」というアプリでは、GIS情報がデカすぎる等の理由から、アプリに内包(バンドル)せず、後からダウンロードできるようにしている。
今まではApple Store Connectを利用して、Appleが用意したサーバーにアップロードできていたわけだが、どうもこのサービスをやめたいらしい。
正確には、新規登録は受け付けない、既存の更新は許すが、アップロードしたいなら13.2以前のXcodeを使うか、別な手段(コマンドライン)でやりなさいということらしい。

私の例でいうとXcode13.2では、


のような画面を拝めたが、13.3以降では機能がなくなったので、プロジェクトをロードした時点でエラーとなる。

代替手段はあるのか


Apple Developer Forums
で議論されている。

Appleの中の人は、ODA(オンデマンドリソース)とやらを利用せよというが、


ODAは概念であって、非消耗型アプリ内課金コンテンツに対して、新しい置き場所が用意されたわけではないようだ。
実際、ODAのドキュメントには「Cloud or Apple Store」と記載されており、今後Apple Storeを利用できないとなると、Cloudしか残らない。
そしてCloudとは何かというと、要は自分でサーバーを用意せいっということらしい。
少なくとも私はそう読み取った。

外部サーバーへの接続、外部コンテンツの取得は、初期の頃はガイドライン的にNGだったはずだが、大手デベロッパーから押されてAppleも徐々に方針転換。
大手は大歓迎だろうが、個人が証明書類が揃ったサーバーを用意してまで、アプリのコンテンツを配信するのかと問われると、それは厳しいとしか言いようがない。