2013-02-07 20 views
8

私はOEMがシステムイメージと共にインストールするが、私によって署名されたシステムアプリを持っています。更新されたapkを市場にアップロードすると、マーケットアプリは自動的にこのアップデートを自動的にインストールしますか?プラットフォーム署名あり/なしのAndroidシステムアプリのアップデート

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

答えて

6

最初に、すべてのタイプのアプリの違いを明確にします。

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

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

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

私たちがあなたの質問に答えるために必要な3番目の論文は、同じパッケージ名で署名が異なるパッケージのインストールをAndroidが禁止するというものです。

したがって、

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

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

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

あなたの問題を解決するには、アプリケーションのパッケージ名を変更し、(アプリケーションが保護されたAndroidコンポーネントにアクセスする必要がない場合)またはプラットフォーム(アプリケーションが保護されたコンポーネントにアクセスする必要がある場合、あなたはこの署名にアクセスできます)、このアプリケーションを市場に投入します。その後、市場を通じたアプリケーションのアップデートが届きます。システム/ AP /中

+2

他の回答では、システムアプリはたとえば、http更新することができることを示している:// stackoverflowの.com/questions/7825045/can-a-system-app-be-updated。更新されたapkは/ data/appにインストールされ、代わりにその更新版が使用されます。ユーザーはこの更新されたバージョンをアンインストールする可能性がありますが、/ system/appの元のバージョンはアンインストールできません。 –

+0

私はこの可能性についてはわかりません。しかし、アプリケーションは/ data/appフォルダにインストールされますが、これは私の答えと矛盾しません。/systemフォルダーは、システムアップデートでのみ更新できます。いずれにせよ、この質問の明確化のためにありがとう! – Yury

+2

Google Appsがシステムのアプリフォルダにある場合でも、どのように更新されますか – amalBit

0

signaturは1と一致しない限り、システムがアップデートとしてで/データ/アプリのapkを処理しません

関連する問題