アンインストールせずにINSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATESを処理する方法


277

APKを再インストールしてみました

$adb install -r new.apk

そしてそれはエラーを示しています:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

1つの解決策は、正常に機能するnew.apkをアンインストールしてインストールすることです。

しかし、私はapkを再構築してアンインストールせずに再インストールできるかどうか疑問に思っています。例えば。AndroidManifest.xmlの一部の設定を変更するか、APKに署名しないなど。

「INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES」の全体的な意味を教えていただければ幸いです。


実際のデバイスでapkを実行して問題を回避してみてください。それは常に私のために機能します
Kyle

私にはうまくいきません。^ @Derpinthoughton
Crime_Master_GoGo

これは、アプリが2回署名され、アップグレードが逆の順序で署名された場合にも発生する可能性があります。詳細については、stackoverflow.com / a / 13618894/5276890を参照してください。
ロイフォーク2017

回答:


319

これは、(開発マシン上の)アプリケーションの新しいコピーが、(デバイス/エミュレーターにインストールされた)アプリケーションの古いコピーとは異なる署名鍵で署名されたことを意味します。たとえば、これがデバイスの場合、別の開発マシン(たとえば、他の開発者のマシン)から古いコピーを配置した可能性があります。または、古いキーはプロダクションキーで署名され、新しいキーはデバッグキーで署名されます。


6
@atourney:以前のマシンのキーストア(例:)をdebug.keystore新しいマシンにコピーする必要があります。
CommonsWare 2010

12
debug.keystoreプロジェクトディレクトリにないことに注意してください。通常は~/.android/ディレクトリにあります。(developer.android.com/guide/publishing/…を参照)
ohhorob

3
どうすればデバッグパッケージに別の名前を付けることができますか?(例:{PRODUCT_NAME}開発)
sandstrom

6
@ChristianBongiorno:署名キーストアを同期します(例:)debug.keystore。1つをマスターキーストアとして選択し、それを他のすべての開発者マシンにコピーして、既存のキーストアを置き換えます。
CommonsWare 2013年

2
ファイルをコピーした後も、プロジェクトを再構築することを忘れないでください。ファイルを移動して、アプリケーションをデバイスに再送信しました(ただし、古いをまだ使用していましたdebug.keystore)。プロジェクトを再構築すると(Android Studioで[ビルド]-> [再構築]を使用)、キーが同期されました。
ベンジャミンカイザー

48

新しいXoomでテストしているときに、これに遭遇しました。以前にマーケットプレイスからアプリをインストールしました。後でアプリの新しいバージョンをテストしようとしたときに、このエラーに遭遇しました。

Marketplace経由でインストールされたアプリを削除して修正しました(そのまま押し続けてゴミ箱にドラッグします)。その後、問題なく開発バージョンをデプロイできました。


12
はい、アンインストールするとこの権限の問題が解決します。アンインストールせずにこれを解決できるかどうか疑問に思いました
Johnny

新しい電話を手に入れ、これを忘れていました。これを2回マークアップするにはどうすればよいですか:)
Anthony Horne

22

これは、チームの別の開発者が展開しようとしたハードウェアデバイスでアプリをビルドしたときに起こりました。ハードウェアからアプリをアンインストールすると、問題が解決しました。


16
すごい!コマンドの後に働きましたadb uninstall <package name>。ありがとう。
Paul

もっとユニークなケースがありましたが、この答えが解決につながりました。コルドバCLIを介してローカルにインストールされたアプリと、PGビルドからインストールされたアプリもありました。エラーを解消するには、両方のアプリをアンインストールする必要がありました。
DemitryT 2014年

@Paulあなたの卓越性-King Paul I、私は元の質問者ではありませんが、あなたのコマンドは私のために機能しました(そして、あなたのコメントがどのように支持されているかを考えると、他の人も間違いありません)。それを回答として投稿することを提案できますか?
Barlop 14

1
@barlop:この問題が発生した可能性のある他のユーザーから見やすくするために、コマンドを使用して回答を投稿しました。ありがとう。
ポール

3
この回答に賛成票がある理由がわかりません。彼は明らかに「アンインストールなし」と言っています!–
クリスチャン

20

これは、adbを使用してデバイスからアプリをアンインストールするコマンドです。

adb uninstall <package name>

8
問題は、アンインストールせずに問題を解決する方法についてです。
Janaka Bandara、2015

2
この回答に賛成票がある理由がわかりません。彼は明らかに「アンインストールなし」と言っています!
クリスチャン

パッケージを一貫性のない証明書に置き換えるためのpmフラグはありませんよね?セキュリティの意図?
JohnyTex

9

元のAPKをアンインストールした後でも、このエラーが発生しました。最後に、テスト用にNexus 7に複数のユーザーを設定していて、他のユーザーの1人用にアプリがまだインストールされていることに気付きました。すべてのユーザーのためにアンインストールしたら、エラーはなくなりました。


5

インストールされている古いバージョンを削除せずに、Eclipse経由でデバイス上でデバッグできるように、アップデートのコーディング中にパッケージ名を変更しました。再インストールを試みたときに使用していたパッケージ名を元に戻さないと、同じエラーが発生しました。同じパッケージ名を使用して、再インストールは成功しました。


3

デバイスから古いビルドを削除して、同じものを再インストールするだけです。device.keystoreはすでにデバイスに存在するため、ビルドをアンインストールしてAPKを再インストールするだけです。

ありがとう


はい、CommonsWareからの回答よりも明確で明確な回答です。ありがとう
tres.14159

3

同様のエラーが発生する別のユースケースに直面しました。最初にエラーが発生したとき、私はパニックに陥り、それを削除しました。/data/data/{package.name} その後、試行しましたが、問題はまだ残っていました。その後、アンインストールを試みましたが、失敗しました。

次に、/system/app(ルートアクセスが必要)にあるapkファイルを削除し、アンインストールを試みましたが、成功しました。

その後、apkを再インストールしてみましたが、うまくいきました。


1

それが価値があることについて、新しいプラグインをCordovaプロジェクトに追加した後、この問題に遭遇しました。CordovaにビルドとUSB経由でデバイスに直接インストールしてもらいました。

デバイスからアプリをアンインストールして修正しましたが、次の展開時に問題は発生しませんでした。


1

Andoridデバイスまたはエミュレータへのデプロイが失敗し、出力ウィンドウに「Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]」というエラーが発生した場合は、デバイスまたはエミュレータの既存のアプリを削除して再デプロイするだけです。デバッグビルドはデバッグ証明書を使用し、リリースビルドは構成済み証明書を使用します。このエラーは、デバイスにインストールされているアプリの証明書が、インストールしようとしている証明書と異なることを通知するだけです。非開発(アプリストア)シナリオでは、これは、デバイスにインストールするのが安全ではない、破損または変更されたアプリのインジケータである可能性があります。


0

上からは何もうまくいきませんでした。私にとっての問題は、android-support-v7-appcompatのJavaビルドパスに間違ったソースがあることでした。[プロジェクト]> [ビルドパス]> [ビルドパスの構成]に移動します。[ソース]タブの下に、android-support-v7-appcompat / gen、android-support-v7-appcompat / libs、android-support-v7-appcompat / src以外はないことを確認します。[OK]をクリックすると、機能するはずです。


0

今日も同じエラーが発生しましたが、問題はまったく同じではありませんでした。VirtualBoxにインストールされたAndroidでADBを使用してます。私は自分のアプリの異なるバージョン(署名済み/署名なし、デバッグ/リリースモード)をインストールしようとしましたが、代わりに2つのエラーが発生しました:INSTALL_FAILED_UID_CHANGEDおよびINSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

さて、を見ると/data/data/{package.name}、アプリをアンインストールした後もそこに残っているたくさんのファイルが見つかりました。rm -rf成功せずに試してみました。I/ Oエラーが発生しました。

これに対する解決策は:

  • VMをシャットダウンする
  • vdfuse(読み取り/書き込み)でVDIイメージをマウントする
  • Partition1画像ファイルを修復するe2fsck
  • VMをアンマウントして再起動する

0

シミュレータを実行していて、adbがその上にインストールしようとしていることに気づくまで、私は同じ問題を抱えていました


0

検証はパッケージの名前に基づいているため、config.xmlまたはマニフェストファイル内のパッケージ名を別の名前に変更できます。

アプリを公開するときは、名前を元に戻すこと忘れないでください


0

GenymotionでGradleタスクconnectedDebugAndoidTest(またはconnectedAndroidTest)を実行しようとすると、この問題が発生しました通常のエミュレーターで実行すると問題は解決しました。


私はこれも同じ状況で発生していました(Genymotionでテストしています)。これは、テストパッケージの署名と競合していたことがわかります。テストパッケージを削除すると、問題が解決しました。
D-C0d3r 2017年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.