Android Studioから実機やAndroid Emulatorへアプリをインストールしようとした際に、「INSTALL_FAILED_INVALID_APK」というエラーが表示されることがあります。
Installation failed with message INSTALL_FAILED_INVALID_APK
AndroidのPackage Managerでは、このエラーはインストールしようとしているAPKが有効なパッケージとして処理できない場合に返されます。AOSPのPackageManagerでは「package archive file is invalid」の場合に使用されるインストール失敗コードとして定義されています。 :contentReference[oaicite:0]{index=0}
原因はAPKファイルの破損だけとは限りません。ビルド途中の不整合、split APKの組み合わせ、署名処理、ファイル名やパッケージ構成など、インストール時にAPKを正常に解析・検証できない場合にも発生することがあります。
この記事では、「INSTALL_FAILED_INVALID_APK」が発生したときに確認したい原因と解決方法を順番に解説します。
- INSTALL_FAILED_INVALID_APKとは
- 主な原因
- 解決方法1:APKを再ビルドする
- 解決方法2:Clean Project後に再ビルドする
- 解決方法3:APKの解析ができるか確認する
- 解決方法4:APKの署名を確認する
- 解決方法5:APKを生成後に編集しない
- 解決方法6:split APKならinstall-multipleを使う
- 解決方法7:APKではなくAABを直接インストールしていないか確認する
- 解決方法8:古いAPKを削除して生成先を確認する
- 解決方法9:既存アプリをアンインストールして切り分ける
- 解決方法10:ADBとPlatform Toolsを確認する
- より詳しい原因をログで確認する
- それでも解決しない場合
- まとめ
INSTALL_FAILED_INVALID_APKとは
APKは、Androidアプリのコード、リソース、マニフェスト、署名情報などをまとめたパッケージです。
AndroidへAPKをインストールすると、Package ManagerはAPKの内容を解析し、必要な検証を行ってからアプリを配置します。
この段階でAPKを正常なパッケージとして扱えない場合に、次のようなエラーになることがあります。
adb: failed to install app-debug.apk: Failure [INSTALL_FAILED_INVALID_APK]
ADBによる通常のインストールでは、APKデータがPackage Managerへ送られ、その後パッケージの検証が行われます。 :contentReference[oaicite:1]{index=1}
主な原因
1.APKファイルが破損している
APKのコピーやダウンロードに失敗した場合、ファイルが途中で欠損している可能性があります。
Android Studioで正常に生成されたAPKでも、その後別の場所へコピーした際に破損していればインストールできません。
2.古いビルド成果物が混在している
Gradleのビルドキャッシュや以前生成されたファイルに不整合があると、正常ではないAPKが生成される場合があります。
特にGradle設定、プラグイン、依存関係、リソース構成を大きく変更した直後は、一度クリーンビルドすると改善することがあります。
3.split APKを単体でインストールしている
Android App Bundleなどから生成されたアプリでは、base APKと複数のsplit APKに分割される場合があります。
必要なsplitを含めず、一部のAPKだけを単独でインストールしようとすると正常にインストールできません。
4.APKの署名や構造に問題がある
APKはインストール時に検証されます。署名処理が壊れていたり、APKを生成後に不適切な方法で編集したりすると、正常なAPKとして扱われない場合があります。
APKはZIP形式をベースにしたパッケージで、コード、リソース、署名関連ファイルなどを含みます。 :contentReference[oaicite:2]{index=2}
5.APKファイルを手動で変更した
生成済みAPKをZIPツールなどで開き、内部のファイルを直接追加・削除すると、署名やパッケージ構造が壊れることがあります。
APKを変更する必要がある場合は、原則としてAndroid Studioのプロジェクト側を変更して再ビルドしてください。
6.split APKの構成が一致していない
base APKとsplit APKが異なるビルドから生成されたものだったり、必要なsplitが欠けていたりすると、インストールセッションが無効と判断される場合があります。
AOSPのPackageInstallerSessionでも、無効なAPKファイル名や不正なsplit構成などの条件でINSTALL_FAILED_INVALID_APKが返される処理があります。 :contentReference[oaicite:3]{index=3}
解決方法1:APKを再ビルドする
最初に試したいのはAPKの再生成です。
Android Studioで通常のデバッグビルドを使用している場合は、再度BuildまたはRunを実行してください。
ターミナルからGradleでビルドする場合は、たとえば次のように実行できます。
./gradlew assembleDebug
Windowsでは次の形式です。
gradlew assembleDebug
生成された新しいAPKを使って再度インストールします。
adb install app-debug.apk
解決方法2:Clean Project後に再ビルドする
古いビルド成果物が原因の可能性がある場合は、プロジェクトをクリーンにします。
Gradleでは次のコマンドを利用できます。
./gradlew clean
続けて再ビルドします。
./gradlew assembleDebug
Android Studio上から実行する場合も、一度クリーンした後にプロジェクトを再ビルドして、新しく生成されたAPKを使用します。
ポイント:以前生成したAPKをそのまま再利用するのではなく、クリーン後に新しく生成されたAPKを使って確認してください。
解決方法3:APKの解析ができるか確認する
APK自体が正常か確認するには、Android SDK Build Toolsに含まれるaaptなどを使ってパッケージ情報を確認できます。
aapt dump badging app-debug.apk
正常なAPKであれば、パッケージ名やversionCodeなどの情報が表示されます。
package: name='com.example.myapp' versionCode='1' versionName='1.0'
APKの解析自体に失敗する場合は、ファイルの破損や構造上の問題を疑います。
解決方法4:APKの署名を確認する
APKの署名状態はapksignerで確認できます。
apksigner verify --verbose app-debug.apk
証明書情報も確認したい場合は、次のようにします。
apksigner verify --print-certs app-debug.apk
署名検証でエラーになる場合は、APKの生成方法やSigningConfigを確認してください。
解決方法5:APKを生成後に編集しない
APK生成後に内部ファイルを直接編集している場合は、元のAndroid Studioプロジェクトへ変更を戻し、APKを再生成してください。
たとえばAPKをZIPとして開いて次のようなファイルを手作業で変更する方法は避けます。
- AndroidManifest.xml
- resources.arsc
- classes.dex
- META-INF内の署名関連ファイル
- res内のリソース
変更後のAPKが元の署名と一致しなくなったり、構造自体が壊れたりする可能性があります。
解決方法6:split APKならinstall-multipleを使う
base APKとsplit APKに分かれているアプリを手動インストールする場合、単一APKとしてインストールするのではなく、必要なAPKをまとめてインストールします。
adb install-multiple base.apk split_config.arm64_v8a.apk split_config.en.apk
必要なsplitはアプリの生成方法や端末構成によって異なります。
注意:異なるビルドから取得したbase APKとsplit APKを混ぜないでください。同じ生成セットに含まれるAPKを使用します。
解決方法7:APKではなくAABを直接インストールしていないか確認する
Android App Bundleの.aabファイルは、通常のAPKと同じ方法で端末へ直接インストールするファイルではありません。
Google PlayではAABから端末構成に適したAPKが生成・配信されます。 :contentReference[oaicite:4]{index=4}
ローカルでAABをテストする場合は、適切なツールでAPKセットを生成するか、Android StudioのRun機能などを使用してください。
解決方法8:古いAPKを削除して生成先を確認する
複数のAPKが存在していると、誤って古いファイルや途中生成されたファイルをインストールしていることがあります。
一般的なデバッグAPKは、プロジェクト構成にもよりますが次のような場所に生成されます。
app/build/outputs/apk/debug/app-debug.apk
ファイルの更新日時を確認し、現在のビルドで生成されたAPKを使っているか確認してください。
解決方法9:既存アプリをアンインストールして切り分ける
既存アプリとの更新処理が関係している可能性がある場合は、開発用端末でデータを保持する必要がなければ一度アンインストールします。
adb uninstall com.example.myapp
その後、新しいAPKをインストールします。
adb install app-debug.apk
これで成功する場合は、既存アプリとの更新条件に問題があった可能性があります。
解決方法10:ADBとPlatform Toolsを確認する
ADBで問題が発生している場合は、Android SDK Platform ToolsがAndroid Studioで正しく管理されているか確認します。
接続状況は次のコマンドで確認できます。
adb devices
必要に応じてADBを再起動します。
adb kill-server adb start-server
ADBのinstallコマンドでは、通常の再インストールやテストAPK、ダウングレードなどに対応する各種オプションが用意されています。 :contentReference[oaicite:5]{index=5}
より詳しい原因をログで確認する
「INSTALL_FAILED_INVALID_APK」だけでは原因を特定できない場合があります。
その場合は、Android StudioのRunウィンドウやLogcat、ADBの出力に表示されているINSTALL_FAILED_INVALID_APKの前後のメッセージも確認してください。
たとえば次のような追加情報があれば、原因を絞り込みやすくなります。
- Invalid filename
- Failed to parse
- Missing split
- Signature verification failure
- Package parsing error
エラーコードだけでなく、その直前または直後に表示された詳細メッセージを確認することが重要です。
それでも解決しない場合
「INSTALL_FAILED_INVALID_APK」が続く場合は、次の項目を順番に確認してください。
- APKをクリーンビルドし直したか
- APKが途中で破損していないか
aapt dump badgingで解析できるかapksigner verifyで署名を検証できるか- 生成済みAPKを手作業で変更していないか
- split APKを単体でインストールしていないか
- base APKとsplit APKが同じビルドのものか
- AABをAPKとして直接インストールしようとしていないか
- 古いAPKを誤って指定していないか
- Android StudioやADBに追加のエラーメッセージが出ていないか
まとめ
Android Studioの「INSTALL_FAILED_INVALID_APK」は、Androidがインストール対象のAPKを有効なアプリパッケージとして処理できない場合に発生するエラーです。AOSPでも、無効なpackage archiveに対するインストール失敗コードとして定義されています。 :contentReference[oaicite:6]{index=6}
まずは次の順番で確認すると効率的です。
- APKをクリーンビルドし直す
aapt dump badgingでAPKを解析するapksigner verifyで署名を確認する- APKを生成後に直接編集していないか確認する
- split APKなら必要なファイルをまとめてインストールする
- 古いAPKや別ビルドのAPKを使っていないか確認する
- 詳細なインストールログを確認する
単純なファイル破損だけでなく、split APKの組み合わせやパッケージ構造などでも発生するため、「INVALID_APK」という文字だけで原因を決めつけず、インストールログに表示される詳細情報まで確認するのがポイントです。
