Nexus 7(2012)が余っているので、AndroidのカスタムROMをインストールしてみました。
手順としては他のAndroid機種でも大体同じなので、試してみたい人はどうぞ。
なんでこんな古いタブレットをまだ使っているかというと、Androidアプリの実機テスト用です。
パワフルな最新機種で早く動くアプリを作るのは簡単です。
しかし古い(非力な)機種でもある程度の早さで動くアプリを作るには、アルゴリズムやデータ構造の工夫が必要です。
そうゆうテストをするために敢えて古い機種を残しています。
今回はXDAのフォーラムで紹介されているAOSP 7.xをインストールします。
1. TWRPのインストール
まずはRecovery
と呼ばれるプログラムを書き換える必要があります。
Recovery
は何をするかというと、Androidをリセットするときに元の初期状態に戻すためのプログラムです。
いくつか有名なリカバリーソフトがありますが、TWRP
が一番有名なのでこれを使いましょう。
Nexus 7の電源ボタン
と下ボリュームボタン
を同時押しして、bootloaderモードに入ります。
PCとUSBケーブルで接続して、fastboot
コマンドで確認してみましょう。
$ fastboot devices
015d15b4d927e80e fastboot
初めての人は、OEMをロックを解除する必要があります。
$ fastboot oem unlock
OEMロックを解除したら、製品保証対象外になるよ
と脅してきますが無視してYes
。
2012年製なので、もはや保証も何もないw
TWRPを下記からダウンロードしてきます。
(Asus Nexus 7 2012 WiFi) twrp-3.6.1_9-0-grouper.img
(Asus Nexus 7 2012 3G) Download twrp-3.6.1_9-0-tilapia.img
ちなみに他の機種のRecoveryを探すには、「製品のモデル名 + TWRP」で探せば大概見つかります。(多くの場合はXDAというサイトで見つかります)
では書き換えましょう。
$ fastboot flash recovery twrp-3.6.1_9-0-grouper.img
Sending 'recovery' (10836 KB) OKAY [ 1.356s]
Writing 'recovery' OKAY [ 2.194s]
Finished. Total time: 3.615s
もしこのときにFAILED (remote: '(InvalidSize)')
とか表示されたら、違うバージョンのRecoveryを探しましょう。
TWRPならほぼ問題ないとは思います。
(どうしても見つからない場合は、recovery領域のパーティションサイズを変更して、ddコマンドで書き換える方法もありますが、この記事では省略します)
Sending 'recovery' (12832 KB) OKAY [ 0.509s]
Writing 'recovery' FAILED (remote: '(InvalidSize)')
ちゃんと書き換えできていれば、TWRPが表示されるはずです。
2. OSのインストール
AOSPのカスタムROMを探してきて、ダウンロードします。
(Asus Nexus 7 2012 WiFi) aosp_grouper-7.1.2-ota-20220311.eng.ds.zip
(Asus Nexus 7 2012 3G) aosp_tilapia-7.1.2-ota-20220311.eng.ds.zip
インストール方法は2つあります。
-
/sdcard/
に転送して、TWRPからインストール -
adb sideloader
を使用してインストール
今回は1番を試しましょう。
$ adb push aosp_grouper-7.1.2-ota-20220311.eng.ds.zip /sdcard/
aosp_grouper-7.1.2-ota-20220311.eng.ds.zip: 1 file pushed, 0 skipped. 1.3 MB/s (222437777 bytes in 166.948s)
転送が終わったら、インストールします。
[Install] → aosp_grouper-7.1.2-ota-20220311.eng.ds.zip
を選択。
無事にインストールが完了すれば、このようになります。
ここで一旦[Reboot] -> [Recovery]
で、再起動して、もう一度Recoveryモードに入ります。
3. Open GAppsのインストール
AOSP版のAndroid ROMには、Google Play StoreなどのGoogle Appsが入っていません。
この場合、Google Play Servicesを利用しているようなアプリ(ほぼ大半のアプリ)が動きません。
なのでインストールします。
まずは/sdcard/
に転送します。
$ adb push open_gapps-arm-7.1-pico-20220215.zip /sdcard/
open_gapps-arm-7.1-pico-20220215.zip: 1 file pushed, 0 skipped. 1.3 MB/s (190611834 bytes in 141.555s)
続いて、gapps-config-grouper.txt
(またはgapps-config-tilapia.txt
)というファイル名で、インストールするGAppsを指定します。
# try it this way
Include
Core
calsync
# stock removals -- these would work
# Browser
CMAccount
CMUpdater
CMSetupWizard
Email
ExchangeStock
Hexo
# (Eleven)
# this doesn't work. may not need anyway if we skip 26MB GoogleTTS
# +PicoTTS
# -GoogleTTS
# maybe move fonts to /sdcard ? 38MB
# or in a pinch remove NotoSansCJK -- 18MB
これも/sdcard/
に転送します。
$ adb push gapps-config-grouper.txt /sdcard/
あとはInstall
からインストールを行えば良いはずです。
起動前にWipe -> Format Data
からデータ領域をフォーマットしておきます。
4. ようやく起動!
Googleのロゴが5分くらい表示されたら、セットアップウィザードが表示されます。
もしかしたらGoogle Frameworkがクラッシュを繰り返すかもしれません。何回かのクラッシュした後は普通にセットアップ可能です。(そうゆう場合は、TWRPに戻ってWipe
すると良いです)
5. AndroidWebViewを更新する
AOSP 7.xに入っているWebViewはバージョンが古いので、最近のJS frameworkが動きません。このためGoogleアカウントでログインが出来ないという問題が発生します。
そこでWebViewを更新します。Android 7のリリースされた頃のAPKをダウンロードする必要があるため、少し古いバージョンのAPKを利用します。
$ adb root
$ adb remount
$ adb install -r com.google.android.webview_70.0.3538.27-353802700_minAPI21(armeabi-v7a)(nodpi)_apkmirror.com.apk
6.使用感はどう?
2012年製のタブレットということで、さすがに現代のスマホに比べるとちょっともたつき感がありますが、Developer Options
でアニメーションをOffにすると、そこそこ使えます。
GPUを使うようなアプリは駄目ですね。Webサイトを見るくらいなら使えます。
まぁ「低スペックAndroidの検証用デバイス」なので、アプリの動作検証をするくらいには丁度よいです。