GSONのSerializerとDeserializerを書く時に参考になったページ
毎回調べてる気がするのでメモ。
- Gson User Guide - gson
- 公式ドキュメントは外せない。
- GSON Serialiser Example | Java Creed
- Serializerについての解説。取り敢えずこのページを見ておけば問題ないと思う。
- GSON Deserialiser Example | Java Creed
- Deserializerについての解説。Serializerの記事と同じサイトの記事。Serializerと同じく取り敢えずこのページを見ておけば問題ないと思う。
上記ページ中のサンプルコードはJavaだけどKotlinで書く場合も特に嵌まる部分は無いと思う。
追記: JSONObjectとGSONのJsonObectを混同してコンパイルが通らず嵌ったのを思い出した。
新規アプリでGoogle Play App Signingを有効にしアプリ署名鍵からFacebook SDKで使用するkeyhashを作成する方法について
概要
新規アプリでGoogle Play App Signingを有効にするとアプリ署名鍵がGoogle側で自動的に作られるためリリースkey hashを作成できず困ったのでその解決方法についてのメモです。
Google Play App Signingとは?
Google I/O 2017で発表されたGoogle Play App Signing(以下App Signing)が現在オプトイン形式で利用できるようになっています。App Signingを利用すると、リリース用の鍵(アプリ署名鍵)をGoogleが管理するため、鍵を紛失してアプリを更新出来ず別アプリとしてリリースするといった事故が防げます。
今までとどう違うのか?
App Signing以前
アプリ署名鍵は開発者が管理するのが一般的でした。開発者がアプリ署名鍵でAPK署名し、それをGoogle Play ConsoleにアップロードするとそのままGoogle Playで配信されます。
App Signing有効化後
App Signingでは、開発者が用意する鍵はアップロード鍵と呼ばれます。名前の通りAPKのアップロードに使う鍵で、アップロード鍵で署名したAPKのみGoogle Play Consoleにアップロードできます。その後、Googleはアップロード鍵の署名を検証して削除し、アプリ署名鍵でアプリに再署名後アプリをユーザーに配信します。
(画像はこちらから引用)
新規アプリの場合アプリ署名鍵は自動的に用意されるため開発者側で用意する必要はありません。
Facebook SDKで使用するkeyhash
Facebook SDKでは、例えばログインを実装する際にkey hashと言われる文字列を登録する必要があります。
Android - Facebookログイン - ドキュメンテーション - 開発者向けFacebook
kay hashには2種類あり、開発key hashとリリースkey hashがあります。
開発key hashは以下のコマンドで作成します。注意が必要なのは作業する環境ごとにkey hashの登録が必要になる点です。
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
そして、以下のコマンドでリリースkey hashを作成します。YOUR_RELEASE_KEY_ALIAS
、YOUR_RELEASE_KEY_PATH
とあるようにアプリ署名用のkeystore(アプリ署名鍵)が必要です。
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
App Signing有効化後にリリースkey hashを作成するにはどうするか?
前述したようにリリースkey hashを作成するには、アプリ署名鍵が必要です。しかし、App Signingを有効にした状態で新規アプリを作成するとアプリ署名鍵はGoogle側で自動的に作られ、その鍵自体をダウンロードすることはできなくなります。
手元にアプリ署名鍵が無い状態でどうリリースkey hashを作成するか?
Google Play Consoleのメニューに「アプリの署名」という項目があります。ここからDER形式でエンコードされたアプリ署名鍵のSHA-1ハッシュが取得できるので、このハッシュからkey hashを作成します。
以下のコマンドを実行するとkey hashが作成されます。xxdを-r -p
オプションで実行し、行番号や特定の書式が省かれた16 進ダンプ(Google Play Consoleから取得できるSHA-1ハッシュ)からバイナリ形式に変換し、それをパイプでopensslに渡しています。
echo YOUR_SHA1_HASH | xxd -r -p | openssl base64
作成したkey hashをfacebook for developersのアプリ設定から登録すれば完了です。
参考
Androidエミュレータでコピー&ペーストしたい
potatotipsで発表してきました
先日potatotips #45で「Swaggerで定義したAPI仕様から Retrofitで使用するinterfaceを自動生成してみる」というタイトルで発表してきました。リクルートマーケティングパートナーズさん、お邪魔させて頂きありがとうございました。
資料はこちらです。
続きを読むBazelのrules_kotlinについてのメモ
Reproでプッシュ通知を受け取る際にSmall Iconが表示されない場合の対処方法
概要
Reproでプッシュ通知を受け取る際に、NotificationCompat.Builder
のsetSmallIcon
でiconのリソースを指定していても通知に表示されない場合の対処方法について。
対処方法
AndroidManifestのapplicationタグに以下のようなmeta-dataを追加します。
<meta-data android:name="io.repro.android.PushNotification.SmallIcon" android:resource="@drawable/YOUR_ICON_ID"> </meta-data>
これで表示されるはずです。
ドキュメントはちゃんと読もう
30分ぐらい悩んでたんですが、Reproのドキュメントを読んだらあっさり解決しました。ドキュメントはちゃんと読もう・・。
参考
既存のURL文字列にUri.Builderでクエリを追加する方法
既存のURLにUri.Builderを使ってクエリを追加する場合こうする。parse後にbuildUpon()
で繋ぐのがミソ。
val url = Uri.parse("既存のURL") .buildUpon() .appendQueryParameter("key", "value")