Android Studio 2.1更新後、一部端末でストアからのインストールが失敗

751 views
Skip to first unread message

TAMA.

unread,
May 22, 2016, 10:05:48 PM5/22/16
to 日本Androidの会
はじめまして、趣味でウィジェットやゲームを作っているTAMAと申します。
開発環境をAndroid Studio 2.1へ更新したところGooglePlayからのインストールが失敗する端末があり、土日で原因を探ったのですが謎が深まるばかりで月曜の朝を迎えてしまいました。
開発中にエラーや警告が無く特定の端末で発生する非常に怖い不具合なので原因を知りたいのですが、この状況について情報をお持ちでないでしょうか?

発生条件
(1) AndroidStudio2.1で署名付きビルド
(2) 数年前に作成したkeystore (DSA)を使用
(3) minSdkVersion 19 (minSdkVersion 7では問題が発生しない)
(4) Android 4.4.2の端末

GooglePlayからのインストール時に以下のメッセージが表示されます
------------
アプリをインストールできない
「<アプリ名>」 をインストールできません。 もう一度お試しいただいても問題が発生する場合は、トラブルシューティングをご覧ください (エラーコード:-103)。
------------

AndroidStudioから署名付きのインストールを行うと以下のログが残ります
------------
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Installation failed since the APK was either not signed, or signed incorrectly.
If this is a Gradle-based project, then make sure the signing configuration is specified in the Gradle build script.
Error while Installing APK
------------

テスト結果
[OK] AndroidStudio1.5 / API19 / RSA
[OK] AndroidStudio1.5 / API19 / DSA
[OK] AndroidStudio2.1 / API7 / RSA
[OK] AndroidStudio2.1 / API7 / DSA
[OK] AndroidStudio2.1 / API19 / RSA
[NG] AndroidStudio2.1 / API19 / DSA
[OK] AndroidStudio2.1 / API19 / DSA jarsignerにて手動署名
・不具合が発生する端末 F-01F(4.4.2), SO-02F(4.4.2)
・問題なかった端末 Nexus 7 2013(6.0.1),  Nexus 9(6.0.1), SO-02G(5.0.2)
・Android Studio 1.5.1 (gradle:1.3.0/JDK1.7.0_79),  Android Studio 2.1(gradle:2.1.0/jdk1.8.0_91)
・新規にEmptyActivityで作成したプロジェクトで検証

備考
以下の手順で署名しなおすと正常にインストールできました
zip -d test.apk META-INF/*
jarsigner -keystore test.keystore -storepass <passwd> -signedjar test2.apk test.apk test
zipalign -v 4 test2.apk test3.apk

Makoto Yamazaki

unread,
May 23, 2016, 2:49:48 AM5/23/16
to android-g...@googlegroups.com
zakiです。

署名を行うのはAndroid StudioというよりもGradleなので、
それぞれのビルドの環境でAndroid Gradle plugin、build-tools、
使用しているJDK、Android SDKでインストールしている
 platform-toolsのバージョン等に違いはないでしょうか

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
https://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
YAMAZAKI Makoto

TAMA.

unread,
May 23, 2016, 4:09:13 AM5/23/16
to 日本Androidの会
ご返信有難うございます。

構成の問題の場合、特定の構成ではなくすべての端末で問題が発生すると思うのですが、インストールが失敗する条件でも他の端末では正常にインストールできて動作も正常なところが謎でして。
また、minSdkVersion だけを書き換えただけでこの症状の有無が変わります。keystoreだけを変えただけてビルドしただけでも同様に変わります。
そもそもminSdkVersionの変更でなぜ署名に差異がでるのだろうかと頭を抱えています。

"Android  エラーコード 103"で検索してみると昨年の終わりごろから同様の症状が大手さんを含めいくつかのアプリで発生しているようなのです。(その情報をもとに再署名を試して回避方法を見つけました)
「gradle:2.*かJDK7,8にて変更がありDSAの古いkeystoreを使用した場合にAndroid 4.*環境で署名の検証が失敗してしまう」っといった感じなのですが、keystoreはRSAがデフォルトになったので変えましょうという訳にもいかないですし。

TAMA.

unread,
May 24, 2016, 4:56:22 AM5/24/16
to 日本Androidの会
Android4.4端末が無くてもGooglePlayのリリース前レポートで確認できることが分かりましたので、再現手順をまとめてみました


プロジェクトの作成
[File>New>New Project..]から新規プロジェクトの作成を開始し、Minimum SDK [API 19]、[Empty Activity] を選択

キーストアの作成
keytool -genkey -v -keyalg DSA -keystore DSA.keystore -alias test -validity 10000

署名付きパッケージの作成
[Build>Genarate Signed APK]にて作成したDSA.keystoreを用いて署名


作成したapkをdropbox経由で4.4.2端末へインストールを試みると、インストール途中で"アプリはインストールされていません"表示になります。

GooglePlayにてリリース前レポートを確認すると、Android4.4が失敗していることが確認できます。


備考
Android Studio 2.1 (Windows) Android SDK Tools 25.1.6 JDK1.8.0_91 

Hash Vin

unread,
May 30, 2016, 1:09:08 AM5/30/16
to 日本Androidの会
Hi everyone, i just wanna introduce: 
Free Wifi 3G,4G from your phone :D
Let's get it and feeling, thanks for your support :)

Vào 09:05:48 UTC+7 Thứ Hai, ngày 23 tháng 5 năm 2016, TAMA. đã viết:
Reply all
Reply to author
Forward
0 new messages