HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0127
窓月ららGooglePlay(Playストア)へのアプリ登録の際の署名についての情報スレ21解決


窓月らら

リンク

2022/1/27(Thu) 13:49:17|NO.95203

表題のとおりですが、
プログラミングとは別でややこしい問題なので
先人方の経験と知恵をお借りしたいと思い立てます。
既に実践されている方の情報などお待ちしています♪
aabが必須になり、やっとHSP3でもベータ版対応がされたタイミングですので、いろいろわからない事が多いです。

お使いのJDKのバージョンが関係するか等
アプリを新規登録する際の問題等
アプリを更新する際の問題等
共有できればと思います。



この記事に返信する


窓月らら

リンク

2022/1/27(Thu) 19:20:36|NO.95211

とりあえず、署名の確認用バッチを置いておきます。
apk aab どちらでも使えます。
環境変数 path にJDKのbinフォルダへのパスを通しておく必要があります。
以下のコードをメモ帳などに貼り付けて、署名確認.bat 等の名前で保存してから、このバッチにapkかaabをドラッグ&ドロップすると署名を確認できます。

@echo off echo 次のファイルの署名を検証します: echo %1 jarsigner -verify -verbose -certs %1 pause



窓月らら

リンク

2022/1/28(Fri) 00:53:35|NO.95216

とりあえず、私がここまで試した範囲でメモを残します。
従来のビルドシステム(dh含む)を使い、2021年8月までにPlayストアで公開しているアプリをアップデートする場合です。

ターゲットAPI29までは署名スキームv1で可。
ターゲットAPI30以上にすると以下がでます。署名スキームv2必須。
(これは android:targetSdkVersion="31" としてv1のみで署名した場合)
>アップロードした APK の署名が無効です(署名の詳細)。apksigner のエラー: ERROR: MIN_SIG_SCHEME_FOR_TARGET_SDK_NOT_MET: Target SDK version 31 requires a minimum of signature scheme v2; the APK is not signed with this or a later signature scheme

android:targetSdkVersion="31" とした場合は以下のエラーが出て登録できませんでした。
こちらは最新のHSP3.7b1では対応されてるのでしょうか?
>アップロードされた APK または Android App Bundle には、インテント フィルタを使用するアクティビティ、アクティビティ エイリアス、サービス、またはブロードキャスト レシーバが含まれていますが、'android:exported' プロパティ セットは使用されていません。このファイルは Android 12 以降にはインストールできません。詳細: developer.android.com/about/versions/12/behavior-changes-12#exported

<uses-sdk android:minSdkVersion="14"
android:targetSdkVersion="30" />
とした場合は、dh 1.77のリリースで署名をしてapkの状態でPlayストアに登録できました。いろいろ注意はでますが・・・

というわけで、アプリの更新はひとまずapkでも可能な様子ですが、targetSdkVersion="31" からはまた別の問題がありそうです。
ややこしいなー…



窓月らら

リンク

2022/1/28(Fri) 01:43:30|NO.95218

上記のインテントフィルタうんたらは、どうやら

android:exported="true"

を AndroidManifest.xml に記述するだけみたいですねぇ?
HSP3.7b1にはしっかり書いてありました! なるほど。
ではこれを追加するだけで、apkのまま更新いけそうですね。

当面は新規公開はaabで、従来アプリはapkでもいいのかもしれません。



mkt

リンク

2022/1/28(Fri) 23:30:20|NO.95226

窓月らら様

スレッドを立てていただきありがとうございました。
仕事でなかなか確認できなかったのですが、いろいろ取り組んでいただきいつも感謝しております。
>というわけで、アプリの更新はひとまずapkでも可能な様子ですが、targetSdkVersion="31" からはまた別の問題がありそうです。
ややこしいなー…
Google より、11月以降はaabでのみ更新可というアナウンスがあり、そもそもapkでの更新を試していませんでした。
こちらのkeystoreはJDK8で作成したものです。同じくaabの作成はされません。
新しいdhで作成したapkはdebugのみです。署名されたapkではないため、アプロードしようとすると次のようなエラーが出ます。

>デバッグ可能な APK または Android App Bundle をアップロードしました。セキュリティ上の理由により、Google Play に公開するにはデバッグを無効にする必要があります。詳しくは、デバッグ可能な APK または Android App Bundle についての説明をご覧ください。
アップロード証明書で署名されていない APK をアップロードしました。使用する証明書は同じである必要があります。アップロード証明書のフィンガープリントは…

新規のものはむしろ大丈夫な気がします。ほかのJAVA環境ではjdkが変わっても以前のkeystoreを継承できるということでしょうか。だとしたらHSPでも方法はありそうです。
そうでないなら、もう少し情報がありそうなものですが…難しいです。



窓月らら

リンク

2022/1/29(Sat) 04:51:50|NO.95227

>mktさん

Javaのバージョンによって署名が無効になるようなことは無いと思います、あったら困ります・・・。署名に使ったkeystoreは保存されてるのですよね?(上書き更新をしないという意味)

私も昨年11月以降はaabでないと更新もできないという認識だったのですが、誤報だったのか方針が変わったのかそもそも勘違いだったのかわかりませんが、従来のとおりapkに署名して更新できます(確定事項)。
昨日試したのですが、審査も通過して更新が配信されております。

GooglePlayコンソールにて
アプリを選択→製品版→新しいリリースを作成 と進みます。

すると
>ここに、アップロードする App Bundle をドロップしてください
というメッセージがありますが、実際はapkもドロップできます。
aabにしろだのいろいろメッセージはでますが無視で構いませんw

いちどaabを使用するに切り替えると元に戻せないそうなので注意が必要です。
よって、私のところでは従来のアプリはapkで更新することに決めました。しかし最新のHSP3.7b1はapkのリリース署名に対応していないので、おにたまさんに対応を依頼してみるか、独自で署名用のbatでも書いて対応するか、署名だけdh1.77を利用するなどの工夫が必要かと思われます。

いずれにしろ、署名問題については解決策が見えました。
少しずつやっていきましょう♪



窓月らら

リンク

2022/1/29(Sat) 08:17:07|NO.95230

イレギュラーな情報ですが、当方は開発環境の都合でAPI-21を使用しております。で、問題になるのがv2署名なのですが、これは

\android-sdk-windows\build-tools\29.x.x

などから、apksigner.bat と lib\apksigner.jar を build-tools 内にあるお使いのAPIバージョンのフォルダにコピーすればdh1.77で署名できるようになります♪
この方法でapkを署名してPlayストアに登録できてます。



窓月らら

リンク

2022/1/29(Sat) 17:51:44|NO.95238

apkの状態でターゲットAPI-31(Android 12)の登録ができることを確認しました。
やはり AndroidManifest.xml に android:exported="true" を追記するだけでした。
これで今までどおり更新いけますよー♪ ひとまず解決とします。

引き続き、有益な情報がございましたらお待ちしています。



mkt

リンク

2022/1/29(Sat) 18:13:35|NO.95239

>窓月ららさま
いつも親身になっていただきありがとうございます。
こちらも更新試しつつ、aabのアップロードにも挑戦し、こちらで報告します。
今後もよろしくお願いいたします。



mkt

リンク

2022/1/29(Sat) 21:38:30|NO.95241

>窓月ららさま
一応ご報告です。
こちらでは、hspd3dh1.77でもapi31に対応できませんでした涙
これは当方の技術の問題で、気持ちを切り替えて新規アップロードに精を出そうと
思います。
2点、自分なりにやっては見ましたがよくわからなかった部分だけ、お時間あるときにご教示いただけたら幸いです。以下

>\android-sdk-windows\build-tools\29.x.x

などから、apksigner.bat と lib\apksigner.jar を build-tools 内にあるお使いのAPIバージョンのフォルダにコピーすればdh1.77で署名できるようになります♪
この方法でapkを署名してPlayストアに登録できてます。

「\android-sdk-windows\build-tools\29.x.x」はありますが、「build-tools 内にあるお使いのAPIバージョンのフォルダ」が見当たりません。これは通常どのようなパスになっているものでしょうか。

>android:exported="true"

を AndroidManifest.xml に記述するだけみたいですねぇ?

私は、これを次のように記述しましたが、問題ないでしょうか。

---------------
<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="31" android:exported="true" />--



窓月らら

リンク

2022/1/29(Sat) 21:59:40|NO.95242

>mktさん

まず、dh1.77でプロジェクトを作成する場合は、デフォルトでは"android-29"になっているはずです。ですから、\build-tools\29.x.x があれば問題ありません。プロジェクトはAPI-29になっていますよね?

私の場合はあえて"android-21"にしていますが、29で問題ないならそちらをお使いください。この場合は署名に必要なファイルは揃っていますから、apksignerについては何もする必要はありません。

android:exported="true" は以下の場所に追記します。

<activity android:name="tv.hsp.HspActivity" android:exported="true"

HSP3ヘルプの「HSP3Dish android(NDK)版プログラミングガイド」も今一度お読みください。
あと、念のためJDKにはパスを通しておいたほうが無難です。これはWindowsの環境変数pathのことです。



窓月らら

リンク

2022/1/31(Mon) 10:35:25|NO.95258

keystoreの中身を確認するバッチです。

@echo off echo 次のファイルの署名を検証します: echo %1 keytool -list -v -keystore %1 pause
これを key_check.bat などの名前で保存して、ここにkeystore(以下鍵と書きます)をドラッグ&ドロップしてパスワードを入力で確認できます。

すると、私のいままで使用している鍵は以下になってます。これは作成したタイミングの開発環境によって違うと思われます。私のは2015年とかで古いので・・・

署名アルゴリズム名: SHA1withDSA (弱)
サブジェクト公開キー・アルゴリズム: 1024ビットDSAキー(弱)
バージョン: 3

最新HSP3.7b1のdhで作成した鍵は以下です。aabはRSA2048bit以上が必要なので、古い鍵だと署名できないのです(ですがこれは問題になりません)。

署名アルゴリズム名: SHA256withRSA
サブジェクト公開キー・アルゴリズム: 2048ビットRSAキー
バージョン: 3



きせん

リンク

2022/1/31(Mon) 11:13:06|NO.95259

私の鍵も古い気がしますが、パッチでみてみます。



窓月らら

リンク

2022/1/31(Mon) 11:15:26|NO.95260

アプリの更新をapkで行った際のPlayコンソールの画面キャプを置いておきます。
https://twitter.com/miecat_can/status/1487346628537171968



きせん

リンク

2022/1/31(Mon) 11:36:19|NO.95261

>窓月ららさん

ためしてみました。
署名アルゴリズム名: SHA256withRSA
サブジェクト公開キー・アルゴリズム: 2048ビットRSAキー
バージョン: 3

作成日は2017年12月ですね。

なりすまし等があるとは思いませんが、
鍵を新しくする方向で考えたほうがよいかもしれません。



窓月らら

リンク

2022/1/31(Mon) 11:56:56|NO.95262

鍵を新しくするとアプリの更新とインストールができません。また、現在では署名に加えてPlayストアから配信された証明が付与されてないとOS側で警告もでるので、よって従来アプリはこのままの予定です。

それとdhで作成した鍵の有効期限は確か27年(10000日)なので、新しく作るkeystoreは50年以上になっているか確認した方がいいですね。
後のリリースでは気づいてdhを改造して50年にした鍵に換えました。



窓月らら

リンク

2022/1/31(Mon) 12:54:25|NO.95264

https://developer.android.com/studio/publish/app-signing?hl=ja

こちらを読むと鍵のアップデートはできそうですが、まあ、、、いっか♪
ややこしいなー。



窓月らら

リンク

2022/2/1(Tue) 12:26:43|NO.95272

上記をよく読めば書いてありますが、署名の方法がいくつかあることがわかります。各自の管理ポリシーで選択すればいいのですが、リリース前に理解しておく必要はありますね。

まず新しい方法では

・アプリ署名鍵
・アップロード鍵

の二種類があるわけです。今までapkに署名していたのは「アプリ署名鍵」のほうで、配信にもそのまま適用されておりました。ですが今後はGoogleにapkの生成と署名を任せることもできるので、こちらを利用する場合は、アプリ署名鍵をGoogleが作成するか、開発者(あなた)が用意した鍵を使用するかが選択できます。デフォではGoogleが用意するオプションになっているようなので注意が必要です。

私はまだaabアップは試してないのですが、やはりアプリ署名鍵も自分で用意したいなって思ってます。



@

リンク

2022/2/1(Tue) 12:36:12|NO.95273

ちょっと気になったのですが
hspでアンドロイドプログラムをつくる意義ってあるのでしょうか?
掲示板の様々な書き込みをみてるとトラブル多い印象です。
アンドロイド推奨の開発環境でつくるほうが早いことないですか?



窓月らら

リンク

2022/2/1(Tue) 13:06:24|NO.95274

それはありますねぇw (うちは慣れてる環境だからが最大の理由ですかね。)
ですが、そう思う方は他の開発環境も使ってみてそちらが良さそうならそちらを利用すればいいと思うのです。
HSP3Dishについてはこれでもだいぶ安定してきたと感じます。うちが始めた2013年くらいは正直品質を満たさず、テストしただけで保留しておりました。そしておにたまさんに問題点などをお伝えして改良され、ここまできています。

また、署名問題についてはHSPだからは関係なく、他の言語で作っても全く同じ問題にぶち当たります。



きせん

リンク

2022/2/1(Tue) 21:56:31|NO.95286

現在のaabアップロードも、署名したaabでアップできます。
アップロード鍵になるのかな?と思いましたが大丈夫でした。

アンドロイドのアプリつくるにはいろいろ方法がありますけど、
おにたまさんのベーシック形式がなれているので、
プレイコンソールにあげる部分でだけ大変なんですよね。
それでも大変さの大部分はおにたまさんが、解決してくれている訳ですけど。

アンドロイドスタジオで署名するとしても、
ららさんの鍵では解決しないですしね



窓月らら

リンク

2022/2/2(Wed) 13:07:48|NO.95291

https://developer.android.com/studio/publish/app-signing?hl=ja
こちらから引用しつつおさらいです。

>オプトインするときに Google がアプリ署名鍵を生成するように選択した場合、リリースするアプリへの署名に使用する鍵はアップロード鍵として指定されます。
apk署名鍵をGoogleに任せるを選択した場合は、aabの署名はアップロード鍵とみなされる。実際に配信されるapkの鍵にはならない。

>新規または既存のアプリをオプトインするときに Google にアプリ署名鍵を提供する場合は、オプトイン時に新しいアップロード鍵を生成することも、オプトイン後にアップロード鍵を生成することもできます。これにより、セキュリティを強化できます。
これはいずれの鍵も自分で用意する場合。

>新しいアップロード鍵を生成しない場合は、自分専用のアプリ署名鍵をアップロード鍵として各リリースへの署名に引き続き使用できます。
これは従来通り、アプリ署名鍵=アップロード鍵の場合。Googleに鍵の管理を任せない場合は引き続き利用できます。



ONION software Copyright 1997-2023(c) All rights reserved.