Android9 プリインストールデバイスに AOSP11 をインストールしてみた

VANKYO S30というAndroidタブレットにAOSP11（の、有志ビルド）をインストールしてみました。
何点か引っかかるところが合ったのでどなたかの参考になれば幸いです。

※ root化、ROM焼きは brick(文鎮)化する恐れのある操作でメーカ保証対象外です。この記事を読んで何かなさる際はご自身が何をしようとしているか十分に理解されてから実施されることをオススメします。筆者は何ら責任を負いません。

> このガイドは adb, fastboot の基本的な導入方法や使用方法は全て端折ってあります。
このあたりの記事をお探しの方は他を当たった方が良さそうです。 adb, fastboot は基本的にどんなデバイスでも同様です。

## 何はともあれ bootloader oem unlock
ひとまず、 bootloader を unlockせねば始まりません。 
VANKYO S30は unisoc bootloader なのでこのガイドに従います。
https://forum.hovatek.com/thread-32287.html

基本的にこの指示通りやれば良いのですが、Windows環境下においてはTokenの取得で正しい値が表示されませんでした。
そこでこれらの手順においては筆者はLinux Mint上で行いました。

これでbootloader unlockが完了します。

## リカバリーにTWRP....がない！
Android端末のROM焼き、root化で定番のTWRP、なんとVANKYOデバイスは公開がありません。
のでリカバリー領域からTWRPを起動してバックアップやROMを焼くという安全策を講じることが出来ません。
もちろん自前でリカバリ領域用のプログラムを書けば済む話ではなりますが、時間がもったいないのでbrick覚悟でいきなり flashする事にしました。

## fastboot flashする
`fastboot flash` を行います。
その前によしなな img を用意しなければならないのですが、今回はビルドするのも面倒だったので、GSIのCIビルドを使おうかと思ったら何かうまく動かなかったのでAOSPの有志ビルドを使うことにしました。
https://github.com/phhusson/treble_experimentations/releases

ここから img をおとしてきます。この際に、 a/bパーティション用の imgを用意する様に注意します。
treble project対応端末なので、  `system.img` だけあれば十分です。

いよいよ、 fastboot flash system system.img を行います。
しかし・・・。

```powershell
 .\fastboot.exe flash system C:\path\to\system.img
Sending 'system' (1506000 KB)                      FAILED (remote: 'data too large')
fastboot: error: Command failed
```

こんなエラーが返ってきました。これ、インターネット上を雑にググると fastbootのバージョンが古いだの何だのと出てきますが、fastbootのバージョンは最新です。となると、エラーメッセージが言いたいことはそのまんまデータがでかすぎるという事のようにみえます。
そこで、fastbootのヘルプを見てみるとデータの分割転送がサポートされていました。
ので、分割転送を行います。

```powershell
 .\fastboot.exe -S 100M flash system C:\path\to\system.img
Sending sparse 'system' 1/16 (102396 KB)           OKAY [  3.759s]
Writing 'system'                                   OKAY [  3.588s]
Sending sparse 'system' 2/16 (94212 KB)            OKAY [  3.444s]
Writing 'system'                                   OKAY [  3.289s]
Sending sparse 'system' 3/16 (102396 KB)           OKAY [  3.785s]
Writing 'system'                                   OKAY [  3.582s]
Sending sparse 'system' 4/16 (94212 KB)            OKAY [  3.481s]
Writing 'system'                                   OKAY [  3.297s]
Sending sparse 'system' 5/16 (102396 KB)           OKAY [  3.817s]
Writing 'system'                                   OKAY [  3.657s]
Sending sparse 'system' 6/16 (94212 KB)            OKAY [  3.543s]
Writing 'system'                                   OKAY [  3.297s]
Sending sparse 'system' 7/16 (102396 KB)           OKAY [  3.780s]
Writing 'system'                                   OKAY [  3.599s]
Sending sparse 'system' 8/16 (94212 KB)            OKAY [  3.471s]
Writing 'system'                                   OKAY [  3.300s]
Sending sparse 'system' 9/16 (102396 KB)           OKAY [  3.780s]
Writing 'system'                                   OKAY [  3.604s]
Sending sparse 'system' 10/16 (94212 KB)           OKAY [  3.480s]
Writing 'system'                                   OKAY [  3.285s]
Sending sparse 'system' 11/16 (102396 KB)          OKAY [  3.784s]
Writing 'system'                                   OKAY [  3.591s]
Sending sparse 'system' 12/16 (94212 KB)           OKAY [  3.470s]
Writing 'system'                                   OKAY [  3.296s]
Sending sparse 'system' 13/16 (102396 KB)          OKAY [  3.779s]
Writing 'system'                                   OKAY [  3.598s]
Sending sparse 'system' 14/16 (94212 KB)           OKAY [  3.479s]
Writing 'system'                                   OKAY [  3.291s]
Sending sparse 'system' 15/16 (102396 KB)          OKAY [  3.792s]
Writing 'system'                                   OKAY [  3.595s]
Sending sparse 'system' 16/16 (27348 KB)           OKAY [  1.021s]
Writing 'system'                                   OKAY [  1.012s]
Finished. Total time: 108.689s
```

今回はとりあえず100Mずつの転送にしてみました。今度は書き込めたようです。

最後に `fastboot reboot` を行えば終了です。

## おわりに
こんな感じのガイドにまとめてしまうと一瞬で終わるように思いますが、この手順を作るのに三日かかりました。
どなたかの三日間がこの記事によって救われれば幸いです。