web-dev-qa-db-ja.com

Androidアプリに割り当てられた内部ストレージに最大サイズはありますか?

すべてのアプリケーションデータ(設定に似たもの)を含むjsonファイルを保存したいのですが、アプリがこのファイルを使用できない場合はおそらく機能しないため、制限サイズはわかりません。この情報は事前に知られており、OSはアプリ用のスペースを確保するか、利用可能なサイズに基づきます。

更新:デバイスで常に使用できるわけではなく、変更できるため(SDカード)、 これを使用して内部ストレージ を確認できたため、外部ストレージについてはあまり気にしません、デバイスの内部ストレージにメモリサイズが割り当てられているかどうかを知りたいのですが?

37
Jimmy

JSONファイルの場所として Environment.getExternalStorageDirectory() (またはAPIレベル8以上の場合は Context.getExternalFilesDir() )を使用すると、外部ストレージ(通常はSDカード)の使用可能なスペースによってサイズが制限されると考えています。ほとんどのデバイスでは、Androidに外部ファイルストレージの固定制限は組み込まれていません。内部ストレージは別の問題です。デバイスメーカーは、おそらく100MBの共有制限を課すことができますすべてのアプリケーション間で。)

更新: Android 2. (セクション7.6.1)の互換性の定義によると、デバイスにはかなりのメモリが必要です。

デバイスの実装には、ユーザーデータ用に少なくとも150MBの不揮発性ストレージが必要です。つまり、/ dataパーティションは少なくとも150MBでなければなりません。

上記の要件を超えて、デバイスの実装には、ユーザーデータ用に少なくとも1GBの不揮発性ストレージが必要です(SHOULD)。このより高い要件は、Androidの将来のバージョンでハードミニマムになる予定です。デバイスの実装は、現在これらの要件を満たすことを強くお勧めします。そうしないと、Androidの将来のバージョンとの互換性がない可能性があります。

このスペースはすべてのアプリケーションで共有されるため、いっぱいになる可能性があります。各アプリで利用可能な保証最小ストレージはありません。 (このような保証された最小値は、最小値よりも多く保存する必要があるアプリにとっては価値がなく、保存量が少ないアプリにとっては無駄になります。)

Edit:から Android 4. の互換性定義] ==

デバイスの実装には、ユーザーデータ用に少なくとも350MBの不揮発性ストレージが必要です。つまり、/ dataパーティションは少なくとも350MBでなければなりません。

Android 4. の互換性定義] =

デバイスの実装には、ユーザーデータ用に少なくとも512MBの不揮発性ストレージが必要です。つまり、/ dataパーティションは少なくとも512MBでなければなりません。

興味深いことに、実装が少なくとも1GBを提供すべきであるという推奨事項は変わりません。

41
Ted Hopp

私はそれが単一のアプリケーションを制限するのを目撃したことがなく、以前にアプリのファイルディレクトリにかなり大きな(200 mb)ビデオファイルを保存してテストしました。

内部ストレージについては、すべてのアプリケーションが共有できる内部ストレージの量によって制限されると思います。 @Ted Hoppが述べたように、これは一部の古いデバイスや低価格のデバイスではかなり小さいものです。しかし、より新しいハイエンドのデバイスでは、デバイスが十分なスペースを持っている場合でも、他のアプリケーションによって占有される可能性がありますが、合理的な量までそれをバンプし始めています(したがって、このシナリオ)。

また、SDカードなどの外部ストレージを使用する場合、jsonファイルはユーザーが技術的に編集できることに注意してください。彼らはそれをテキストエディタで開き、望むなら生の値を変更し始めることができました。 (これは、内部ストレージの使用を選択した場合も可能ですが、ルート化されたデバイスが必要になりますが、SDカードに格納されている場合はルート化は必要ありません)

したがって、ユーザーが手動で編集するオプションを持たないようにする情報を保存している場合は、それを考慮に入れることができます。

17
FoamyGuy

約3.61GBのハード制限があると思います。

現在、タブにtermuxがインストールされています。 Termuxは、nodejsとnpmをインストールできるLinuxターミナルを実行します。これにより、基本的に開発環境が作成されます。デバイスの内部メモリが非常に少ない場合を除いて、スペース関連の問題をあまり起こさずにパッケージをインストールしました。しかし、最近のように。私はその限界に達したと思うので、この質問に至り、このページに行きました。

私のデバイスのストレージは1GBをはるかに超えており、この問題なしで200MBのスペースで使用しました。しかし、termuxのインストールは3.61GBに成長しました。私は最近、糸で始めましたが、糸は宇宙豚のようです。パッケージをインストールしていて、突然ログに記録されました:error Could not write file "/data/data/com.termux/files/home/dev/ide/theia/yarn-error.log": "ENOSPC: no space left on deviceそれで、それはインストールを押しつぶし、本当にスペースが足りないと思ったが、そうではなかった。さらなる検査により、私はまだ内部ストレージに前述のスペースがあり、ヤーンは750MBを占有していることを示しています。そのうちnpmはキャッシュで約500MBしかありません。それ以来、npmを使用していますが、Theiaのインストールがnpmではうまくいかなかったため、単に糸を使用する必要がありました。 Theiaは、糸をパッケージマネージャーとして使用しているようです。したがって、3.61GBは、アプリとデータのハード制限であることを示唆しています。

いくつかのパッケージを削除し、他の冗長パッケージが使用するスペースを削減すると、ファイルを作成してインストールするスペースが得られますが、3.61GBに達するとすぐに!!!ブーム!!!それだけです。もうファイルを作成できません。

これは十分に文書化されているとは思わないが、それは起こっている。

Lollipop(Android 5.1)を使用しています

これを主張するには、他の誰かが、内部のサンドボックスに非常に大きなファイルを作成するアプリを使用することを試みる必要があります。内部ストレージではなく、プライベートデータ領域にあります。このハードリミットに達する可能性が高いと確信しています。

1
Emmanuel Mahuni

少なくとも特定のデバイスでは、/ sdcard/Android/data /にアプリごとに約3.5 GBの上限があります。これは、公式のAndroidエミュレーターに対してGoogleが提供する画像にも適用されます。特定のAndroid =多くの画像、ビデオ、音声データをダウンロードするUnityでビルドされたアプリ。前述の場所にあるフォルダーが約3.5 GBになったときに毎回発生します。これを修正する空き容量はありません。ただし、この動作は。