8

OEMがシステムイメージとともにインストールするシステムアプリを持っていますが、私が署名しています。更新されたapkをマーケットにアップロードした場合、マーケットアプリはこのアップデートをサイレントに自動的にインストールしますか?

私のシステムアプリが私の代わりにプラットフォーム署名で署名されている場合、これは更新もプラットフォーム署名で署名されなければならないことを意味します、正しいですか?プラットフォームで署名されたapkを市場から更新できますか?

4

2 に答える 2

6

まず、すべての種類のアプリの違いを明確にしましょう。

システムアプリは、/system/appフォルダーにあるアプリです。これらのアプリケーションにはフラグApplicationInfo.FLAG_SYSTEMが設定されています。通常のデバイスでは、パーティション/systemは読み取り専用アクセス用にマウントされます。したがって、システム アプリケーションは読み取り専用の場所にあるため、更新できません。これらのアプリケーションは、OTA 更新の一部としてのみ更新できます。

通常のアプリは、読み書き可能な /data パーティションにあります。したがって、これらのアプリケーションはシステムによって更新できます。

次に、署名について話しましょう。一部の Android コンポーネントは、署名タイプのアクセス許可で保護されています。つまり、このタイプのアクセス許可で保護されたコンポーネントにアクセスするには、アプリケーションが保護されたコンポーネントと同じ証明書で署名されている必要があります。これは、Android システムだけでなく、Android アプリケーションにも当てはまります。つまり、アプリケーションで、署名許可で保護されたコンポーネントを使用できるため、同じ署名を持つアプリケーションのみがこのコンポーネントにアクセスできます。

あなたの質問に答えるために必要な 3 つ目のテーゼは、Android では、パッケージ名が同じで署名が異なるパッケージのインストールが禁止されているということです。

したがって、

OEM がシステム イメージと共にインストールするシステム アプリがありますが、私が署名しています。アップデートされた apk をマーケットにアップロードすると、マーケット アプリはこのアップデートを自動的にサイレント インストールしますか?

システム アプリが私の代わりにプラットフォーム署名で署名されている場合、これは、すべての更新プログラムもプラットフォーム署名で署名する必要があることを意味しますよね? プラットフォームで署名された apk を市場から更新できますか?

答えはノーだ。/system/app にあるアプリは、プラットフォームのものとは異なる証明書で署名できますが、これらのアプリケーションの更新はシステム アップデートでのみ可能です。

問題を解決するには、アプリケーションのパッケージ名を変更し、(アプリケーションが保護された Android コンポーネントにアクセスする必要がない場合) またはプラットフォーム (アプリケーションが保護されたコンポーネントにアクセスする必要があり、アクセスできる場合) で署名します。この署名) を作成し、このアプリケーションを市場に投入します。次に、市場を通じてアプリケーションの更新を受け取ります。

于 2013-02-08T08:45:02.757 に答える