INSTALL_PARSE_FAILED_NO_CERTIFICATESエラーとは何ですか?


163

androidmanifest.xmlファイルを編集して、デフォルト/メイン/スタートアップ(何でもいい)のアクティビティを変更しようとしました。私がしたすべては、android:nameプロパティを変更することでした。しかし、これはアプリ全体を完全に壊しました。インストールしようとすると失敗して読みます。

インストールエラー:INSTALL_PARSE_FAILED_NO_CERTIFICATES

以前の状態に戻そうとすると、それでも同じエラーが発生しました...何をしましたか?


他の誰にとっても:(src)経由で取得/参照できるINSTALL_PARSE_FAILED_NO_CERTIFICATESエラー-103ですadb log D/PackageInstaller(21320): Installation error code: -103

答えはtrueです。このエラーが発生するもう1つの理由は、電話に同じパッケージ名の古いアプリケーションがインストールされている場合です。新しいものをインストールする前に、電話からアンインストールしてください
Emre Kilinc Arslan

1
この質問に出くわした人に-以下のすべての答えを読んでください!このエラーメッセージは、「何かが間違っている」タイプのエラーのようです。私がそれに遭遇した理由は、答えの1つ、リストのずっと下の方法によるものでした!!!!
GMc

回答:


56

ファイル内でAndroidManifest.xml直接編集しました.apkか?もしそうなら、それはうまくいきません。

.apkマーケットからインストールしていなくても、スマートフォンにインストールする場合は、すべてのAndroid に署名する必要があります。開発ツールは、開発証明書で署名することによってこれを回避しますが、.apkまだ署名されています。

これの1つの使用法は.apk、インストールされているアプリケーションの有効なアップグレードであるかどうかをデバイスが認識できるようにすることです。

そのため、アプリに変更を加える場合は、.apk適切に署名されるように再構築する必要があります。


ありがとうございます。マニフェストを自動的に再構築するボタンはありますか?
mtmurdock 2010年

羽ばたきに苦しんでいる人のために、実行flutter cleanしてもう一度実行/デバッグしてください!この操作は、ビルドフォルダーをクリーンアップし、実行/デバッグ時にビルドファイルを再ビルドするため、上記のソリューションに似ています。
Manoj Kumar

183

このエラーは、間違った署名設定を使用した場合にも発生する可能性があることがわかりました。ここで説明するように、Android 7.0では新しい署名スキームV2が導入されています。V2スキームは、V1スキームで行われるように、JARだけでなくAPK全体に署名します。V2のみで署名し、7.0より前のターゲットにインストールしようとすると、JAR自体が署名されておらず、7.0より前のPackageManagerがV2 APK署名の存在を検出できないため、このエラーが発生します。

すべてのターゲットシステムと互換性を持たせるには、次に示すように、Android Studioの[ 署名済みAPK生成 ]ダイアログで両方の署名バージョンボックスをオンにして、APKが両方のスキームで署名されていることを確認します。

ここに画像の説明を入力してください

7.0ターゲットのみが予想される場合、V1シグニチャーを含める必要はありません。


5
あなたは私の多くの時間を節約しました。Android Studioをアップグレードすると、トラブルの悪夢が起こりました。これはそのうちの1つでした。SOがAndroid開発の半分以上にならなかったのではないかと思います。Android Studioはエラーについての手掛かりを与えません。
Atul

4
幸い、Google Playで公開する前に、古いデバイスでリリースAPKをテストしました。Android 7.0未満のすべてのデバイスが新しいバージョンのインストールに失敗した場合、それは惨事になります。あなたがクリックしてAPKリリースを作成するとき、2つのバージョンを持つそのことは大きな赤いポップアップダイアログになるはずです!
Kirill Karmazin

これをありがとう。私のAPKがAndroid 7以下で実行されない理由を探して夢中になりますが、それは単なるチェックボックスでした。とても迷惑。
japzone

54

JDKのバージョンが原因であることがわかりました。

私は「ant」でこの問題を抱えていましたが、それはドキュメントに記載されているこの注意が原因でした:

http://developer.android.com/guide/publishing/app-signing.html#signapp

注意:JDK 7以降、デフォルトの署名アルゴリズムが変更され、APKに署名するときに署名とダイジェストアルゴリズム(-sigalgおよび-digestalg)を指定する必要があります。

私はJDK 7を持っています。Antログでは、詳細に-vを使用しました。

$ ant -Dadb.device.arg=-d -v release install
[signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments:
[signjar] '-keystore'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore'
[signjar] '-signedjar'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk'
[signjar] 'mykey'
 [exec]     pkg: /data/local/tmp/PairFinder-release.apk
 [exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

JARに手動で署名してzipalignしたが、少し異なるエラーが発生した。

$ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey
$ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
641 KB/s (52620 bytes in 0.080s)

ここで答えが見つかりました。

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

アンインストールするだけで動作しました!

$ adb -d uninstall com.kizbit.pairfinder
Success
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Success
641 KB/s (52620 bytes in 0.080s)

署名時にこれらのオプションを使用するようにbuild.xmlを変更するだけです!

ここでOKです:C:\ Program Files \ Java \ android-sdk \ tools \ ant \ build.xml

            <signjar
                    sigalg="MD5withRSA"
                    digestalg="SHA1"
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />

3
JDK 7も私の問題でした。私は怠惰で、JDK 7をアンインストールしてJDK 6をインストールしましたが、^^も動作しました。他のハックソリューションですが、根本的ではありませんが、両方をインストールできますが、JAVA_HOMEをJDK 6に設定し、JDK 6のビンパスを最初にPATHに配置します。
Ixx

1
JDK 8にも同じ問題があります。PATHをJDK 6に変更しても機能しました。命の恩人ありがとう!
Chris Xue

ありがとう!私のマーケットアプリはJDK6でコンパイルされています。JDK7を使用してリリースキーストアでアプリをコンパイルし、インストールしようとすると、この問題が発生しました。
Sileria 2014年

28

ほとんどの場合、このエラーの解決策は非常に簡単です。

  1. APKをアンインストールする
  2. Androidプロジェクトをクリーンアップする
  3. Androidプロジェクトをビルドする
  4. APKをインストール/実行する

2、3、4を実行しても同じエラーが発生します。APKをアンインストールするとはどういう意味ですか?私のデバイスから?それが私のデバイスにあったことはないと思います。
カーティス

私は突然、このエラーを何もないところから出し始めました。解決策ではありませんが、プロジェクトをクリーニングするだけでうまくいきました。ありがとう。
pgcan

18

キーツールで引数を使用して(私にとって)解決しました

-sigalg MD5withRSA -keyalg RSA -keysize 1024

jarsignerでの使用

-sigalg MD5withRSA -digestalg SHA1

で見つかったソリューション

Android APK署名にはどのようなピットファルが存在しますか?


おかげで、私も問題を解決しました(私はJDK 7を持っています)。
Enrico Ros 2013年

appceleratorチタンを使用しており、apk生成スクリプトにアクセスできないため、同じ方法で修正しました。このソリューションでは、秘密鍵の再生成(変更!)が必要です。
フェデリコ

8

私も同じ問題に直面していました。最初にV2を使用してビルドを生成し、OS 5.1で実行されているモバイルデバイスにインストールしましたが、同じ問題が発生しました。しかし、ビルドはOS 7.0で実行されているタブレットで正常に機能していました。そのため、V1 Jar署名を使用してビルドを生成しましたが、両方のデバイスで正常に動作していました。

結論: Android OS 7.0以下のデバイスをサポートしている場合。V1 jar署名を使用してビルドを生成します。


両方をチェックする必要はありません。OS7.0以下をサポートしている場合はV1を選択してください。7.0以降で実行されているデバイスをサポートしている場合はV2をチェックしてください。
Rajiv Ranjan

7

私の場合、リリースビルドをビルドして実行できINSTALL_PARSE_FAILED_NO_CERTIFICATESましたが、デバッグビルドを実行しようとするとエラーが発生しました。

解決策は、debug.keystoreファイルを削除してADTに再作成させることでした。どうやら期限切れだったようです。

より優れた長期的な解決策はdebug.keystore、ADTで作成する代わりに、1年後に期限切れにならないを明示的に作成することです。これを行うコマンドは次のとおりです。

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000

プロンプトが表示されたら、次の値を入力します。

  • 姓名:Android Debug
  • 組織部門:Android
  • 組織名:不明
  • 都市または地域:不明
  • 州または県:不明
  • 国コード:米国

5

これは醜いですが高速なソリューションです。7ではなくJDK 6を使用してください。

Chloeの回答を読んだ後、JDK 7をアンインストールし(現時点では必要ありません)、JDK 6をインストールしました。より良い解決策は、antにJDK 6を使用させることです(7をアンインストールせずに)。このプロパティを変更/設定する可能性があります:

java.library.path

local.propertiesファイル内。プロジェクトディレクトリ(ルート)にあります。

AndroidはJDK 7では動作しません(6または5のみ)。そのため、antスクリプトもJDK 6または5を使用することをお勧めします。


5

以前に生成されたビルドと現在のバージョンがv1(jar署名)とv2(フルAPK署名)の間の署名バージョンで競合しているため、

[署名済みAPKの生成]ダイアログで適切な署名バージョンをチェックするには


4

最近、Android Studio 4.0へのアップグレード中にこのエラーが発生しました。原因は、プロジェクトの署名設定でV2署名が無効になっていることbuild.gradleでした。

解決策は、これを削除するv2SigningEnabled falseか、明示的trueにデフォルト値であるに設定することでした。

android {    
    signingConfigs {
        dev {
            v2SigningEnabled true
        }
     }
}

Android Studio 4.0を使用しています。しかし、私のbuild.gradleファイルに「v2SigningEnabled」というものはありません。次に、どうすればよいですか?
Nuwan Harshakumara Piyarathna

3

新しいAndroid Studioバージョン3.2以降では、releaseインストールを実行しようとしていて、署名設定を定義していない場合、エラープロンプトが表示され、インストールは失敗します。debugビルドを実行するか、署名構成(V1またはV2)を正しくセットアップする必要があります。


3

ほとんどの答えは本当です。そして起こるいくつかの別の理由は

►最小SDKがデバイスSDKよりも小さい。
►デバイスに同じパッケージ名の古いアプリケーションがある


これは私の経験でした-プロジェクトの最小SDKはデバイスSDKよりも高かったです。これは、Android Studioでプロジェクトを作成しているときに正しい選択を「逃した」ため、誤って次の上位バージョンをSDKとして選択したため、古いタブレットが実行されていたために発生しました。
GMc

私の最小SDKとデバイスSDKを等しくすることで私の問題は解決しました。
Nuwan Harshakumara Piyarathna

2

これ.jarは、AndroidManifest.xmlファイルを含むライブラリを含めようとした場合に発生する可能性があり ます。

  • 純粋なJavaの場合は、.jarエクスポートに含めないでください。
  • 純粋なJavaではない(つまり、Androidプロジェクトである)場合は、ライブラリプロジェクトとして含める必要があります。

2

また、あなたはチェックすることができます

Project Structure-> Default Config->Signing Config

必要なものをすべて追加したら


1

環境変数JAVA_HOMEを(JDK 7ではなく)JDK 5または6に設定すると、エラーが修正されました。


0

しばらくして、このテーマに関する複数のオンラインスレッドを作成した後、なんとかプロジェクトを修正することができました。

それは主にあなたが入れた最後のファイル(画像やレイアウトかもしれません)を考慮に入れています。それらを削除すれば、それはうまくいき、プロジェクトを再びビルドすることができます。


0

私のEclipseコンソールでこのエラーが発生していました。内容が同じで名前が異なる2つのjarファイルがあり、互いに競合していることがわかりました。そのうちの1つを削除して、デバイスにアプリをインストールすることができました。


0

このエラーant releaseは、ディスク領域が足りなくなったために失敗していたことをリリースしたために発生していました。


0

Android Nプレビューに対してビルドされたXamarinプロジェクトをAPI v23を実行している電話にインストールしようとしたときに、このエラーが発生しました。解決策は、それを行わないことです。


0

このエラーを取得する別の方法はant、macOSを使用してビルドしIcon\r、アプリのソースツリーにFinderアイコンファイル()を置くことです。表示されjarsigner、それはあなたがあれば、署名が有効であると主張しますが、ファイル名にキャリッジリターンに対応できないと-verifyAPK、それは常にデバイスにインストールする文句を言わないAPKになります。皮肉なことに、Google Drive Finderプラグインは、Finderアイコンファイルの優れたソースです。

解決策は、fileset次のような指定子を使用して、問題のあるファイル(とにかくAPKでは役に立たないファイル)を除外することです。

    <exclude name="**/Icon&#13;" />

0

この問題は、署名のないバージョンのAPKをインストールしている場合に発生します。正しいAPKをインストールしているかどうかを確認してください。


0

ionic / Visual Studio Code(デバイスでAndroidを実行)で問題が発生しました:

モバイルデバイス(設定/アプリ)からアプリをアンインストールしましたが、エラーは発生せず、アプリが起動しています。


0

私がこのエラーをスローしているのは、最小sdkが28のアプリがあり、SDKバージョン23のエミュレーターでプレイしているためです。通常、これは不可能です(ASグレイが再生ボタンを押し出す)が、今日はそうではありません。たくさん。


0

最初にそれをやってみてください:

  • Gradleスクリプト→bulid.gradle(module:app)→次に(minSdkVersion)の値を変更する必要があります。例として、26を使用した場合、(minSdkVersion 20)のように値を減らすことができます。
  • その後、(今すぐ同期)を試してください。

0

エミュレーターを使用している場合はリセットしてみてください。モバイルで最初にアプリケーションをアンインストールしてから開発者モードをオフにしてからオンにすると、問題が解決します。

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