575

エラーは、すべてのINSTALL_FAILED_INSUFFICIENT_STORAGEAndroid 開発者の命を奪います。アプリのサイズや使用可能なストレージの量に関係なく発生します。ターゲット デバイスを再起動すると問題は一時的に解決しますが、すぐに再発します。問題が発生した理由を尋ねる人々からの数百 (数千ではないにしても) のメッセージ ボードの投稿がありますが、Google の人々はイライラするほどこの問題について沈黙しています。

簡単な回避策があります。テスト デバイスが Android 2.2 以降を実行している場合は、android:installLocation属性をアプリケーションのマニフェスト ファイルに追加し、値を"preferExternal". これにより、スマートフォンの SD カードなど、デバイスの外部ストレージにアプリが強制的にインストールされます。

例えば:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.andrewsmith.android.darkness"
          android:installLocation="preferExternal"

これは修正というより応急処置であり、完成したアプリをデバイスの内部メモリにインストールしたい場合には理想的ではないかもしれません. しかし、少なくとも開発プロセスのイライラは軽減されます。

4

31 に答える 31

112

Android エミュレータのメモリ容量を増やす必要があります。それには 2 つの方法があります。

  1. Android プロジェクトのルートを右クリックし、[Run As] に移動してから [Run Configurations...] に移動します。左側のツリーで「Android アプリケーション」ノードを見つけて、プロジェクトを選択し、ウィンドウの右側にある「ターゲット」タブに移動して、「追加エミュレータ コマンド ライン オプション」フィールドを見下ろします (場合によっては、ウィンドウを大きくする必要があります)、最後に「-partition-size 1024」をそこに貼り付けます。[適用] をクリックしてから [実行] をクリックして、エミュレーターを使用します。

  2. Eclipse の[Preferences] に移動し、[Launch] を選択します。[Default emulator option] フィールドに [-partition-size 1024] を追加します。「適用」をクリックして、通常どおりエミュレータを使用します。

于 2011-04-11T04:24:54.513 に答える
30

この質問を投稿していただきありがとうございます。一部の開発者に役立つ可能性のある追加の洞察があります。

(エミュレータではなく) デバイスでアプリケーションをデバッグしています。デバイスには 21 MB の空き容量があり/data(「adb shell」を実行すると「df」で明らかになります)、私のアプリはわずか 5 MB です。ただし、デバイス上の他のアプリを削除すると (電話を再起動したり、adbd を再起動したりせずに)、INSTALL_FAILED_INSUFFICIENT_STORAGE がしばらく消えてから戻ってくることがわかりました。

そのため、5 MB のアプリをデバッグするには に 20 MB ほどのスペースが必要なようで/data、さらに、アプリをデバッグするたびに何かがリークしていました。

だから私は「adb shell」を実行し、/dataディレクトリ全体を次のようにリストしました

cd /data
ls -a -l -R

そして、5000 行の出力を見て、すべてのスペースがどこに行くのかを確認しました。

デバイスのディレクトリに、何ヶ月も前のデバッグ セッションからの古いログ ファイルの形で大量の無駄なスペースがある/data/klogことを発見しました。

これらは私のログ ファイルではありません。Android インフラストラクチャの一部によって作成されたものです。

私はそれらを削除し、設定アプリで特定のアプリに起因していなかった58 MBを即座に保存しました. 私のデバイスは小さいので、58 MB は非常に重要です (約 40%)。

これまでのところ、何度も実行しても INSTALL_FAILED_INSUFFICIENT_STORAGE を取得していません。OPは彼のデバイスに十分なスペースがあることを示唆していますが、それが本当の問題だったことを願っています(しかし、どれだけかは言いませんでした).

定期的に/data/klog/*.

または、実際に (隠された) スペースの問題が実際にある場合は、少なくともls -a -l -Rinを実行して、すべてのスペースがどこに行くのかを確認できます。/data

于 2011-11-14T18:51:59.837 に答える
29

以下が役に立ちます。

  • デバイスへのシェルを開く

    adb shell
    
  • 着信 APK が最初にコピーされる一時ディレクトリに移動します。

    cd /data/local/tmp
    
  • 利用可能なファイルを一覧表示し、必要に応じて削除します

    rm * // use at your own risk, good practice to list files first
    

これは、これまでのところ、実際のデバイスで信頼できます。


編集:これは、上記のソリューションほど信頼できるソリューションではないことが判明しました。

私はいくつかの解決策を試しました。本当に何も役に立ちませんでした。やっとSDメイドというアプリを見つけました。それは役に立ちました。

ルート化されていないデバイスでは機能が制限されていると書かれています。私は根ざしているので、それらのシナリオで効果的であり、それが私にとってうまくいったのが単なるまぐれであった場合、人々からの話を聞くのは良いことです(とにかく予測不可能な問題です)。

注:私はアプリとは何の関係もありません。検索でたまたま見つけました。

于 2013-01-04T15:28:35.117 に答える
16

アプリケーションのマニフェスト ファイルに追加の行を追加しましたandroid:installLocation="preferExternal"。この行を使用すると、アプリを外部ストレージに強制的にインストールできます。以下の例を参照してください。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nasir.phonegap"
    android:installLocation="preferExternal" >
于 2012-04-06T10:31:22.993 に答える
11

エミュレーターに関連する問題は、/dataパーティションにスペースが残っていない場合です。

例えば、

% adb shell df

Filesystem             Size   Used   Free   Blksize
/dev                   252M    32K   252M   4096
/mnt/asec              252M     0K   252M   4096
/mnt/obb               252M     0K   252M   4096
/system                154M   154M     0K   4096
/data                   64M    57M     6M   4096
/cache                  64M     1M    62M   4096

/data/appディレクトリのサンプル ビューを次に示します。

% adb shell ls -l /data/app

-rw-r--r-- system   system      19949 2011-10-12 17:09 CubeLiveWallpapers.apk
-rw-r--r-- system   system      27670 2011-10-12 17:09 GestureBuilder.apk
-rw-r--r-- system   system      34341 2011-10-12 17:09 SoftKeyboard.apk
-rw-r--r-- system   system      20151 2011-10-12 17:09 WidgetPreview.apk

余分なAPKファイルを削除しました。インストールするたびに、新しい APK ファイルを取得するようです。余分な APK ファイルを削除するだけです。

例えば、

adb shell rm /data/app/com.brooklynmarathon.calendarapi2-1.apk
于 2011-11-12T15:47:53.017 に答える
10

com.android.providers.media私の場合、失敗はアプリが原因でした。x86 Androidエミュレーターでこれに直面しました。私がしたこと:

$ adb shell df
Filesystem             Size   Used   Free   Blksize
...
/data                  224M   209M    14M   4096
....

の空き容量が少なすぎます/data

$ adb shell du /data
...
409870  /data/data/com.android.providers.media
...

ほぼすべてが1つのアプリで消費されました!システムアプリなので削除しない方が良いと思います。代わりに、アプリのデータをクリーンアップしました。

$ adb shell pm clear com.android.providers.media
Success
$ adb shell df
Filesystem             Size   Used   Free   Blksize
...
/data                  224M     8M   215M   4096
...

ディスクがクリアされ、アプリが正常にインストールされました。

于 2014-06-16T14:21:54.487 に答える
8

このトピックの最初の投稿への回答...

症状 : 一部のアプリがインストールされず、空き容量がないと言って、実際には内部ストレージと外部ストレージの両方に十分な空き容量があります!!! 解決策: デフォルトで外部インストールを無効にします。

これでデフォルトで外部インストールを設定します:

adb shell pm set-install-location 2

外部からインストールできない多くのアプリ (adblock + など) でインストールを不可能にします。

次に、解決策は

adb shell pm set-install-location 0

または

adb shell pm set-install-location 1

0: auto (if one is full - or irrelevant !!! - it select the other)
1: internal
2: external
于 2013-03-23T11:20:05.333 に答える
7

これを書くのは少し奇妙に感じますが、場合によってはそれが真実ではないことを100%確信することはできません(私にとってはうまくいきました)。以下の症状がある場合:

  • 物理デバイス (私の場合は Samsung Galaxy Ace) を使用して作業してきましたが、
  • あなたは数日続けて成長してきました。
  • あなたの電話は、昼夜を問わず常に接続されていました。
  • 数日後にこのエラーが発生し始め、悪化し続けました。
  • 他の答えはどれも役に立ちませんでした。
  • あなたは私と同じように辞任しています...

次に、これを試してください:

  • 仕事をしていないときは、電話のプラグを抜いてください。

電話のプラグを抜き、丸一日休ませました。電池が少し減りました。この後、再接続して再度デバッグを開始しました。今回はすべてうまくいきました!そして、以前と同じように、本当に本当に元気です。

このエラーは、バッテリー関連のハードウェアが原因である可能性はありますか? このように考えるのは今でも奇妙に感じますが、今では時々(そして一晩中)電話を切断し続けており、問題は再発しませんでした.

于 2012-06-09T18:16:39.783 に答える
7

私は次のことを試しました:

  • デバイスを再起動しました
  • 以前の APK を削除しました
  • APK を再構築する
  • デバイスで以前のコピーをアンインストールする
  • 再インストール

それがあなたと同じように機能するかどうかを確認してください。

于 2012-01-03T07:22:36.113 に答える
6

この問題はまだ存在するため、開発目的でRacZo の回答に何かを追加すると思いました。Eclipseプラグインを使用していない場合、または何らかの理由でソースがなく、.apk しかない場合は、エミュレーターの起動時に同じオプションを使用して、コマンド ラインからパーティション サイズを増やすことができます。

emulator -avd <emulator name> -partition-size 1024

私の知る限り、このオプションは developer.android.com で文書化されていないため、ここに投稿して、人々がこの解決策を見つけられるようにすると思いました。

于 2012-01-20T17:58:32.430 に答える
5

Samsung Galaxy Aceは、その仕様で 158 MB の内部ストレージを宣伝していますが、コア アプリケーションとサービスはその約 110 MB を消費します (デバイスのタスク マネージャーを使用してこれを調べました)。多くのアセットが含まれていたため、私のアプリは 52 MB でした。それらのいくつかを 45 MB まで削除すると、アプリは問題なくインストールできました。デバイスは、内部ストレージがほぼいっぱいであることをまだ警告しており、アプリを 1 つしかインストールしていないにもかかわらず、いくつかのアプリをアンインストールする必要があります。

リリース バージョンの .apk バンドルをインストールしてからアンインストールした後、私のデバイスには 99 MB の空き容量が表示されるので、結局、デバッグ情報がデバイスを混乱させている可能性があります。Louis Semprini の回答を参照してください。

于 2011-12-01T15:30:44.843 に答える
4

エクリプスでは、

Run -- > Debug Configurations --> Select "target",起動する優先エミュレータ ターゲットを選択します。

次に、その「追加のエミュレータ コマンド ライン オプション」の下に、これを追加します。

-パーティションサイズ 1024

次に、エミュレーターを閉じて、デバッグ アイコンをクリックします。これにより、選択した優先エミュレーターが起動します。

ここに画像の説明を入力

それが役に立てば幸い...!

于 2012-07-17T07:29:24.473 に答える
3

新しい Nexus 4 と Adob​​e AIR でビルドされた APK でこの問題に遭遇しました。マニフェストには既に android:installLocation="preferExternal" がありました。オプション (sdcard などの共有大容量ストレージにパッケージをインストールする)も呼び出しadb installていることに気付きましたが、これはやり過ぎのように思えました。-s

-sフラグを削除するとadb install、問題が修正されました。

于 2013-08-09T18:15:12.497 に答える
3

コマンドラインからエミュレーターからアプリケーションをアンインストールするか、設定に移動してアプリケーションをアンインストールします。これにより、エラーが発生しなくなります。

于 2012-09-12T10:49:33.307 に答える
2

実際のデバイスを使用している場合は、単に内部メモリが不足しています。Androidの設定->アプリケーションに移動し、一部のアプリをSDカードに移動するか、一部のアプリをアンインストールします。

エミュレーターを使用している場合は、RacZoの回答を参照してください。

于 2011-10-05T14:41:15.813 に答える
2

フル ROM アップデート後にADBシェルを使用してSD カードディレクトリに約 50 個のアプリをバッチ インストールしようとしたときに、同じエラーに遭遇しました。

for x in *.apk; do pm install -r $x; done

それらのいくつかはインストールされましたが、多くはエラー INSTALL_FAILED_INSUFFICIENT_STORAGE で失敗しました。失敗したアプリはすべて、名前にスペースが含まれていました。それらの名前をバッチで変更して、再試行しました。今回はすべてうまくいきました。再起動などはしていません。これは皆さんが直面している問題ではないかもしれませんが、これは私が直面したのと同じ問題を探している人を助けるかもしれません.

于 2011-12-29T01:49:01.450 に答える
2

エミュレーターを実行しようとしている間は、Android デバイスを USB に接続しないでください。

于 2012-04-20T12:03:18.800 に答える
2

Sideload Wonder Machine を使用して実際の電話にアプリをインストールする際にこのエラーが発生したため、この質問に遭遇しました。/payload ディレクトリに複数の .apk ファイルがあることが問題であることがわかりました。これはサポートされているものだと思っていましたが、.apk を 1 つ残してすべて削除すると、エラーはなくなりました。

于 2011-04-14T16:57:52.443 に答える
2

エミュレーター ソリューション

ディレクトリを開きます.Android。通常はホーム ディレクトリにあります。次にavd、変更する avd の名前を持つディレクトリに移動して開きます。

ファイルを編集してconfig.ini、次の行を追加するか、次の行を変更します。

disk.dataPartition.size=1024

1024使用したいサイズを MB 単位で指定します。ファイルを保存し、オンにしてエミュレータを起動しwipe user dataます。エミュレーターが新しいサイズになるはずです。

于 2012-02-09T20:02:17.793 に答える
1

解決策は簡単です。

AVD マネージャーを開きます。AVD を編集します。

ハードウェア セクションの下には、右側に「新規...」と「削除」が表示されたいくつかのプロパティがあります。

新規を押します。データ パーティション サイズを選択します。「512MB」に設定します(MBは必須です)。これで完了です。それでも問題が発生する場合は、同じ方法を使用してシステムとキャッシュのパーティションも増やしてください。

ここにすべて文書化されています: http://developer.android.com/guide/developing/devices/managing-avds.html

于 2012-03-16T07:47:46.353 に答える
1

エミュレーターでアプリケーションを実行していて、この問題が続く場合は、通知マネージャーを確認してください。「電話のメモリがいっぱいです」というアイコンと通知が表示される場合は、エミュレータに非常に多くのアプリケーションが既にインストールされていることを意味します。「設定 >> アプリケーションの管理 >> アプリケーションの選択 >> アンインストール」から、現在必要のないいくつかのアプリケーションをアンインストールします。
そのセット。
ここで、プログラムを再実行します。

于 2012-04-23T12:19:21.317 に答える
1

このスレッドで他のすべてを試してみたところ、.apk ファイルへのパスが長すぎることが原因であることがわかりました。だから私は .apk があったディレクトリに cd して、次のようにしました:

cd /Very/Long/Path/To/Package/
adb install mypackage.apk

それ以外の

adb install /Very/Long/Path/To/Package/mypackage.apk

そして、うまくいきました...うまくインストールされました。

これが他の誰かを助けるかもしれないと思っただけです。

于 2013-06-08T00:46:50.567 に答える
1

今日、電話を使用して Eclipse でテスト/デバッグを行っているときに、このエラーが発生しました。

私の間違いは、アプリケーション名にノルウェー語の特殊文字 (「æ」、「ø」、「å」) を使用したことです。アプリ名をリファクタリングしたところ (「ø」ではなく「o」を使用)、アプリは正しくインストールされました。

おそらくあなたの問題ではありませんが、他の人が同じエラーを起こしていることに注意してください。

于 2013-02-16T20:44:56.457 に答える
0

私も同じ問題に直面し、「データの初期化」を実行しましたが、その後は正常に機能しました。

于 2011-05-18T10:24:20.350 に答える
0

私の場合、eclipse.iniの-Xmx768mの値を変更することで、Eclipseの拡張メモリを増やすことで修正されました。

于 2012-02-11T15:43:09.367 に答える
0

デバイスからアプリをアンインストールしてから、Eclipseに再インストールしました。これは、通常の使用でデバイスで常に発生する問題ですが、今日、開発からそのメッセージを受け取りました。

于 2013-05-14T05:07:34.010 に答える
0

携帯電話にルート アクセス権がなく、アプリを SD カードにインストールする準備ができていません。15 MB の空き容量があり/data/、私のアプリケーションは 2 MB 未満です。

しばらくの間、私はやり遂げました。Eclipseプロジェクトをクリーンアップして電話を再起動しましたが、最終的には機能しなくなりました (おそらく更新後)。

アプリケーション キャッシュを消去すると問題が解決し、電話の再起動やアプリのアンインストールは必要ありません。

一度に複数のアプリケーションのキャッシュをクリアするために使用できるアプリケーションが市場に出回っています。「きれい」で検索してください。

于 2011-11-25T11:04:39.410 に答える
-1

少し時間がかかりますが、いずれにしても機能するはずです。

  • Adao Task Managerなどのファイル マネージャーを電話にインストールします。

USB経由で接続し、USBストレージを有効にします。ローカル ビルドから電話にAPKファイルをコピーします (アプリケーション設定で不明なソースを許可する必要がある場合があります)。

次に、APK ファイルをタップするだけで、Androidがそれをインストールします。私が言ったように、それは時間がかかりますが、時々再起動するよりも速いかもしれません.

于 2012-02-04T18:51:43.910 に答える