9

変更したapkファイルをNookSimpleTouchにインストールしようとしています。Reader.apkプログラムを変更して再コンパイルし、自分のキーで署名しました。

署名キーが異なる場合、現在のアプリの上にアプリをインストールすることはできません。ただし、INSTALL_FAILED_UPDATE_INCOMPATIBLE元のReader.apkアプリを完全にアンインストールした後でも、エラーが発生します。

packages.xmlファイルを確認した後、古いReader.apkアプリのエントリを削除しました。そして、私はまだこのエラーを受け取っています。アプリが完全にアンインストールされ、変更したバージョンをインストールできません。

新しいキーを使用して元のソースに署名しても、このエラーが発生します(したがって、実際に行った変更とは関係ありません)。

4

3 に答える 3

6

ドキュメントによると、このエラーは「以前にインストールされた同じ名前のパッケージが新しいパッケージとは異なる署名を持っている場合(そして古いパッケージのデータが削除されていない場合)」に表示されます。

削除したことが確実な場合は、古い署名がまだその削除の周りに浮かんでいる場所があるかもしれません、ええと、削除しませんでした。エミュレータ/デバイスデータをワイプすると、問題が解決するはずです。

于 2014-03-10T07:46:36.693 に答える
3

元のアプリケーションが完了して削除されても、同じメッセージが表示される場合:

INSTALL_FAILED_UPDATE_INCOMPATIBLE 

Settings>に移動するAppsと、次のメッセージが表示されたアプリが見つかります。

「このユーザーにはインストールされていません」

、オプションを使用してすべてのユーザーを手動でアンインストールする必要があります。

「すべてのユーザーのアンインストール」

于 2015-09-21T18:29:51.120 に答える
2

AndroidManifest.xml解決策は、ファイルを変更することです。sharedUserId2行目の属性を削除する必要があります。

Reader.apkファイルはシステムアプリであり、他のいくつかのアプリも作成したデバイス自体のメーカーによって作成されています。このため、すべてのアプリが相互に対話できるようにするsharedUserIdフラグを設定することができました。セキュリティ設計として、すべてのアプリが同じ署名キーを持っている必要があります。変更したアプリをインストールしようとすると、適切な署名キーがなくてもユーザーIDを他のアプリと共有しようとしていたため、インストールに失敗しました。

xmlのフラグを削除することで、変更したアプリを正常にインストールできます。AndroidManifest.xmlこれからファイルの次の行を変更します。

<manifest android:sharedUserId="android.media" android:versionCode="1"
    android:versionName="1.0" package="com.bn.nook.reader.activities"
    xmlns:android="http://schemas.android.com/apk/res/android">

これに:

<manifest android:versionCode="1" android:versionName="1.0"
    package="com.bn.nook.reader.activities"
    xmlns:android="http://schemas.android.com/apk/res/android">`

詳細については、このxdaの投稿を参照してください。(完全開示:私はその投稿を書きました。)

于 2013-01-29T20:55:50.007 に答える