ブログ・コラム

Android

2019.10.30

【Android】署名付きapk作成時の注意点

いざapkファイルを作って動作確認をしようと思ったら、インストールできない、アプリが起動しないという経験がないでしょうか。

そんな事例を紹介します。

端末により、署名付きapkがインストール出来ない

端末により、署名付きapkがインストール出来ないケースがあります。
(右図のように「アプリはインストールされていません」とエラーメッセージがでました。)

私が確認したのは下記条件です。

端末 Priori 3 LTE
(OS android5.1)
開発環境 Android Studio 3.1.4

Android Studio2.3から、署名付きAPKを作成する際に、Signature Versionsを選ぶ項目(V1, V2)が追加されました。

作成の際にこの項目にチェックが無い場合、端末のOSバージョンによってインストールできなくなります。

私の場合は、V1を選択をしていなかった(V2のみ選択)ためにインストールできない状況になりました。

後述しますが、これによりAndroid7.0未満の端末(今回は5.1)で、apkがインストール出来ない、という事象が発生しました。

改めて、V1, V2両方の署名にチェックを入れたところ、無事7.0以前の端末でもインストール出来ました。
(基本的には、両方チェックが推奨されています。)

V1は従来の署名方法で、V2はAndroid7.0以降の「インストール時間高速化」や「セキュリティ面が強化」された署名方法のようです。

挙動としては、Android7.0以降では「V2」がインストール時に検証され、7.0以前では「V1」が検証(V2は無視)されます。

今回は、この「V1」を選択していなかった為、検証すべき署名が見当たらなかった(OS5.1ではインストール出来なかった)ということになります。

※ ちなみに、Android Studio2.2以前では、デフォルトでV1とV2両方で署名されていたようです。
(2.3からはそれが選択できる(必要に応じてV1またはV2を外せる)ようになった。)

GoogleMapが表示されない

Android Studioでデバックしている時は地図が表示されていたのに、署名付きのapkを作ってインストールすると地図が表示されなくなる経験をしました。

API(Maps SDK for Android)の設定に於いて、「使用アプリを制限する」為にSHA1の登録が必要となります。

このSHA1には「デバッグ用」と「リリース用」があるのですが、「デバッグ用」のみ設定しているとapkを作ったときに地図が表示されなくなります。

以下コマンドでリリース用のSHA1が取得でき、apkを作ってインストールしても地図が表示されるようになります。

  • keytool -list -v -keystore your_keystore_name -alias your_alias_name

ちなみにデバッグ用のSHA1取得は、以下コマンドとなります。

  • keytool -v -list -keystore ~/.android/debug.keystore

参考サイトに記載されているSHA1の取得方法のコマンドは、デバッグ用の取得方法が多くあり、これを鵜呑みにコピペ実行して「設定は全て完了した」と思ってしまいました。

まとめ

今回の二つとも、分かってしまえば本当に何てことない単純なミスなのですが、最初の段階で見落としてしまうと、後でその原因を追求するのに、意外と時間が掛かってしまったりします。

みなさん、気をつけましょう!

※この記事に対するいかなる損害に対して、当方は一切の責任を負いかねます。
自己責任でお願いします。

カレンダー

«12月»
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31     

ブログ内検索

アーカイブ