Brew the Mash

クラフトビール好きなITエンジニア@mashmorgan_jpの開発メモなど

【iOS】ERROR ITMS-90085 でApp Store Connectにアップロードできない

久しぶりに詰まったのでメモとして残します。

XCodeアーカイブしてApp Store Connectにアップロードしようとしたところ、ERROR ITMS-90085: "No architectures in the binary. Lipo failed to detect any architectures in the bundle executable." というエラーが出ました。

またipaファイルも端末にインストールしようとすると「整合性が取れません」という旨のエラー。

ネット情報も当てはまるものがなく、特にXCode環境を変えたわけでもないので原因の追求に凄く時間がかかりました。。。


結論から言うと「CocoaPodsで未使用のライブラリを導入したままだったこと」「別の問題で導入していたRun scriptが影響していたこと」が原因でした。

※よって私の場合は特殊かもしれません。

"別の問題"とはこちらです。以前にエラーになった際に不要なFrameworkを削除してくれるscriptを導入していました。

https://stackoverflow.com/a/53267826

そしてCocoaPodsのほうは、podfileに導入しようとしたけどやっぱりやめたライブラリのインポートが残ったままでした。

この複合技(?)で、おそらくスクリプトは不要Frameworkの削除を実行したが何らか情報が残ったままでipaファイル作成時に欠損が発生し上記のエラーに繋がっていたようです。リンク時の処理のため、ビルドでもアーカイブでも何のエラーにもなっていませんでした。


解決方法は、podfileから不要なライブラリを削除しただけです。

全容がわかるとそうだよなーってことなんですが、なかなか調べるのに時間もかかってしまいました。少ないと思いますが同じ現象にぶち当たった人のお役に立てば幸いです。

【Node.js】M1 MacでNode.js 14以下をインストールしたい

タイトル通り。

私の場合はFirebase functionsを使うためにM1 MacでNode.js環境構築していました。

ちなみにFirebaseはNode.js 16はまだベータ版扱いなんですね。

firebase.google.com

既存の開発環境がNode.js 10ベースだったので nodebrew install v10.24.1でインストールしようとしたら、

Can not fetch: https://nodejs.org/dist/v10.24.1/node-v10.24.1-darwin-arm64.tar.gz

とエラーが。

あれ、と思ってよくみると、darwin-arm64とあったので、もしやM1 Mac版のパッケージが存在してない!?

ググってみたら皆さん同じようで、解決方法は自分でコンパイルしなさいってことでした。

参考サイトを元に

$ nodebrew compile v10.24.1

で解決できました。ちなみに30分くらいかかりました。

参考サイト:

kotsukotsu.work

追記あり

上記の流れをやっていましたが、コンパイルでエラーになりました。

v10は古すぎるのでコンパイルも出来ないのかもしれません。修正すれば通りそうですが時間がもったいないので別の方法を探したらこれが一番スマートでした。

zenn.dev

ターミナルをRosetta2で起動してあげれば良いだけ。考えてみればそうですよね。

私の場合はもう開発環境のバージョンをv16にあげました。Firebaseもちょっと目を離すとすぐベース環境が変わるので追いかけるのが大変です。。

【iOS】【Google】Maps SDK for iOSで任意のUIViewに地図をセットしたい場合は、Storyboard上で指定したほうが良い

基本的な内容だけど公式にも特に記載なかったのでメモがてら。

GMSMapViewを全画面ではなく一部のUIViewに表示させたいことは多々あると思います。

私はこれまで空のUIViewを作ってそこにコードでGMSMapViewを生成しaddSubViewしていたのですが、どうもサイズが意図した通りにならず都度、微調整してました。

そこでどうにかならんかと探してみた結果、こんな記事を発見。

つまりStoryboard上でClassをGMSMapViewにして、outletで繋ぐだけでOK。

言われてみればその通りなんですが、私は長年気づけなかったのでメモっときます。

 

参考記事:

stackoverflow.com

【Google】Places Libraryのレスポンスで緯度経度が取得できなかった問題

Google Places Libraryを使って周辺施設情報を取得するWebアプリを作成していたのですが、どうしてもResponseの緯度経度(LatLng)が取得できませんでした。

console.log(place.geometry.location);
// ->(39.xxxx,135.xxx)というような出力になる
console.log(place.geometry.location.lat);
// ->[NG] return($a)みたいな出力になる

型がObject型でないとか色々試しましたが、結論から言うと取得方法がダメだったようです。

console.log(place.geometry.location.lat());
// ->[OK] 39.xxx で取得できた

Stackoverflowに全く同じ内容があったのでリンク貼っときます。ほんとにridiculousですね。。

stackoverflow.com

【ConohaVPS】「Jitsi Meet」テンプレートで2人目接続がエラー切断される場合の解決方法

普段お世話になっているConohaVPSで、Jitsi Meetなるオープンソースのビデオ会議ソフトのテンプレートが用意されたとのこと。(ジッチと呼ぶらしい)

最近流行っているZoomを嫌がる人もいるので試しに構築してみました。

support.conoha.jp

基本的には上記の手順に沿ってVPSサーバーを立ち上げるだけなんですが、そのまま起動すると2人目が参加した時点で何故か会議室がエラーで落ちる。。。

2日かけてやっと原因を突き止めたのでメモとして残しておきます。

原因は、一部ドメインが正しく設定されていなかったため。

conohaVPSコンソールで以下を実施。

$ grep -r meet.example.com /etc/jitsi/

検索結果の有効行として以下が出てくるので全て正しいFQDNへ置き換える。

→例でmeet.example.comhogehoge.com に置き換え

/etc/jitsi/videobridge/sip-communicator.properties:org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.meet.example.com

/etc/jitsi/videobridge/sip-communicator.properties:org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.meet.example.com

/etc/jitsi/jicofo/sip-communicator.properties:org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.meet.example.com

以下でサービスを再起動

$ systemctl restart nginx.service jicofo.service jitsi-videobridge2.service

これで無事に使用可能となりました! セキュリティとか気になるのでこの辺は設定してたほうが良さそう。

jitsi.github.io

あとデフォルトだとポートが全オープンなのでufw enableファイアウォールONとポートも制限しといたほうが良いですね。

使用感はZoomと全く変わらないし、3人で3時間くらい打ち合わせしたけど全く途切れることなかったので実務で使うのも問題なさそうですね。

一件落着。

【ConohaVPS】rootパスワード忘れたぁぁーー!時の最終手段

かなり昔に作成した、Conoha VPSを久しぶりに更新しようと思いまして。

rootパスワードはあったかなーどこかなー。。。ない。

しかも昨年末にパソコン内のデータ整理もしたため古いメモ的なものも残ってない。。。

あーこりゃ建て直しかなぁと思ってたら「ちょっと待ったぁぁー!」

公式のページを見るとヒントがさり気なく書いてあるではないか。

rootパスワードやVPS内で作成したアカウント情報ついて弊社側では確認ができません。サーバー再構築やシングルユーザモード・レスキューモードにてパスワードの再設定をご検討ください。

基礎が出来ていないアテクシ、ざっくりとお勉強。

どうやらシングルユーザモードで起動すればパスワード入力なしでrootログイン出来るので、そこでpasswdでパスワード変更すればイケるかもよ?ってことらしい。

とりあえず色々試してみた結果、こちらのサイトの内容が最もマッチ(というかほぼこのままでOK)していた。

https://it.rin-ka.net/centos7-single-mode/

注意点というか補足があるとすれば以下くらい。

  • ConohaVPSの管理画面から接続
  • [Ctrl]+[Alt]+[Del]キーを特殊キーで送信
  • 起動画面でキーボードの↑↓を適当に連打してるとOS選択画面になる
  • たくさんあるのでResqueでない最新のOSを選んで"e"キーでOK

あ、あとMacbook(英語キーボード)だと"="が入力できなかったのでWindowsからやりました。ここも地味にストレスだったな。。。

普段からちゃんと管理していればこんな作業は不要なので、今後はまとめて管理するよう気をつけなはれやっ!(自分)

【iOS】SFSafariViewControllerがblank(真っ白)になってしまう

古いiOSアプリ改修時にちょっと躓いたのでメモ。

SFSafariViewControllerでURLを正しく設定しているのにも関わらず、ページが真っ白になってしまう現象が発生。

どうやらViewの指定がよろしくないケースみたい。

presentの指定時にrootViewControllerを指定してあげることで解決。

NG

let safariViewController = SFSafariViewController(url: URL)
present(safariViewController, animated: true)

OK

let safariViewController = SFSafariViewController(url: URL)
view.window?.rootViewController?.present(safariViewController, animated: true)