米中貿易戦争に巻き込まれる
何かと話題のHUAWEI機を買ってしまいました。(というか買った後に話題になりました)
Mate20 Liteです。
この先Googleのサービスが塞がれるのかどうなのか(日本法人は既存の端末については問題ないとアナウンスしていますが)、前回Mate7でSDカードを内部ストレージ化できるAdoptable Storageができた(と思う)ので今回も試してみようと過去記事を参考に挑んでみます。
AndroidのSDカードストレージ化(Adoptive Storage)に挑んでみた
※オチを先にお伝えしておくと、最近のHUAWEI機ではOSレベルでAdoptive Storageが塞がれています。
他にもカスタムOSを使っている機種(ほとんどですが)も塞がれていることがあるようです。
MacでAdoptable Storageに挑む
コマンドライン環境でAndroid SDK managerを導入する
前回はWindows環境だったのですが、今回はMacにて挑戦。
Androidの開発環境のAndroid Studioをインストールせよとのことだったのですが、回線が貧弱だったのと(ファイルサイズが1GB超)、欲しいのはAndroid SDK Managerだけだったので、コマンドラインで挑みます。
Android Studioダウンロードページの下の方に「Command line tools only」という項があり、この中の「SDK tools package」のzipファイルをダウンロードします。
(その前にJava環境が必要なのでJDK(Java Development Kit)もインストールしておきます)
直接ターミナルでコマンドが打てるよう、~/.bash_profileにパスを通します。
vi ~/.bash_profile
export PATH=$PATH:/(解凍先)/androidSDKtools/tools/bin
これでtoolsのなかの
android
をターミナルで実行すると環境ができる、と説明があったのですが、走らせてみると・・・
The “android” command is deprecated.
For manual SDK, AVD, and project management, please use Android Studio.
For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager
変わったようです。
sdkmanager
を走らせなさいとあったので、ターミナルで走らせると・・・
Warning: Failed to download any source lists!
Warning: java.net.SocketException: Software caused connection abort (connect failed)
Warning: File .android/repositories.cfg could not be loaded.
レポジトリがない、と怒られたのでとりあえず作ります。
touch ~/.android/repositories.cfg
再度試すと、
Warning: Failed to download any source lists!
Warning: java.net.SocketException: Software caused connection abort (connect failed)
ソースリストが見つからない、と怒られたままです。
色々調べた結果、Gradleなるものが必要そう?
とりあえずGradleのインストール方法内にあるHomebrewを入れれば色々なパッケージ群が入れられる模様。
指示通り、ターミナルでインストールコマンドを入力します。
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
その後、sdkmanagerを走らせると、怒られなくなりました。
気を取り直して、Android SDKの推奨パッケージ群をインストールします。
sdkmanager “platform-tools” “build-tools;28.0.1” “emulator” “extras;intel;Hardware_Accelerated_Execution_Manager”
(色々ライセンス条項をyes/noで聞かれます)
(もしかしたらadbコマンドのある”platform-tools”だけでも良いのかもしれませんが)
adbコマンドを通すため、また~/.bash_profileにパスを追加。
export PATH=$PATH:/Users/sohei_mbp/Documents/androidSDKtools/platform-tools
ようやく準備ができました。ここから前記事の手順で進んでゆきます。
AndroidのSDカードストレージ化(Adoptive Storage)に挑んでみた¥
Androidの「開発者向けオプション」を有効→USBデバッグモードを有効にする
(最初試した時、下記のエラーが出てしまったので、
error: device unauthorized.
This adb server’s $ADB_VENDOR_KEYS is not set
Try ‘adb kill-server’ if that seems wrong.
USBデバックモードのオンオフや、「表示属性検査」を有効にしてみたり、ケーブルの抜き差し、ケーブルを刺した時のプロンプトにOKをおす、などで解消しました)
adb devices
端末が認識されているか確認し、
adb shell
端末にコマンド送信
sm list-disks
接続されているディスク(ストレージ)のIDが表示されます。
disk:179:384
(私の環境です)
で、これを
sm partition disk:179:384 private
(privateだと全て端末側の領域として、
sm partition disk:179:384 mix 50
だとSDカードの50%を外部ストレージとして利用する設定となります。
これでAdoptive Storege完了!と思いきや・・・
Error: java.lang.IllegalStateException: command ’30 volume partition disk:179:384 mixed 50′ failed with ‘400 30 Command failed’
何回やってもCommand failed。
ここから調べてみると、強制的にAdoptable Storageをオンにするコマンドをshell上から入れてみると・・・
sm set-force-adoptable true
Error: java.lang.IllegalStateException: Adoptable storage not available on device with native FBE
Adoptable storage not available?!
どうもよくよく調べてみると、HUAWEI機のOS(EMUI)はAndroidをベースにした独自OSなので、OSペースでAdoptable Storageが塞がれてしまっている模様・・・Mate7ではできたのに・・・
How to extend storage using SD card space – Pg. 5 | Huawei P8lite
(他社の端末でも塞がれていることもあるようです)
純正AndroidOSのPixel 3aにしておけばよかったのか・・・?!色々な意味で・・・
端末自体はいい端末そうなんですけどね・・・