パッケージ署名を相互にチェックして、互換性がないかどうかを判断しています(異なるキーストアに対してコンパイルされています)。ほとんどの場合、単一のエントリを含むコレクションであることに気付きPackageInfo.signatures
ました。これは私にとって理にかなっています。デバッグ キーストアまたは製品キーストアのいずれかを使用してアプリをビルドし、それによってパッケージの署名が決定されます (この時点での apk 署名プロセスの単純な理解です)。この情報を (フラグを渡すことによってPackageManager.GET_SIGNATURES
) 特に要求しない場合、これが null になることはわかっていますが、複数ある場合についてはよくわかりません。
いくつかのデバッグ コードを作成し、それを個人の Android フォンで実行しました。私の電話にインストールされた 300 以上のパッケージのうち、私のサービス プロバイダー (com.verizon.* 名前空間) からのものと思われるいくつかのパッケージを除いて、すべてが 1 つの署名を持っていました。
私のユース ケース (パッケージ管理) では、アプリ パッケージが単一の署名を持つことを考慮しても問題ないと思いますが、エッジ ケースのバグを引き起こす可能性のあるものを見逃していないことを確認したいと考えています。