概要

  • Nexus 6 用 ROM をソースから Build する方法
  • たまに自作 ROM で遊びたくなるのでメモ

詳細

  • ビルド番号の確認
    Factory Image からビルド番号を確認しておく
    →7.1.1 の最終は N6F27M

  • branch の確認
    Build Numbers で N627M を探すと android-7.1.1_r55 が branch 名

  • ソースの取得

    repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.1_r55
    repo sync -j8
    
  • Proprietary なバイナリの取得
    ここ で N6F27M を探して取得

    wget https://dl.google.com/dl/android/aosp/broadcom-shamu-n6f27m-f127d01b.tgz
    wget https://dl.google.com/dl/android/aosp/moto-shamu-n6f27m-4596dbc2.tgz
    wget https://dl.google.com/dl/android/aosp/qcom-shamu-n6f27m-308c6363.tgz
    
  • これらを解凍

    tar zxvf broadcom-shamu-n6f27m-f127d01b.tgz
    tar zxvf moto-shamu-n6f27m-4596dbc2.tgz
    tar zxvf qcom-shamu-n6f27m-308c6363.tgz
    
  • 解凍された Shell Script を実行し、色々読んで
    “I ACCEPT” を入力

    ./extract-broadcom-shamu.sh
    ./extract-moto-shamu.sh
    ./extract-qcom-shamu.sh
    
  • WebView の設定

  • Build

    source build/envsetup.sh
    lunch full_shamu-userdebug
    make -j8
    make -j8 otapackage
    
  • メモリが足らずエラーになることがある

    Try increasing heap size with java option '-Xmx<size>'
    

    というエラーが出る場合は、
    ここを参考に

    export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
    out/host/linux-x86/bin/jack-admin kill-server
    out/host/linux-x86/bin/jack-admin start-server
    

    としてから make する

  • TWRP を落とす ここ の Download Links: から twrp-3.3.1-0-shamu.img を落とす

  • Google apps を落とす
    Oen GAPPS で、ARM, 7.1, stock を選択して、open_gapps-arm-7.1-stock-2019xxxx.zip を落とす

  • Magisk と Magisk Manager を落とす(SuperSU より Root hide が使えるのが良い)
    GitHub
    XDA Forum
    Magisk-v19.4.zip と MagiskManager-v7.3.4.apk

  • 焼く

    adb push out/target/product/shamu/full_shamu-ota-eng.xxxxx.zip /sdcard/
    adb push open_gapps-arm-7.1-stock-2019xxxx.zip /sdcard/
    adb push Magisk-v19.4.zip /sdcaard/
    adb reboot recovery
    

    Push して、TWRP で起動して以下を焼く。gapps を入れたら Magisk も入れないと起動できなくなる。

  • 焼いた後、permission を grant する必要あり

    adb push fix_open_gapps_permissions.sh /sdcard/
    adb shell
    su
    cd /sdcarad/
    sh fix_open_gapps_permissions.sh
    

まとめ

  • 端末からいくつか binary を抜く必要はあるが、ソースからビルドして端末上で動かすことができた
  • これで色々試せる。位置偽装とか。