isai VL LGV31 / isai FL LGL24 向け ROM のビルド方法

isai VL LGV31 / isai FL LGL24 向けの Android 7.1 Nougat ROM を公開しましたのエントリで公開した ROM のビルド方法についてのメモです。(まだ作成中)

基本的には、こちらのブログで公開されている記事「ResurrectionRemix-M のビルド方法」に従えばビルドできます。

私は Ubuntu Linux 15.04 を VirtualBOX 上で使っています。

まずは公式サポートされているデバイス向けにビルドを試してみて、うまくいったのを確認してから isai ROMのビルドをすると良いでしょう。

isai 向けに必要な設定

まずメインツリーとは別にデバイスツリーやカーネルソースコードをチェックアウトする必要がありますので、そのためのmanifest設定を行います。

前述の紹介記事の「3-1-b. 非公式なデバイスツリーなら存在する場合」に相当する手順です。

ResurrectionRemixをチェックアウトするディレクトリの.repo/local_manifests/以下に次のような内容のファイルを用意します。
<? version="1.0" encoding="UTF-8"?> <manifest> <project name="LineageOS/android_kernel_lge_g3" path="kernel/lge/g3" remote="github" /> <project name="LineageOS/android_device_qcom_common" path="device/qcom/common" remote="github" /> <project name="bb-qq/android_kernel_lge_g3-kddi" path="kernel/lge/g3-kddi" remote="github" /> <project name="bb-qq/proprietary_vendor_lge" path="vendor/lge" remote="github" /> <project name="bb-qq/android_device_lge_g3-common" path="device/lge/g3-common" remote="github" /> <project name="bb-qq/android_device_lge_g3-kddi-common" path="device/lge/g3-kddi-common" remote="github" /> <project name="bb-qq/android_device_lge_v31" path="device/lge/v31" remote="github" /> <project name="LineageOS/android_packages_apps_FlipFlap" path="packages/apps/FlipFlap" remote="github" /> <project name="LineageOS/android_packages_resources_devicesettings" path="packages/resources/devicesettings" remote="github" /> </manifest>

ビルド

特別なことは特にいりません。

source build/envsetup.sh
brunch v31

コメント

  1. お疲れさまです。
    どこをどやったのかわかりませんが、
    brunch vs985
    は通るようになりました!ありがとうございます。
    だけど
    brunch l24
    が通りません、
    https://github.com/bb-qq/android_device_lge_l24
    ここと、
    https://github.com/LineageOS/android_device_lge_vs985
    ここの中身に違いがあるのが原因なのでしょうか?

    l24のときにはこんなエラーが出ます
    ninja: error: '/home/t/rr/out/target/product/l24/obj/SHARED_LIBRARIES/libmdmdetect_intermediates/export_includes', needed by '/home/t/rr/out/target/product/l24/obj/SHARED_LIBRARIES/gps.msm8974_intermediates/import_includes', missing and no known rule to make it

    返信削除
    返信
    1. すみません、LGL24 向けの変更の一部をコミットし忘れていました。下記の変更でうまくいくと思いますので、試してみて貰えますでしょうか。

      https://github.com/bb-qq/proprietary_vendor_lge/commit/4d2d10f97ea4c429a328ad54bc74eab70f3b98b5

      削除
    2. すごい!おかげさまで7%まで進むことが出来ました。
      そのあと、こんなエラーがでて止まりましたが、これはどういう事でしょうか?


      Makefile:130: ターゲット 'sub-make' のレシピで失敗しました
      make: *** [sub-make] エラー 2
      make: ディレクトリ '/home/t/rr/kernel/lge/g3-kddi' から出ます
      [ 7% 2615/34112] host C++: llvm-tblgen <= external/llvm/utils/TableGen/CodeGenRegisters.cpp
      [ 7% 2615/34112] target Java: telephony-common (/home/t/rr/out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates/classes)
      注意:一部の入力ファイルは非推奨のAPIを使用またはオーバーライドしています。
      注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。
      注意:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。
      注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
      [ 7% 2615/34112] target Java: icu4j (/home/t/rr/out/target/common/obj/JAVA_LIBRARIES/icu4j_intermediates/classes)
      注意:一部の入力ファイルは非推奨のAPIを使用またはオーバーライドしています。
      注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。
      注意:external/icu/icu4j/main/classes/core/src/com/ibm/icu/impl/Relation.javaの操作は、未チェックまたは安全ではありません。
      注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
      ninja: build stopped: subcommand failed.
      build/core/ninja.mk:151: ターゲット 'ninja_wrapper' のレシピで失敗しました
      make: *** [ninja_wrapper] エラー 1
      make: ディレクトリ '/home/t/rr' から出ます

      削除
    3. CC arch/arm/kernel/hw_breakpoint.o
      CC arch/arm/mach-msm/perf_event_msm_krait_l2.o
      TIMEC kernel/timeconst.h
      Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /home/t/rr/kernel/lge/g3-kddi/kernel/timeconst.pl line 373.
      /home/t/rr/kernel/lge/g3-kddi/kernel/Makefile:129: ターゲット 'kernel/timeconst.h' のレシピで失敗しました
      make[2]: *** [kernel/timeconst.h] エラー 255
      /home/t/rr/kernel/lge/g3-kddi/Makefile:950: ターゲット 'kernel' のレシピで失敗しました
      make[1]: *** [kernel] エラー 2
      make[1]: *** 未完了のジョブを待っています....
      CC arch/arm/mach-msm/krait-scm.o
      CC arch/arm/mach-msm/perf_debug.o

      削除
    4. 検索してみたところ、Ubuntu 16.04のPerlにソースが対応できてないようですね。(Ubuntu 15では問題ない模様)
      https://lkml.org/lkml/2012/11/18/159

      こちらの変更をcherry-pickしてpushしてみました。
      https://github.com/LineageOS/android_kernel_lge_g3/commit/526a26556b9069238ea7eecb9095cc672daef0e5#diff-cd1948aaf5421243c5e86456a9fd540c

      一つ上のエラーはよく分からなかったです。Javaのバージョンが新しすぎるとかかもしれません。

      削除
    5. ありがとうございます。そこを直すと一気に69%まで進みました!

      このようなエラーでとまりましたが、なんと言ってるのでしょうか?

      FAILED: /bin/bash -c "(/home/t/rr/out/host/linux-x86/bin/mkbootimg --kernel /home/t/rr/out/target/product/l24/kernel --ramdisk /home/t/rr/out/target/product/l24/ramdisk-recovery.img --cmdline \"console=none androidboot.hardware=g3 user_debug=31 msm_rtb.filter=0x0 buildvariant=userdebug\" --base 0x00000000 --pagesize 2048 --dt /home/t/rr/out/target/product/l24/dt.img --os_version 7.1.2 --os_patch_level 2017-08-05 --kernel_offset 0x0008000 --ramdisk_offset 0x2000000 --output /home/t/rr/out/target/product/l24/recovery.img --id > /home/t/rr/out/target/product/l24/recovery.id ) && (size=\$(for i in /home/t/rr/out/target/product/l24/recovery.img; do stat --format \"%s\" \"\$i\" | tr -d '\\n'; echo +; done; echo 0); total=\$(( \$( echo \"\$size\" ) )); printname=\$(echo -n \" /home/t/rr/out/target/product/l24/recovery.img\" | tr \" \" +); img_blocksize=135168; twoblocks=\$((img_blocksize * 2)); onepct=\$(((((17301504 / 100) - 1) / img_blocksize + 1) * img_blocksize)); reserve=\$((twoblocks > onepct ? twoblocks : onepct)); maxsize=\$((17301504 - reserve)); echo \"\$printname maxsize=\$maxsize blocksize=\$img_blocksize total=\$total reserve=\$reserve\"; if [ \"\$total\" -gt \"\$maxsize\" ]; then echo \"error: \$printname too large (\$total > [17301504 - \$reserve])\"; false; elif [ \"\$total\" -gt \$((maxsize - 32768)) ]; then echo \"WARNING: \$printname approaching size limit (\$total now; limit \$maxsize)\"; fi ) && (/home/t/rr/out/host/linux-x86/bin/mkbootimg --kernel /home/t/rr/out/target/product/l24/kernel --ramdisk /home/t/rr/out/target/product/l24/ramdisk-recovery.img --cmdline \"console=none androidboot.hardware=g3 user_debug=31 msm_rtb.filter=0x0 buildvariant=userdebug\" --base 0x00000000 --pagesize 2048 --dt /home/t/rr/out/target/product/l24/dt.img --kernel_offset 0x0008000 --ramdisk_offset 0x2000000 --dt /home/t/rr/out/target/product/l24/dt.img --output /home/t/rr/out/target/product/l24/recovery.img ) && (device/lge/g3-common/bump/bump.py /home/t/rr/out/target/product/l24/recovery.img /home/t/rr/out/target/product/l24/recovery.img ) && (echo -e \"Made recovery image: /home/t/rr/out/target/product/l24/recovery.img\" )"
      +/home/t/rr/out/target/product/l24/recovery.img maxsize=17031168 blocksize=135168 total=18944000 reserve=270336
      error: +/home/t/rr/out/target/product/l24/recovery.img too large (18944000 > [17301504 - 270336])
      [ 69% 21962/31562] Install: /home/t/rr/out/target/product/l24/system/etc/init/dumpstate.rc
      [ 69% 21962/31562] Install: /home/t/rr/out/target/product/l24/system/etc/init/drmserver.rc
      [ 69% 21962/31562] Install: /home/t/rr/out/target/product/l24/system/etc/init/init-debug.rc
      ninja: build stopped: subcommand failed.
      build/core/ninja.mk:151: ターゲット 'ninja_wrapper' のレシピで失敗しました
      make: *** [ninja_wrapper] エラー 1
      make: ディレクトリ '/home/t/rr' から出ます

      #### make failed to build some targets (02:18:14 (hh:mm:ss)) ####

      削除
    6. そういえばリカバリイメージはサイズがオーバーしてしまうので手元のビルドではスキップさせているのでした。。。

      手っ取り早く対処するには下記のリカバリイメージのサイズ指定を適当に増やしてみて下さい。(不正なイメージができてしまうので、コミットはしないつもりです。)
      https://github.com/bb-qq/android_device_lge_g3-kddi-common/blob/286a1df3c717a8e7ef04e90bb81a12bf17b46e79/BoardConfigCommon.mk#L42

      削除
    7. ビルド手順の公開ありがとうございます。ubuntu16.04ですが、プロプラバイナリまでメンテいただけているおかげもあり、ビルドはすんなり通りました(リカバリはサイズ増でごまかしました)。
      文鎮化すると復旧が面倒そうな気がしたので、まだ焼いてませんが。電源オフから直接リカバリモード起動させたりできると気楽でいいのですけどね。

      削除
    8. あ、ビルドしたのは24じゃなくて31です。

      削除
    9. ビルド報告ありがとうございます。

      せっかくなので、リカバリ領域の直接起動方法をダウンロード&インストール解説のページに追記しておきました。

      削除
    10. で、でっ、出来ましたっ!!なんとかビルドが通りました。
      ほんとうに、この嬉しさをなんと伝えて良いのか。
      おかげさまです!
      どうして良いのか検索しても全くわからず途方に暮れていたところでしたが、助けてくださったおかげでここまで辿りつけました。ありがとうございます!自分には意味が分からない文字の羅列でしたが、僕のパソコンを見ているわけじゃないのにまるで天の神様のような的確なbb_qq様の指示に従って出来たおかげです、さぞかし面倒くさい事だっただろうと思います。
      なんだか変な文章になりましたが、すこしでも嬉しさと感謝の気持を伝えることができたら嬉しいです。

      削除
    11. 早速焼いてみました。が、あれ?失敗したのかな。
      白い画面でISAIのロゴが出た後すぐに黒い画面になって
      [720]fastboot mode started
      [810]--reset--
      [810]--portcharge--
      [920]fastboot:processing comands
      となって固まってしまいました。。

      ベースバンドも匿名さん達がやってるようにlgl24用のを入れたかったのですがやり方わからなくて。lgv31用のをいれてromを焼いた後、twrpでバックアップしてたmodemをrestoreしたのがいけなかったのか、もういちどチャレンジしてみます。

      削除
    12. 同じ手順でbb_qq様のromを焼いてみると起動しましたので、自分のビルドしたromがなにか、どこかおかしいようです。。うーん

      削除
    13. リカバリ直接起動の方法のご教授ありがとうございます。factory resetはそれこそbrickしそうな雰囲気だったのでやってなかったのですが、まさかそこから起動できたとは。。
      その流れでビルドしたROMを焼いてみましたが、無事に起動しました。

      以下、気になった点を挙げておきます。
      ・ROM焼き進行中に"E:unknown command [log]"と2回出力されます。twrpでSDに吐いたログの該当箇所では"E:Cannot load volume /misc!"と出ていました。updater-scriptを少し覗いたけど何が起こっているのかよくわかりませんでした。公開されたROMでも同様の現象が発生します。他の方の環境でも発生しているでしょうか?
      ・isaiロゴ画面が1分近く続きヒヤヒヤしました(笑)
      ・(コミットしていないだけかもしれませんが)ビルドしたROMでは輝度調整できませんでした。

      削除
    14. うごいた!動きました!ついに自分でビルドしたものが動作いたしました。ありがとうございます。
      つぎはソースのどこを変更すればどこがカスタマイズ出来るのか?というところを探ってみようと思っています。どこか参考に出来るものが有ると良いんですが。

      coosee>
       ぼくも同じようにunknown command と出ましたよ。

      あとは、少し前からmagiskが動作がおかしくなっています。スーパーユーザーという項目を選択すると、magisk managerが繰り返し停止しています。バージョンはv13.3です。みなさんもそうでしょうか?

      削除
    15. みつけた!
      https://github.com/ResurrectionRemix/android_packages_services_Telephony/commit/bd8866c7700b61b74d77db25a8a0de98600c35f7
      むかしのはなしですが、このときの変更で、lteの飛んでいない場所でのcdmaへの切り替えが上手く行っていたのでした。どういう意味なのかは僕には分かりませんが・・。。

      削除
    16. あれ?これカメラが反転表示されるなぁ。cooseeさんもそうですか?

      削除
    17. unknown commandは確かに出てますね・・・ 実害はなさそうなので時間のあるときにでも調べてみますが、直し方分かったら教えて下さい。

      magiskはもともとCTSチェックは通ったこと無いですが、それ以外は今でも手元で正常に動作しています。

      輝度調整はコミット漏れですのでPushしておきました。
      https://github.com/bb-qq/android_device_lge_g3-kddi-common/commit/7ada30ef7bef0b3000a943e262d70694de943d7c

      カメラ反転はおそらくg3-commonがフォークしたものでは無くオリジナルの物になっていると思います。以下の変更が必要です。
      https://github.com/bb-qq/android_device_lge_g3-common/commit/58af7a39b25a724d5c378e4c3f4f85b064e36f9d

      CDMAの対策は、これでうまく動くようなら私のROMにも反映させておこうと思います。

      削除
    18. 遅ればせながら輝度調整できることを確認しました。コミットありがとうございます。
      カメラは皆さんが言われているように反転していたので、CAMERA_SENSOR_ORIENTETION_REVERSEを有効にしてビルドして、/system/lib/hw/camera.msm8974.so を差し替えたら反転が直りました。

      削除
    19. カメラの反転は、bb_qq様の教えていただいた
      device/lge/g3-common/camera/CameraWrapper.cpp
      の中身を確認してみたところ、もう既に

      + int ret = gVendorModule->get_camera_info(camera_id, info);
      +#ifdef CAMERA_SENSOR_ORIENTETION_REVERSE
      + if (camera_id == CAMERA_FACING_BACK) {
      + info->orientation = 270;
      + }
      +#endif
      + return ret;

      このようになっておりましたので、もしかしたら反転の原因は違うところなのかなぁ、考えておりましたところ。

      cooseeさんの、
      > 「CAMERA_SENSOR_ORIENTETION_REVERSEを有効にしてビルドして、」

      この書き込みを見て、う〜んと考え。もしかしたら!と
      CameraWrapper.cppふぁいるの先頭に

      #define CAMERA_SENSOR_ORIENTETION_REVERSE 0

      この一文を付け加えてみたところうまく反転がなおりました!

      あと、
      > /system/lib/hw/camera.msm8974.so を差し替えたら反転が直りました。

      このファイルは、どのファイルと差し替えたらよかったですか?

      削除
    20. > この ROM 自体は LGL24 も VoLTE 設定でビルドされています。もし、VoLTE 非対応の回線を利用しているのであれば、SMS over IMS を無効にするために
      persist.radio.calls.on.ims=0
      persist.ims.volte=false
      persist.dbg.volte_avail_ovr=0
      等に書き換えてみると良いかもしれません。

      volte設定じゃないやり方でビルドしてみようと思います。
      これはどのファイルの中身を変更すればよいですか?

      削除
    21. >トシローさん

      >あと、
      >> /system/lib/hw/camera.msm8974.so を差し替えたら反転が直りました。
      >
      >このファイルは、どのファイルと差し替えたらよかったですか
      out/target/product/v31/system/lib/hw/camera.msm8974.so ですよ。
      ただ、ROMを焼き直すのが面倒だったから差し替えたので、
      丸ごと焼き直したのなら、特にやる必要はありません。

      削除
    22. >トシローさん

      volteの話の方は、たぶんbuild.propじゃないでしょうか。

      削除
    23. カメラの件もこちら側の問題でしたね・・・ 失礼しました。下記コミットで修正したつもりです。(ひとまずビルドが通ることだけ確認しました)
      https://github.com/bb-qq/android_device_lge_g3-kddi-common/commit/24525021117511b625ebdb39989035586639c854

      VoLTEの件はbuild.propであってますが、効果があるかは大分怪しいです。

      削除
    24. cooseeさま素早い返信ありがとうございます。
      カメラの件じっくり考えてようやくわかりました!
      ソースを変更してビルドをかけて、パソコン上に出来上がったcamera.msm8974.so
      をandroid端末のrootフォルダにある同名ファイルと差し替えるのですね。
      しかしこのファイルを差し替えるのだと、よくみつけたものですねぇ!すごい。
      そして、僕は
      #define CAMERA_SENSOR_ORIENTETION_REVERSE 0
      だなんてへんてこなことをしていたのですね。
      よくわかりませんが、
      BoardConfigCommon.mk
      ファイルの中の
      BOARD_GLOBAL_CFLAGS += -DCAMERA_SENSOR_ORIENTETION_REVERSE
      という記述が同じような意味なのでしょうか。

      bb_qqさま
      カメラの件そのようにandroid_device_lge_g3-kddi-common
      にあるファイルを変更してビルドしますと、カメラの反転がなおっていました!自分の#define CAMERA_SENSOR_ORIENTETION_REVERSE 0
      というのは削除しておきました。


      そして、build.propというのをいくら探してもoutフォルダにしか見つかりませんでしたが、このoutフォルダというのは、ソースをビルド後にできるものなので、いまから非volte設定(又はvolte設定)でビルドかけよう!と思った時にいじるソース部分ではないのでしょうか?
      そしてそして、出来上がってたbuild.propなんですけども。
      ぼくのbuild.propには
      こういった項目
      persist.radio.calls.on.ims=0
      persist.ims.volte=false
      persist.dbg.volte_avail_ovr=0
      がなかったのですが、
      僕は、またチンプンカンプンなことをやってしまってるのでしょうか?

      削除
    25. あれ?あれ?
      8月29日に自分でビルドしたROM(カメラの反転を#defineで直してみたver.)ではデータ通信におかしいところはなかったのに、
      9月2日に自分でビルドしたROM(カメラの反転をbb_qqさまの通りにBoardConfigCommon.mk で直してみたver.)を焼いてみると。今日、自宅のWi-Fiから離れてみて、気がついたのですけどLTEとか3Gとかのデータ通信が出来なくなっていました!通話はできてます。
      ビルドする前にsyncをしたからかなぁ?本家のソースになにか変更があったのかな。

      みなさんのところのROMもおかしい動作をしていたりしますか?

      ファイルの差し替え等はおこなっておりません。29日と2日のビルドしたromの差は、”いちどsyncし直して#defineの修正”を行ったのみです。

      削除
    26. いちおう僕がデータ通信出来なかったromをアップしておきます。

      https://mega.nz/#!tDIgHQAY!IApwV5JlqeGdVeTgLHX9fTYpcG1USMym6aMCm1-0Vno

      もしよかったら、bb_qqさまに9月からの最新romをビルドしてみてもらえませんか?僕の端末に焼いてデータ通信ができるかやってみたいとおもいます。

      削除
    27. 先ほどrepo syncし直してビルドした ROM を公開しました。特にデータ通信等に異常は無かったです。一度 out ディレクトリを削除してみてはどうでしょうか。

      削除
    28. さすがです!bb_qq様のROMではなんの問題もなくデータ通信が出来ました。ありがとうございます!
      いつもはoutフォルダをきれいにするために、make cleanしてからビルドしているので大丈夫だと思ったのですが、念の為今回もう一度cacheも削除してビルドしてみました。
      次のような手順です。

      make clean
      prebuilts/sdk/tools/jack-admin kill-server
      ccache -cCz
      repo sync -j8 -f --force-sync --no-clone-bundle
      . build/envsetup.sh
      brunch l24 2>&1 | tee rr_$(date '+%Y%m%d_%H-%M-%S').log

      これで出来上がったROMは、やはりデータ通信ができませんでした(T_T)
      僕のパソコンのソースは、repo sync -force-sync してもbb_qq様のソースとは同じにならないのでしょうか??

      manifestはこの記事の上にあるように設定してあります。

      削除
  2. Stainless Steel Blade with Polished Titanium Bmx Frame
    Stainless steel Blade with Polished Titanium Bmx Frame - Steel-Blade Frame Our stainless steel blade-plated steel iron titanium token razor gives head titanium tennis racket the titanium bolts knurled edge an 바카라 even $9.99 · ‎In titanium straightener stock

    返信削除

コメントを投稿

このブログの人気の投稿

国産キャリア版Xperia 1 (802SO) のbootloaderをunlockしてrootを取得する

Synology ds918+ に 2.5Gbps / 5Gbps の USB LAN を接続する

Xperia 1 (802SO) のrootを何も失わずに取得する