こんにちは(*・ω・)ノ
今度は別のスマホ向けにcrDroid(v3.8.9)のビルドに挑戦します。
crDroid(v3.8.9)は、Android 7.1.2に相当します。
そしてビルドに使う端末は、よくある海外製の5inchのスマートフォンです。
ビルド方法については過去の記事を参考にして下さい。
crDroid(v3.8.9)のビルド
スペック
スマホのスペックは次の通りです。
CPU:MT6580
Kernel:3.18.19
メモリ:1GB
ストレージ:8GB
経緯
今回、crDroidを選択しようと思った理由は、何と言ってもLineageOSベースのロムということ。それとLib等をポートするときに今までの知識が役立ちそうだからです。
詳しいところまでは理解していませんが、crDroid は LineageOSよりもカスタマイズ性に優れています。
具体的にどういった機能があるのか箇条書きで書くと次のようなものです。
(crDroid v3.8.9の場合です)
<crDroidの拡張機能>
ステータスバーのアイコン変更
クリック設定
ナビゲーションバーの切り替え
ボタンの切り替え
電源メニューの追加
表示、通知、音の設定
起動アニメーションの変更
他
crDroidの設定画面
ビルドの準備
crDroidは以下のものを使わせてもらいました。 https://github.com/seluce/nougat_platform_manifest/tree/nougat-crdroid
早速、レドメに書かれている通りに実行です。 ”$ cd n_asb && bash apply-patches.sh” がとにかく長くて6時間以上かかりました。。。
デバイスとベンダーは以下のもので代用させてもらいました。 https://github.com/seluce/android_device_cubot_note-s https://github.com/seluce/android_vendor_cubot_note-s
ビルド
特にいじることなく、deviceとvendorをそれぞれのフォルダへ入れてビルド開始。
$ . build/envsetup.sh
$ brunch NOTE_S
ビルドを開始してしばらく・・・以下のエラーを排出 (‘д` ;)ナンジャ?
———————————-ERROR ———————————-
[ 37% 12761/33619] build /home/maco2/c…bj/ETC/sepolicy_intermediates/sepolicy
FAILED: /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy
/bin/bash -c “(/home/maco2/crdroid_2/out/host/linux-x86/bin/checkpolicy -M -c 29 -o /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy.tmp /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/policy.conf ) && (/home/maco2/crdroid_2/out/host/linux-x86/bin/checkpolicy -M -c 29 -o /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates//sepolicy.dontaudit /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/policy.conf.dontaudit ) && (/home/maco2/crdroid_2/out/host/linux-x86/bin/sepolicy-analyze /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy.tmp permissive > /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy.permissivedomains ) && (if [ \”userdebug\” = \”user\” -a -s /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy.permissivedomains ]; then echo \”==========\” 1>&2; echo \”ERROR: permissive domains not allowed in user builds\” 1>&2; echo \”List of invalid domains:\” 1>&2; cat /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy.permissivedomains 1>&2; exit 1; fi ) && (mv /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy.tmp /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy )”
libsepol.avtab_write_item: policy version 29 does not support ioctl extendedpermissions rules and one was specified
/home/maco2/crdroid_2/out/host/linux-x86/bin/checkpolicy: error writing /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy.tmp
/home/maco2/crdroid_2/out/host/linux-x86/bin/checkpolicy: loading policy configuration from /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/policy.conf
/home/maco2/crdroid_2/out/host/linux-x86/bin/checkpolicy: policy configuration loaded
/home/maco2/crdroid_2/out/host/linux-x86/bin/checkpolicy: writing binary representation (version 29) to /home/maco2/crdroid_2/out/target/product/NOTE_S/obj/ETC/sepolicy_intermediates/sepolicy.tmp
[ 37% 12761/33619] target thumb C++: init <= system/core/init/init.cpp
ninja: build stopped: subcommand failed.
build/core/ninja.mk:151: recipe for target ‘ninja_wrapper’ failed
make: *** [ninja_wrapper] Error 1
make: Leaving directory ‘/home/maco2/crdroid_2’
#### make failed to build some targets
———————————-ERROR ———————————-
どうやらデバイスのポリシーバージョンが古く?ioctlをサポートしてないらしい。libsepol.avtab_write_item: policy version 29 does not support ioctl extendedpermissions rules and one was specified
ググってみたが、”ロールバックする”、”コメントアウトする”などの解決策が提案されていましたがいまいち分からない。。
別のサイトにはsepolicyのAndroid.mkからioctl_definesとioctl_macrosを削除すればいいという情報があり試してみることにしました。その後、いくつも出る.teエラーの箇所をコメントアウトしていき何とかビルドが完了。 ポートして起動してみましたがロゴでスタックしてしまいました。。。
ログを出力すると以下のエラーを排出。
ibsepol.avtab_read_item: more than one specifier
libsepol.avtab_read: failed on entry 248 of 4859
invalid binary policy policy
<後日追記> 色々調べてみたところ、 どうやらpatchesを当ててなかったことが判明しました! これで先に進めそうです(´・ω・`)
コメント