iOSの証明書を更新するとき
これをみろ!以上だ!
Bitrise上でgoogle-play-deployに"JSONKeyPath: required variable is not present"と言われた
エラー内容
Couldn't create config: failed to parse config: - JSONKeyPath: required variable is not present
原因
GENERIC FILE STORAGE
セクションを埋めてなかった。
GooglePlayStoreにAPI経由でアプリを公開(publish)するには Getting Started | Google Play Developer API | Google Developers にあるようにサービスアカウントを作成してアプリ公開のアクセス権限を与えないといけない。 ↓にある流れに沿って作業すればOK。 github.com
そしてダウンロードできたJsonファイルをGENERIC FILE STORAGE
にアップロードするのだ。
ここにはhogeとそのファイルにアクセスするための環境変数名を入力する。
今回はBITRISEIO_SERVICE_ACCOUNT_JSON_KEY_URL
とした。
そしてそれを Deploy to Google Play
ワークフローで使用する。
参考
【ReactNative】Expo製アプリが本番でのみクラッシュする問題を調査・解決した。【adb logcat】コマンドの使い方メモ
状況
原因追求方法
adb logcat
を使った。
adb logcatとは
adbコマンドは、 Android Debug Bridgeの略でデバイスと通信するためのコマンドです。今回のように実際に目の前の端末内で何がおきてるのかを知りたい場合のデバッグに重宝します。
adb logcat
コマンドは、その名の通りlogをcat(catenate)するコマンドで、接続した端末ののデバイスログを表示できます。
adb logcatの使い方
- Android端末をUSBでつなぐ
adb devices
でちゃんと端末が認識されているか確認するadb logcat -c
で一旦ログをクリアする(しなくても良いが、該当ログを発見しやすくするためにやっておく)adb logcat
でログを表示する
といった流れ。
adbコマンドを実行しても「waiting for device」と表示されて何も進まない場合は、 - adb kill-server - adb start-server して再起動するとうまくいきました。
参考: [Android] USBデバッグモードで端末が認識しないとき/adb installが「waiting for device」から進まないときの対処法
備考・コツ
adb logcat
の結果を見るだけだと調査しにくいので、adb logcat > log.txt
のようにしてからファイルを調べるとおくと落ち着いて調査できます。
Android端末が認識されない場合
らへんの問題に関しては別で記事を書きます。
Apple証明書たちの関係と新しいアプリを作るときどうすれば良いか
証明書たちとは
- Apple Distribution Certificate(.p12)
- Apple Push Notifications service key(APNs)(.p8)
- Apple Provisioning Profile(.mobileprovision)
の3つを指してます。
証明書たちの関係性
Apple Distribution Certificate(.p12)
に複数の
Apple Provisioning Profile(.mobileprovision)
が紐づいてる関係。
紐づいてなければ、アップロードした際に
provisioning profile is not associated with uploaded distribution certificate
と怒られる。↓こんな感じで。
さらに、紐づいてるApple Distribution Certificate(.p12)は1つのBundle Identifierと紐づいてるので、間違えないようにする。
↓は、 過去にjp.oned
と1d.oned
で2つのBundle Identifierを作ってしまってて、違うDistribution Certificateを選択してしまったミス。
(Distribution Certificateを消せば良いはずだが、怖くて消せなかった)
新しいアプリを作る際(既存のProvisioningProfileを更新する際も同じ)
Apple Push Notifications service key(APNs)(.p8) に関しては、完全に使い回しで良いはず。
Apple Distribution Certificate(.p12) は新しいアプリのBundle Identifierに合わせて作ろう。
Apple Provisioning Profile(.mobileprovision) は作成したApple Distribution Certificate(.p12)に紐づけて作ろう。
ReactNativeからExpoに移行する際にAppleの証明書関連を全て新しくした時のメモ
Expoに渡す必要があるファイル
- Apple Distribution Certificate(.p12)
- Apple Push Notifications service key(APNs)(.p8)
- Apple Provisioning Profile(.mobileprovision)
全て新しくした。developer.apple.comで全て作成・ダウンロードできるので、何も取っておく必要なかった。
※↓のようにファイルパスを聞かれる。
詰まったところ
以前ReactNativeからExpoに移行した際は、Provisioning Profileがdeveloper.apple.comにあったのでそれをダウンロードしてきてExpoに渡していた。
しかし今回はなぜか見つからなかった。
そこで、ReactNative版のソースをCloneしてきてその中のxcodeprojファイルをXcodeを開いて、以下のようにProvisioning Profileをダウンロードしてきた。
すると、provisioning profile is not associated with uploaded distribution certificate
と怒られた。
解決方法・証明書関連の用意・アップロードの流れ
- https://developer.apple.com/ に行く
- Profileタブで新しくProvisioning Profileを作る(このとき、Distribution Certificateを選択するので選択したものを覚えておく)
- 2で作成したProvisioning Profileと選択したDistribution Certificateをダウンロードする => Distribution Certificateは.cer拡張子でダウンロードできる。これをmacでダブルクリックするとキーチェーンアクセス(Key Chain Access)が開かれて証明書を追加できる。 => 追加した証明書を右クリックすると 〇〇書き出す という選択肢が出てくるので、書き出す。 => 書き出したファイルは.p12ファイルになるのでそれを使う。
findコマンドを駆使してた僕がripgrepを使って幸せになれた話
今まで
こんなコマンドを自作していた
function fn() { ignore=$3 find $1 -type f | xargs grep -n${ignore} --color=always $2 }
これを~/.zsh_alias
とかに置いて、
fn src hoge
みたいな感じで使うとsrcディレクトリ以下のhogeというワードを探す処理をしてくれる。
アウトプットは↓のような感じ。
どのファイルの何行目でどんな感じで使われているのかが分かるので「便利コマンド作った俺、神!」って思ってた。
しかし出会ってしまった
ripgrep
というツールに出会ってしまった。
github.com
インストールから使い方までREADMEを見ればとりあえず問題なし。
オプションについてはこっちのGUIDE
を見ると良い。
https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md
基本的には rg hoge
のようにして使う。
ディレクトリを指定してなくてもgitignoreされてるディレクトリ以下は無視してくれるので無駄が少ない。
↓アウトプットはこんな感じ。
また、--no-ignore
を付けるとgitignoreされてるディレクトリ・ファイルも含めて検索してくれるらしい。
Rust製なのね。fd
も似たような検索機能をファイル検索で提供してくれるみたいなので気になっている。