AndroidでSDカードを内部ストレージとして使う(実践)

YAGISHITA,Shigeru
本日もご安全に
10 min readJun 10, 2018

--

内部ストレージが 32GB であることが欠点の AQUOS R Compact の内部ストレージを(取り扱い上)増やすべく、調べた「AndroidでSDカードを内部ストレージとして使う方法」の実践編。

(追記:2019年7月2日)

ここでの実践は Android 8 Oreo の AQUOS R Compact に対して行っています。2019年6月27日に AQUOS R Compact (SHV41) に Android 9 Pie がリリースされました。本エントリーでSDカードを内部ストレージとした AQUOS R Compact に対して、以下のエントリーで Android 9 Pie へのアップデートを実施してみています。

microSDカードを買う

ひとまずは microSDカードを調達。

手持ちのカードの中から適当なものを選ぼうと思っていたら、どうも Adoptable Storage に対応したSDカードの規格 ”Application Performance Class” というものが存在しているらしい。

ということで、念のためA1に対応したmicroSDカードを調達することに。
秋葉原のテクノハウス東映でmicroSDカードを購入。

A1対応の東芝 EXCERIA 256GBを奮発。いろいろな規格マークがところせましとならび、A1のまーくはもうこぼれそうな位置に…。

これを内部ストレージ化します。

Amazon で調べる、と安心して買えそうな(=Amazon.co.jpが販売している) Application Performance Class 1 対応のmicroSDカードはトランセンドのしかなさそうですね。

SDカードの内部ストレージ化までコマンドで行ってしまう方法ではなく、ふさがれている「Adoptable Storage」機能を有効にしてみる

調べた通り

  1. Android ADB シェルを使えるようにする
  2. Android 端末の USBデバックを有効にする
  3. Android 端末と PC を接続してコマンド実行して「Adoptable Storage」機能を有効にする
「設定」→「システム」→「端末情報」→「ビルド番号」複数回タップ→「開発者向けオプション」が表示されるので「開発者向けオプション」に入って「USBデバック」オン。
adb shell sm set-force-adoptable true

そして「SDカードをセットアップする」に進んだものの、

セットアップの通知が表示された場合は、通知のセットアップを選択して、内部ストレージとして使用する選択をしてセットアップする(たぶん)

セットアップの通知が出ない。

セットアップの通知が表示されない場合は、「設定」→「ストレージ」の「SDカード」タップで表示されるファイラー画面の右上メニューから内部ストレージとしてフォーマットする選択をする(たぶん)。

内部ストレージとしてフォーマットする選択も出ない。

もう一度手順を行ってみるも、内部ストレージとしてフォーマットする選択はでない。あえなく失敗。

SDカードの内部ストレージ化までコマンドで行ってしまう

仕方なく、Webで紹介されているスタンダードな方法、ADBシェルコマンドでSDカードを内部ストレージとしてフォーマットする方法をチャレンジ。

Android 端末と PC を接続して以下のコマンドを実行してSDカードを内部ストレージとしてフォーマット。

sm list-disks

の実行結果

disk:179,64

を指定して sm partition コマンドを以下の通り実行。mixed でパーセンテージを指定することで、その割合分が外部ストレージとして扱われるようになるとのことだが、全体を内部ストレージとして扱われるようにしたいので 0 を指定。

sm partition disk:179,64 mixed 0

処理完了。以下の通り無事SDカードが内部共有ストレージとして扱われるように。

カメラアプリ・アルバムでうまくいかない…

ということで、内部共有ストレージとして扱われるようになったので、問題なく動作するかいじっているとカメラアプリで SDカードが刺さっていないというような表示がされていることに気が付く。「アルバム」アプリも同様。

SDカード全容量を内部共有ストレージにすると「アルバム」アプリでこのような表示がされるように…

どうもSDカードが刺さっているにもかかわらず外部ストレージが見つからないため、「おかしい」と判定しているような動作…。

どうやらシャープ製のアプリケーションはSDカードを内部共有ストレージ化に対応していないようです。Adoptable Storage を無効にしているからアプリを対応させていない(する必要がない)のか、アプリが対応できていないから Adoptable Storage を無効にしているのかはわからないですが…。

アルバムアプリはともかく、カメラアプリで表示が常に出てくるのでは使い続けることができないので SDカード全容量を内部共有ストレージとして扱うことは断念…。

SDカードの一部を外部ストレージとして内部共有ストレージ化する

“SDカードが刺さっているにもかかわらず外部ストレージが見つからないため、「おかしい」と判定している”ということが正しければ、SDカードの全容量を内部共有ストレージとするのではなく、一部容量を外部ストレージとすればいいのではないか、と考え、内部共有ストレージ化をやりなおし。

まずは内部共有ストレージ化したSDカードを外部ストレージに。

「設定」→「ストレージ」→「SDカード」、メニューから「外部ストレージとしてフォーマット」で外部ストレージに。

このあと、SDカードを削除してからPCにUSBケーブルで接続してADBシェル起動。sm partition で mixied 13 を指定して実行。

sm partition disk:179,64 mixed 13

これでSDカードのうち13%は外部ストレージに。

端末のストレージのSDカードに物理SDカードの容量が表示され、そのうち外部ストレージとして扱われる分が使われた状態になる(このスクリーンショットはアプリなども動かした後なのでもっと容量が使われている)。そしてその分が外部ストレージのSDカードとして表示される。

カメラアプリもアルバムアプリもおかしな警告は表示はされなくなったのでこれで良しとする。ただ、使っているとほかにも不都合があるかもしれないので自己責任で…。

データの移行

SDカードを内部ストレージとして扱われるようにできたので、データの移行をする。

「設定」→「ストレージ」の端末のストレージのSDカードをタップして、メニューから「データを移行」をタップ。

「データを移行」をタップ
「移動」をタップで移動開始、完了。

アプリの移動

内部ストレージとして扱われるようになったSDカードにアプリを移動。

「設定」→「アプリと通知」→「アプリ情報」からアプリのアプリ情報を表示。アプリ情報の「ストレージ」をタップ。

「ストレージ」に「(内部ストレージ)」と表示されている。ここをタップして「使用されているストレージ」の表示があればSDカードにアプリを移動できる。

「使用されているストレージ」の表示があればSDカードにアプリを移動できるので、ここで「変更」をタップ。

「変更」をタップすると「ストレージの変更」が表示されるので「SDカード」をタップ。移動画面になるので「移動」タップで移動処理が行われる。

「変更」タップで表示される「ストレージの変更」で「SDカード」をタップすると移動画面になるので「移動」タップで移動処理が行われて移動完了。再度アプリ情報を表示すると「使用されているストレージ」が「SDカード」に変わっているのが確認できます。

アプリ情報を確認するとSDカードになっているのが確認できる

容量不安がだいぶ解消。自己責任で…。

これでSDカードを内部ストレージとして扱われるようにできました。

ただ、端末メーカーが Adoptable Storage を無効にしているのはサポートがめんどくさいからだけなのだろうと思っていたのだけが、端末メーカーのアプリが Adoptable Storage が無効になっていることを前提にしているという罠がありました。端末メーカーが無効にしているぐらいなので当然万人にはお勧めできないし、実際挙動がおかしくなるアプリがあったので、そこは覚悟の上で…という結果。

とはいえ、SDカードに移動できないアプリがあるので完全ではないものの、容量不安がだいぶ解消できました。参考になれば…。

--

--

YAGISHITA,Shigeru
本日もご安全に

一応ファイターズファンであるものの札幌移転でFに関係なくパ観戦。小川皓市の小川皓市的こころ。川名コーチ/北見運送/システム開発者/WPF/Windows Phone/中田ヤスタカにやられてる/954深夜/お笑い/赤い電車。精神年齢15でアラフォー。なにしてんだろ。