Androidアプリの開発にEclipseを使用していますが、プロジェクトを実行すると、次のエラーが表示されます。
Installation failed due to invalid APK file!
「無効な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を投稿してさらにサポートを受けてください。
私の場合、これは私のライブラリに含まれている.jarファイルのエラーが原因でした。 .jarファイルは私が作成したものだったので、修正することができました。問題がどのように発生し、どのように修正したかについての内訳は次のとおりです。
それを修正するには:
Srcフォルダーの一部ではないすべてのファイルを含めると、プロジェクトと.jarにいくつかの重複が発生しました。
これにより、.apkが無効になりました。これが誰かを助けることを願っています。注:このソリューションは、自分で変更およびコンパイルしたライブラリファイルがあり、不要なフォルダーを含めたときと同じ間違いを犯した場合にのみ機能します。
ADBでこれを試してください:
cd /data/local
mv tmp tmp-old
mkdir /mnt/sdcard/tmp
ln -s /mnt/sdcard/tmp ./tmp
@melvkimの回答に完全に同意します。追加することが1つあります。
また、パッケージ名に禁止文字を使用しないでください。例えば。:
間違ったパッケージ名
com.domain.365days
-パッケージ名のどの部分も数字で始めることはできません(...)com.domain._365days
...)または特殊文字---(正しいパッケージ名
com.domain.days365
-パッケージ名のすべての部分を文字で始めますログキャットを注意深く見てください。 Eclipse IDEはエラーや警告を表示しない場合がありますが、logcatは表示します。
電話またはエミュレーターでのプラットフォームのバージョン(テストする場所によって異なります)が、AndroidManifest.xmlで指定したバージョンと同じかそれ以上である必要があることを確認してください。
私の場合、問題はAndroidマニフェストファイルとプロジェクトビルドターゲットAPIレベルの不一致が原因でした
TargetSdkVersionを19から21に変更しました。
また、stepsgiven below
を使用してターゲットSDKのバージョンを変更する
私にとっての問題は、対象のファイルへの間違ったパスを使用していたことでした。言い換えれば、apkファイルは存在しませんでした!ファイルが見つからなかったとだけ言われなかったのはなぜですか?ああ!まぁ。多分これは他の誰かを助けるでしょう。ファイルへのパスが正しいことを再確認してください。
私にとって、それはこのエラーを引き起こす別の問題でした:
私のプロジェクトでは、APKに埋め込まれたいくつかのネイティブJNIライブラリを使用していました。テスト中にスペースを節約するために、lib\armeabiバージョンを無効にして、新しいlib\armeabi-v7aバリアントのみを残しました。新しいデバイスではすべて問題なく動作しましたが、古いG1でテストするとこのエラーが発生しました。
私の場合、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です。
これがバージョンの問題だと確信しています。まず、エミュレーター/電話に開発中の正しいバージョンがあるかどうかを確認します。