web-dev-qa-db-ja.com

同じキーストアファイルを使用して2つの異なるアプリケーションに署名できますか?

新しいアプリケーションをアップロードする必要がありますが、デザインが少し異なるだけです。昨日、アプリケーションに署名するためのキーストアファイルを生成しました。同じものを使用できますか?

69
Raluca Lucaci

そのkeystoreを任意の数のアプリケーションに使用できます。

新しいキーストアを生成する必要はありません。

77
Chirag

公式文書は次のことを示しています。

一般に、すべての開発者に推奨される戦略は、アプリケーションの予想される寿命を通して、同じ証明書ですべてのアプリケーションに署名することです。あなたがそうすべきいくつかの理由があります...

https://developer.Android.com/studio/publish/app-signing.html#considerations

はい、すべてのアプリケーションに同じ証明書で署名してみてください。

37
ol_v_er

これまでのところ、コンセンサスの答えに反論します。

ほとんどのアプリ作成者にとって、ほとんどの場合、アプリ間で同じキーストア/証明書/パスワードを共有することで問題なく動作することに同意します。重要なことは、「 アプリケーションの予想される寿命を通して同じ証明書 」を使用して、アプリ自体をアップグレードできるようにすることです。

しかし、個別のアプリまたはアプリのファミリ用に個別のキーストアを用意する非常に良い理由の1つを考えることができます。オリジナルへのアップグレードとして公開するために他の人にアプリを販売したいと思う場合、それを行うためにあなたとあなただけのキーストアとパスワードを共有する必要があります。おそらく大きな問題ではなく、あなたへの少しの心配と、おそらく、十分なバイヤーへのデューデリジェンスの問題です。

また、@ ol_v_erと同じ方法でドキュメントの同じ行を読むことはありません。私は現在の行だと思う:

アプリケーションの予想される寿命の間、同じ証明書ですべてのアプリに署名する必要があります。

(現在のバージョンにコンマがないことに注意してください)は、「ライフタイム」の推奨事項がすべてのアプリに適用されることを強調しているだけで、実際にはすべてのアプリに同じ証明書を使用するように指示するものではありません。

36
Anne Gunn

ここにいくつかの説明を加えたいと思います。なぜなら、この質問と提供された答えは私にとって混乱につながるからです。キーストアが実際に何であるかを理解することが重要です。

キーストアは、Android apks。に署名するために使用される公開/秘密キーのペアを安全に保存するための単なる手段です。したがって、はい、同じ keystoreは複数のapkに問題なく署名します。同じエイリアス(各エイリアスは証明書)を使用して複数のapkに署名することもできますが、動作します。ただし、セキュリティに影響します。単一のエイリアスが侵害された場合、すべてのアプリが侵害されます。

ただし、いつかアプリの権利を販売する場合は、すべてのアプリに同じエイリアスを使用することはお勧めできません。ただし、apkごとに異なるエイリアスを使用する場合、同じキーストアを使用することは必ずしも悪い選択肢ではない可能性があります。あるキーストアから別のキーストアに証明書を移動できる方法があると確信しているため、その証明書のみに必要なキーを購入者に安全に提供できます。

非常に明確にするために、キーストアはまさにそれ、キーの記憶媒体です。 apkに署名するプロセスでは実際の役割を果たしませんが、apkに署名するために実際に使用されるキーを保存するだけです。

参照:

キーストア、証明書、エイリアスを理解する

https://www.digitalocean.com/community/tutorials/Java-keytool-essentials-working-with-Java-keystores

15
Anthony Stivers

もちろん!同じキーストアファイルを何度でも使用できます。開発するすべてのアプリケーションに同じキーストアファイルを使用することを常にお勧めします。これは、アプリケーションを更新または変更する場合に役立ちます。その時点で、同じキーでアプリケーションに署名する必要があります。

4
Rohit

同じ証明書(キーストア)を使用してすべてのアプリに署名します。これは、気が変わってアプリでデータを共有したい場合に有利です。

ご存知かもしれませんが、Androidは各アプリをUIDで識別します。すべてのアプリが同じ証明書で署名されている場合は、同じユーザーIDをさらに割り当てるためにAndroid複数のアプリを使用して、1つのプロセスで実行し、データを共有します。

From Android doc Android:sharedUserId

Android:sharedUserId

他のアプリケーションと共有されるLinuxユーザーIDの名前。デフォルトでは、Androidは各アプリケーションに独自の一意のユーザーIDを割り当てます。ただし、この属性が2つ以上のアプリケーションに対して同じ値に設定されている場合、それらはすべて同じIDを共有します。同じ証明書で署名されている同じユーザーIDを持つアプリケーションは、お互いのデータにアクセスでき、必要に応じて同じプロセスで実行できます

1
sujith