AndroidでSDカードを内部ストレージとして使う(実践)
内部ストレージが 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カードを購入。
これを内部ストレージ化します。
Amazon で調べる、と安心して買えそうな(=Amazon.co.jpが販売している) Application Performance Class 1 対応のmicroSDカードはトランセンドのしかなさそうですね。
SDカードの内部ストレージ化までコマンドで行ってしまう方法ではなく、ふさがれている「Adoptable Storage」機能を有効にしてみる
調べた通り
- Android ADB シェルを使えるようにする
- Android 端末の USBデバックを有効にする
- Android 端末と PC を接続してコマンド実行して「Adoptable Storage」機能を有効にする
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カードを内部共有ストレージ化に対応していないようです。Adoptable Storage を無効にしているからアプリを対応させていない(する必要がない)のか、アプリが対応できていないから Adoptable Storage を無効にしているのかはわからないですが…。
アルバムアプリはともかく、カメラアプリで表示が常に出てくるのでは使い続けることができないので 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カードを内部ストレージとして扱われるようにできました。
ただ、端末メーカーが Adoptable Storage を無効にしているのはサポートがめんどくさいからだけなのだろうと思っていたのだけが、端末メーカーのアプリが Adoptable Storage が無効になっていることを前提にしているという罠がありました。端末メーカーが無効にしているぐらいなので当然万人にはお勧めできないし、実際挙動がおかしくなるアプリがあったので、そこは覚悟の上で…という結果。
とはいえ、SDカードに移動できないアプリがあるので完全ではないものの、容量不安がだいぶ解消できました。参考になれば…。