web-dev-qa-db-ja.com

無効なAPKファイルが原因でEclipseのインストールに失敗しましたか?

Androidアプリの開発にEclipseを使用していますが、プロジェクトを実行すると、次のエラーが表示されます。

Installation failed due to invalid APK file!

9
AbbasS

「無効なAPKファイル」エラーが表示される最も一般的な理由の1つは、AndroidManifest.xml構成が誤って変更されたため、重複したAPKファイルがデバイスにインストールされたためです。

可能性1:バージョンの問題。最小およびターゲットのSDKバージョンを高くして、再試行してください。

可能性2:パッケージのミスマッチング。AndroidManifest.xmlのパッケージ名が、アクティビティが関連付けられている実際のパッケージと一致しません。

この問題を解決するための3つのステップ:

手順1.AndroidManifest.xmlからヘッダーファイルを確認します。

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.yourdomain.yourapp"
    Android:versionCode="1"
    Android:versionName="1.0" >

手順2.srcフォルダ内のパッケージ名が手順1で確認したものとまったく同じであることを確認します。

例えばcom.yourdomain.yourapp

ステップ3.ランチャーアクティビティからパッケージの包含ステートメントを確認します(例:MainActivity.Java):

package com.yourdomain.yourapp;

前述の解決策が機能しない場合は、Logcatを投稿してさらにサポートを受けてください。

8
melvynkim

私の場合、これは私のライブラリに含まれている.jarファイルのエラーが原因でした。 .jarファイルは私が作成したものだったので、修正することができました。問題がどのように発生し、どのように修正したかについての内訳は次のとおりです。

  • 別のプロジェクトに変更を加えました(インストールに失敗したプロジェクトではありません)
  • .jarにエクスポートすると、プロジェクト内のすべてのファイルが含まれていました(これは間違いでした)
  • 結果の.jarは、私のプロジェクトにすでに含まれているものを置き換えました
  • エラーが発生しました

それを修正するには:

  • Srcフォルダーのみを含む再エクスポートされた.jarファイル
  • 再構築してインストールしました。

Srcフォルダーの一部ではないすべてのファイルを含めると、プロジェクトと.jarにいくつかの重複が発生しました。

  • 例:複数のandroidmanifest.xmlファイルが1つはローカルで、もう1つは.jar内にあります

これにより、.apkが無効になりました。これが誰かを助けることを願っています。注:このソリューションは、自分で変更およびコンパイルしたライブラリファイルがあり、不要なフォルダーを含めたときと同じ間違いを犯した場合にのみ機能します。

8
ProgMasta

ADBでこれを試してください:

cd /data/local
mv tmp tmp-old
mkdir /mnt/sdcard/tmp
ln -s /mnt/sdcard/tmp ./tmp
3
Pedro Lobito

@melvkimの回答に完全に同意します。追加することが1つあります。

また、パッケージ名に禁止文字を使用しないでください。例えば。:

間違ったパッケージ名

  • com.domain.365days-パッケージ名のどの部分も数字で始めることはできません(...)
  • com.domain._365days...)または特殊文字

---(正しいパッケージ名

  • com.domain.days365-パッケージ名のすべての部分を文字で始めます

ログキャットを注意深く見てください。 Eclipse IDEはエラーや警告を表示しない場合がありますが、logcatは表示します。

3
marekozw

電話またはエミュレーターでのプラットフォームのバージョン(テストする場所によって異なります)が、AndroidManifest.xmlで指定したバージョンと同じかそれ以上である必要があることを確認してください。

0
RO N

私の場合、問題はAndroidマニフェストファイルとプロジェクトビルドターゲットAPIレベルの不一致が原因でした

TargetSdkVersionを19から21に変更しました。

また、stepsgiven belowを使用してターゲットSDKのバージョンを変更する

  1. プロジェクト名を右クリック
  2. プロパティを選択
  3. 「プロジェクトビルドターゲット」をAPIレベル21に変更します
0
Subramanian

私にとっての問題は、対象のファイルへの間違ったパスを使用していたことでした。言い換えれば、apkファイルは存在しませんでした!ファイルが見つからなかったとだけ言われなかったのはなぜですか?ああ!まぁ。多分これは他の誰かを助けるでしょう。ファイルへのパスが正しいことを再確認してください。

0
user3137908

私にとって、それはこのエラーを引き起こす別の問題でした:

私のプロジェクトでは、APKに埋め込まれたいくつかのネイティブJNIライブラリを使用していました。テスト中にスペースを節約するために、lib\armeabiバージョンを無効にして、新しいlib\armeabi-v7aバリアントのみを残しました。新しいデバイスではすべて問題なく動作しましたが、古いG1でテストするとこのエラーが発生しました。

0
radhoo

私の場合、AndroidManifest.xmlを変更して問題を解決しました

から変更しました

<uses-sdk
    Android:minSdkVersion="11"
    Android:targetSdkVersion="19" />

<uses-sdk
    Android:minSdkVersion="11"
    Android:targetSdkVersion="20" />

eclipseは、最新バージョンのAndroidについて警告を出したり、ターゲットにしたりしなかったためです。

最新のEclipseSDK v23を使用しており、デバイスはNexus 7 2012 KitKat4.4.4です。

0
Bolun Zhang

これがバージョンの問題だと確信しています。まず、エミュレーター/電話に開発中の正しいバージョンがあるかどうかを確認します。

0
Paresh Mayani