失敗[INSTALL_FAILED_INVALID_APK]


86

Android Studio 0.2.10で作成したばかりのプロジェクトをクリックして実行し、Androidを選択すると(USBで接続され、USBでデバッグされます)次のエラーが発生します。

Waiting for device.
Target device: 0123456789ABCDEF
Uploading file
    local path: /Users/Rui/AndroidStudioProjects/FirstAppProject/FirstApp/build/apk/FirstApp-debug-unaligned.apk
    remote path: /data/local/tmp/rui.firstapp
Installing rui.firstapp
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/rui.firstapp"
pkg: /data/local/tmp/rui.firstapp
Failure [INSTALL_FAILED_INVALID_APK]

それが何であるかについてのアイデアはありますか?


私の電話を選択してください... !! エミュレータのことですか... ??
Gokul Nath KP 2013

1
いいえ、USBによるデバッグがオンになっているAndroidです。
RuiG 2013

アプリが使用しているデバイスと互換性があることを確認しましたか?マニフェストのMinSDKとのTargetSDK値を確認してください。これをエミュレータにインストールしてみましたか?これにより、問題がAPKにあるのかデバイスにあるのかが絞り込まれます。
free3dom 2013

回答:


156

私はこれをAndroidStudioで取得していましたが、修正するために行ったのはに行く"Build" > "Clean Project"だけで、うまくいきました。


8
それでも機能しない場合は、[ビルド]-> [クリーンプロジェクトの後にプロジェクトを再構築]が機能します。
ペイ

私はこれをgradle5.4.1から5.6.1へのアップデートで入手しました-どのような奇妙さが原因かはわかりませんが、大きなgradleのアップグレードは確かに可能です。代替コマンドライン・ソリューションをされ./gradlew clean、あなたの通常のビルドコマンドに続く
マイク・ハーディを

23

フォルダ内の古いAPKandroid / app / build / outputs / apk / debug /app-debug.apkを削除するだけです。それで全部です。コーディングをお楽しみください...


ようこそ@ VenkateshMogili
mahendren20年

1
rm -fr android/app/build/outputs/apk/debug/
felansu

15

一度同様の問題が発生しましたが、Androidmanifest.xmlのパッケージ名が1つの空白文字で開始されていました。 like " com.example.test" instead of "com.example.test"

マニフェストファイルからそのような無効なスペースをすべて削除しました。問題は解決しました。

編集1:パッケージ名の「-」も一部のAndroidバージョンで同じ問題を引き起こします


1
うわー!invalidate cache and restartクリーンビルドを強制すると思いました が、そうではないようです。
GabrielOshiro 2017年

10

私は同じ問題を抱えていましたが、どの解決策もうまくいきませんでした。問題は私が持っていなかったということでしたパッケージ名の区切り文字。
つまり、パッケージ名がmy.packagenameの場合は問題ありませんが、mypackagenameだけではありません
。このバグレポートからヒントを得ました。

https://code.google.com/p/android/issues/detail?id=55841


9

それでも問題が解決しない場合は、[ビルド]-> [プロジェクトのクリーンアップ]、[ビルド]-> [プロジェクトの再ビルド]、最後にプロジェクトをGradleファイルと同期します


8

この問題を解決する方法:

  1. インストール RootExplorer
  2. tmpSDカードに新しいフォルダを作成します
  3. tmpフォルダーを長押しし、Linkこのフォルダーを選択します(メニューの最後のオプション)
  4. 下から/data/local/ボタンに移動してタップしますCREATE LINK

8

私はこの問題を抱えていましたが、上記の解決策はどれもうまくいきませんでした。

何らかの理由で、アクセス許可が/data/local/tmpディレクトリに正しく設定されていませんでした(rootのみがrwxを持っていました)。私はADBを使用して問題を修正しました(ルート化されたデバイスが必要です):

  1. USB経由で電話を接続する
  2. を使用してADBを起動します adb shell
  3. /data/local使用に移動cd /data/local
  4. を使用してルートモードに切り替えます su
  5. tmpを使用してディレクトリで読み取り/書き込み/実行を許可するchmod 777 tmp
  6. 切断し、Android Studioを再起動して、デバイスを再度接続します

7

インスタントランをオフにすることで、私の問題は解決しました。今まで説明がわからない。android studio 3.0に移行した後、このような問題が発生します。これが将来誰かに役立つことを願っています。


6

この問題が発生したときに修正されたのは、AndroidManifest.xmlパッケージ名がbuild.gradeapplicationIdと同じであることを確認することでした。


3

このエラーの別の理由を見つけました。デバイスをルート化した場合、/ data / local / tmpのアクセス許可が変更される可能性があるため、adbはその一時ファイルにアクセスできません。解決策は、sdcardに「tmp」フォルダーを作成し、/ data / local /に(ADBシェルまたはRoot Explorerを介して)そのフォルダーへのシンボリックリンクを作成することです。


私はそれを信じることができませんでした:別のデバイスとのクロスチェック(ルートレベルまで、すべての権限は同じように見えました)。パーミッションをいじる(それらを777にさえする)–まさか。だから何を失うか。シンボリックリンクを試しました–すごい!作品(+1)。その理由とその背後にあるものを知りたいのですが。私の場合、それはルート化ではなく、ADBデーモンを「安全でないモード」で(つまり、ルート権限で)実行させていました。
Izzy 2015年

3

android:extractNativeLibs="false"AndroidManifestファイルに書き込む場合。次に、に変更しますandroid:extractNativeLibs="true"


3

私は上記で提供されたソリューションのほとんど(chmodを提供して内部ライブラリを変更するものではなく、単純なもの)を試しましたが、どれも機能しません

最終的に私のために働いたのは:「プロジェクトのクリーンアップ」->「プロジェクトの再構築」-> build.gradleアプリモジュールのアプリversionNameの変更-> Gradleの同期->デバイスでアプリを実行する


この方法は私のために働いた!どうもありがとうございました、私は長い間これに苦労していました、これは確かに命の恩人です!十分に感謝することはできません
stb_dev

3

案内する Run/Debug Configurations

上部のタブから[実行]> [構成の編集]をクリックします

  • モジュール:アプリを選択します
  • インストールオプション:デフォルトのAPKをデプロイする
  • OK

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


2

これは私の場合に役立ちました:

Settings -> Apps -> Google Play Store -> Click "Enable" button.

ワオ。ありがとう。GooglePlayを無効にしましたが、これが問題の根本的な原因であることに気づきませんでした。
W0rmH0le

2

ビルドバリアントが一致しないため、この問題が発生しました。残りのモジュールがリリースされている間、DynamicDeliveryモジュールはデバッグバリアント上にありました。Dynamic Deliveryモジュールをリリース、再構築、およびインストールに変更するだけで、問題が修正されました。


2

Flutterプロジェクトの場合、VSコードエディターを使用して、プロジェクトのソースフォルダーに移動し、「ビルド」フォルダーを削除して、デバッグを開始します。


2

この問題は、Daggerと複数のモジュールを使用するプロジェクトで発生しました。私にとってうまくいったこと(上記のどれもうまくいかなかった)は、1).gradleフォルダーを空にする2).ideaフォルダーを空にする3)プロジェクトgradle.propertiesで、org.gradle.caching = falseとマークする4)ASのキャッシュを無効にする可能性がある、クリーン、再構築

#3だけで逃げて、きれいにしてから構築できるかもしれません。

編集:最近、ASを再起動し、クリーンアップを実行してから再度インストールすることで、これを回避することができました。


不思議なことに。私は上記のいくつかを試しました。これは私のために働いたこのアンドロイド開発は夢中になっています。ビルドを取得するための5分間30秒および待機用のコード
サタジット

@satyajit。5分!! 私は10かかります!これは私のために一貫して機能する唯一のものです。
ダンアンダーソン

私はそれがで動作させることができる午前./gradlew installDebug、コマンドラインから
サタジット

2

私にとってこの問題の原因は、アプリのモジュールの1つに間違ったビルドバリアントが選択されていることでした。「ビルドバリアント」ツールから、アプリモジュールに一致するモジュールバリアントを選択したところ、問題が修正されました。


1

デバッグビルドでバージョン名のサフィックス-DEBUGを追加し、-が問題だったため、AndroidStudioでこの問題が発生しました。

バージョン名とアプリケーションIDには、文字、数字、ドットのみを含めるようにしてください


0

同じエラーが発生しました。私はアプリIDで2015年を過ごしました。2015年を15に置き換えたところ、それで解決しました。

また、Android Studioを使用している場合は、ツール/ Android / Gradleファイルとの同期プロジェクトを試すことができます。


0

デバイス設定でアプリケーションを強制停止します。


0

私はこの問題を抱えていましたが、上記の解決策はどれもうまくいきませんでした。

その理由はおそらく、SDカードでのみ利用可能なクォータまたはapkインストール権限を持つルートバージョンの電話です。

私はADBを使用して問題を修正しました(ルート化されたデバイスが必要です):

  1. USB経由で電話を接続する
  2. adbシェルを使用してADBを起動します
  3. suを使用してルートモードに切り替えます
  4. sdcardにtmpフォルダーを作成します:mkdir / sdcard / tmp
  5. cd / data / local
  6. sdcard内のフォルダにリンクを作成します:ln -s / sdcard / tmp tmp

0

この失敗には複数の理由があるようです。私にとっての問題は、AndroidManifestファイルで、「uses-library」タグを使用して存在しないライブラリ(この特定のデバイスのみ)を参照していたことでした。このデバイスにapkがインストールされていないライブラリを削除した後、正しくインストールされました。


0

私はandroidquickstartmavenアーキタイプを使用し、同じ問題に直面しました:

私のパッケージ名は唯一のandroidquickstartでした。以前のアドバイスによると

  1. パッケージをandroidquickstart.testに変更しました
  2. 次に、AndroidManifest.xmlで、xmlの他の部分に変更package="androidquickstart"package="androidquickstart.test"、それに応じてテストを削除<activity android:name=".test.HelloAndroidActivity" >しました。<activity android:name=".HelloAndroidActivity" >
  3. また、Javaファイルのパッケージの問題を修正しました(IDEで強調表示されています)

0

パッケージ名には、com.exampleやprashant.mydairyなどのドットを組み合わせた単語を含める必要があります。これで正常に機能するはずです。

パッケージ名を更新する必要があるファイルは次のとおりです。1)マニフェストファイル2)Gradleファイル(モジュールappp):applicationId "package.name"


1
コメントする必要があります
Furqan 2017

0

taskAffinity名には少なくとも1つの「。」が必要です。セパレーター


0

デバイスコンソール(adbシェル)にアクセスできる場合は、次の権限を変更します。

  1. chmod 777 / data /
  2. chmod 777 / data / local /
    apkをコピーしてみることもできます。/data/local/その場合は、apkに適切な権限を設定してください
  3. chmod 777 /data/local/myapk.apkこれで、次の方法でインストールを試行できます。pminstall -r -d /data/local/myapk.apk(絶対パスに注意)

0

ドットの後に数字があるようですが原因だったです。

次のapplicationIdでも同じ問題が発生しました

org.tony.stark.125jarvis

に変更する

org.tony.stark.jarvis

Androidデバイスにアプリをインストールすることができました。


0

minSdkVersioninbuilde.gradleがデバイスのAndroidバージョンよりも大きい場合、このエラーが発生する可能性があります。その場合、を変更する必要がありminSdkVersionます。


0

AndroidManifest.xmlのコードを削除します。

tools:replace = "android:appComponentFactory" android:appComponentFactory = ""

できます。

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