最初に、すべてのタイプのアプリの違いを明確にします。
システムアプリは/system/app
フォルダにあります。これらのアプリケーションにはフラグApplicationInfo.FLAG_SYSTEM
が設定されています。通常のデバイスでは、パーティション/system
が読み取り専用アクセス用にマウントされています。したがって、システムアプリケーションは読み取り専用の場所に配置されているため、更新できません。これらのアプリケーションは、OTAアップデートの一部としてのみ更新できます。
通常のアプリケーションは、読み書き可能な/ dataパーティションにあります。したがって、これらのアプリケーションはシステムによって更新することができます。
今すぐ署名について話しましょう。一部のAndroidコンポーネントは署名タイプのアクセス許可で保護されています。つまり、このタイプのアクセス許可で保護されたコンポーネントにアクセスするには、保護されたコンポーネントと同じ証明書でアプリケーションを署名する必要があります。これは、Androidシステムだけでなく、Androidアプリケーション(つまり、アプリケーションでは署名パーミッションで保護されたコンポーネントを持つことができるため、同じ署名を持つアプリケーションだけがこのコンポーネントにアクセスできます)にも当てはまります。
私たちがあなたの質問に答えるために必要な3番目の論文は、同じパッケージ名で署名が異なるパッケージのインストールをAndroidが禁止するというものです。
したがって、
私は、OEMは、システムイメージをインストールするシステムアプリを持っていますが、 は私が署名されています。更新されたapkを市場にアップロードすると、 市場アプリは自動的にこのアップデートを自動的にインストールしますか?
私のシステムアプリが代わりに というプラットフォームの署名で署名されている場合、プラットフォームの署名 で署名されている必要があります。プラットフォームに署名したapkを 市場から更新することはできますか?
答えはありません。/system/appにあるアプリケーションは、プラットフォームとは異なる証明書で署名できますが、これらのアプリケーションの更新はシステムアップデートでのみ可能です。
あなたの問題を解決するには、アプリケーションのパッケージ名を変更し、(アプリケーションが保護されたAndroidコンポーネントにアクセスする必要がない場合)またはプラットフォーム(アプリケーションが保護されたコンポーネントにアクセスする必要がある場合、あなたはこの署名にアクセスできます)、このアプリケーションを市場に投入します。その後、市場を通じたアプリケーションのアップデートが届きます。システム/ AP /中
他の回答では、システムアプリはたとえば、http更新することができることを示している:// stackoverflowの.com/questions/7825045/can-a-system-app-be-updated。更新されたapkは/ data/appにインストールされ、代わりにその更新版が使用されます。ユーザーはこの更新されたバージョンをアンインストールする可能性がありますが、/ system/appの元のバージョンはアンインストールできません。 –
私はこの可能性についてはわかりません。しかし、アプリケーションは/ data/appフォルダにインストールされますが、これは私の答えと矛盾しません。/systemフォルダーは、システムアップデートでのみ更新できます。いずれにせよ、この質問の明確化のためにありがとう! – Yury
Google Appsがシステムのアプリフォルダにある場合でも、どのように更新されますか – amalBit