どうも、こっとんです。
「LineageOSって良いんだけどシンプルすぎるんだよなあ……」
LineageOSをビルドしてしばらく使っていると結構不満点が出てきました。そこで思いついたのが「Xposed」。
Xposedとは、システム周りのカスタマイズが簡単にできる素晴らしい仕組み(機能)です。モジュールと呼ばれるアプリを追加するだけで使うができ、有効無効もアンインストールすら簡単でなので僕もよく使っていました。
しかし、Android 7.x系はまだXposedを導入することができません(2017/4/13現在)。なので、僕は多機能系のカスタムROMで代用することにしました。
というのも、実はこの機種にXposedを導入するとスクロール時にカクカクして使い物にならなくなったりします(僕個人の感想であり個人差あります)。
cm13にXposedを導入して確かめました。色々試しましたが、モジュールが入っていない初期の状態でもカクカクでした。
正直SC-03DにXposedは力不足感が否めませんので、今後導入できる状況になったとしてもやめといたほうが良いと思います。どうしても使いたいモジュールがあるなら別ですが、使い心地の悪化にかなりガッガリするでしょう。
「Resurrection Remix」は、使ってみるとわかると思いますが、Xposed導入時のようにカスタマイズできて、かつカクカクすることはない(LineageOSと体感は同じくらい)のでかなりオススメです。
有名なXposedモジュールである「GravityBox」以上にカスタマイズできます。
そういえば以前GravityBoxの有料版を購入したんですが、最近は使ってませんね……
ROMの使用感など僕の感想ですが、Xposedでできることは一通り揃っています。というかカスタマイズできる項目が多すぎて把握しきれてません。
日本語にもほぼ対応していて、LineageOS(CyanogenMod)と変わらないくらいしっかり翻訳されているのもポイント高いです。
また、初期設定だとスクロールがやたらとヌルヌルしますが、慣れるとこっちの方いい感じになりました。もちろんスクロールもカスタマイズできますよ。
という訳で今回は多機能系カスタムROMである「Resurrection Remix」の最新版を導入する手順を書いてみました。
目次
SC-03D用Resurrection Remixのビルド
早速ビルドしていきましょう。と言ってもやることはLineageOSのビルドとほとんど変わらないので一度ビルド出来た方なら簡単だと思います。
・local_manifestはLineageOSと同じ
・やることも同じ
・違うのはrepo
・Magiskは機能しないので削除
ソースコードのダウンロード
まずはホームディレクトリに作業フォルダを作ります。名前は何でもOKなのでとりあえず「rr」にしました。
repoを使ってリポジトリ一覧を取得
「rr」フォルダに移動し、repoを使ってリポジトリ一覧を取得します。
repo init -u https://github.com/ResurrectionRemix/platform_manifest.git -b nougat
local_manifest.xmlの作成
LineageOSと中身は同じです。
「rr」内の「/.repo」フォルダに移動します。
[右クリック] – [ドキュメントの生成] – [空のファイル]で新しいファイルを作成します。
名前を「local_manifest.xml」にしましょう。
local_manifest.xmlを編集します。そのままダブルクリックで開いてしまうとOfficeが起動してしまったので、[右クリック] – [テキストエディタで開く]から開きます。
以下をコピペして保存してください。
<?xml version="1.0" encoding="UTF-8"?> <manifest> <!-- LineageOS --> <project name="LineageOS/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-14.1" /> <project name="LineageOS/android_device_samsung_qcom-common" path="device/samsung/qcom-common" remote="github" revision="cm-14.1" /> <project name="LineageOS/android_external_stlport" path="external/stlport" remote="github" revision="cm-14.1" /> <project name="LineageOS/android_packages_resources_devicesettings" path="packages/resources/devicesettings" remote="github" revision="cm-14.1" /> <!-- celox --> <project name="bryan2894/android_hardware_qcom_audio" path="hardware/qcom/audio-caf/msm8660" remote="github" revision="cm-14.1-caf-8660" /> <project name="bryan2894/android_hardware_qcom_media" path="hardware/qcom/media-caf/msm8660" remote="github" revision="cm-14.1-caf-8660" /> <project name="bryan2894/android_hardware_qcom_display" path="hardware/qcom/display-caf/msm8660" remote="github" revision="cm-14.1-caf-8660" /> <!-- celoxdcm --> <project name="cotton8487/android_device_samsung_msm8660-common" path="device/samsung/msm8660-common" remote="github" revision="cm-14.1-celoxdcm" /> <project name="cotton8487/android_kernel_samsung_msm8660-common" path="kernel/samsung/msm8660-common" remote="github" revision="cm-14.1-celoxdcm" /> <project name="cotton8487/android_device_samsung_celox" path="device/samsung/celox" remote="github" revision="cm-14.1-celoxdcm" /> <project name="cotton8487/proprietary_vendor_samsung_celox" path="vendor/samsung/celox" remote="github" revision="cm-14.1-celoxdcm" /> </manifest>
ソースコードの同期
ソースコードをダウンロードします。以下を実行します。
repo sync -f --force-sync --no-clone-bundle
初回起動時のデフォルト言語を「日本」に
「build/target/product/full_base.mk」 をテキストエディタで開いて、
大体26行目~
PRODUCT_LOCALES := en_US
を
に変更します。simカードを挿入している場合はそもそも自動で日本になるっぽいですが一応設定しておきます。
Magiskの削除
【2017/06/08】Magiskはenvsetup.shを読み込んだ際に同梱するかどうか選択できるようになりました。
以下は古い情報です。
Resurrection Remixには標準でMagiskが同梱されていますが、SC-03Dでは機能しなかったのでMagiskを削除します。一応Magisk hideを無効にするとroot権限の取得はできるようですが、それではMagiskの意味がないので削除することにします。
以下の手順を行ってください。2箇所修正します。
「vendor/cm」に移動します。
以下を端末で順番に実行します。
git remote add FIXED_REPO https://github.com/cotton8487/android_vendor_resurrection
git fetch FIXED_REPO
git cherry-pick 2795c7fef9bf63365e959f0b4a49ec58295f40de
「build」に移動します。
同様に実行します。
git remote add FIXED_REPO https://github.com/cotton8487/android_build
git fetch FIXED_REPO
git cherry-pick 2b50bae369ccb618c1d38d6762a9a9737edb8fe5
これでMagiskが削除されます。もしも失敗する場合は以下を参考にしてください。
https://github.com/cotton8487/android_build/commit/2b50bae369ccb618c1d38d6762a9a9737edb8fe5
ビルド
端末で「rr」フォルダにいるか確認します。
以下を実行し、ビルド用のコマンドセットを読み込みます。
source build/envsetup.sh
すると、ビルドタイプを聞かれます。
僕は「2」の「Unofficial」を選択しました。
Magiskを同梱するか聞かれます。デフォルトだと非rootが選択されていますが、local_manifestでソースコードを読み込んでいるのでこれを選んでもrootedです。
次に更新履歴を何日前まで入れるのか聞かれます。
デフォルトの「7」を選択しました。一週間分ですね。しばらく待ちましょう。
完了後、以下を実行してビルド開始です。
brunch lineage_celox-userdebug 2>&1 | tee build_$(date '+%Y%m%d_%H-%M-%S').log
ccacheも効いているので1時間ちょっとでビルドが終わりました。
あとはいつも通り転送して焼くだけですね。
Magiskが内蔵されいていたのでSUは不要です。焼くのはROMとGAppsのみでOKでした。
root化については開発者向けオプションでONにできますが、各自お好みでSuperSUなど焼いてもOKです。
起動画面
まとめ
いかがだったでしょうか。一度ビルドが成功しているなら簡単な作業でした。他のカスタムROMもビルドできるんじゃ……と思いましたが、上手く出来ませんでした。一応cm(LineageOS)ベースならできるっぽいですが、色々とビルド情報など弄る必要があるみたいでよくわからないので諦めました。Resurrection Remixはリポジトリを見ると結構LineageOSに依存している部分があるので、何も弄らなくてもビルドが可能でした。今後変わる可能性はありますが、その時はその時で。
ここまで読んでいただきありがとうございました。
参考・参照
GitHub – ResurrectionRemix/platform_manifest: Resurrection Remix Android Manifest
コメント
初めましてzazenboと申します。貴方様のブログ?を拝見しましてRRのビルドにチャレンジしたのですが起動はするのですがセットアップウィザードエラーで前に進みません。勉強知識経験不足の為、何かヒントをと思いメール致しました。尚、lineageは使えています。
コメントありがとうございます。こっとんです。
>起動はするのですがセットアップウィザードエラーで前に進みません。
おそらくFull Wipeは行っていると思います。TWRP、GAppsはどちらも最新版を使用されているでしょうか?
TWRPは3.1.0-0、GAppsはopengappsから最新版をダウンロード、RRは最新のビルドを焼いて確認したところ、Wifi、アカウント設定後、新規端末としてホーム画面まで進むことを確認しました。
RRが4/15にバージョンアップ(5.8.2→5.8.3、それに伴いAndroid 7.1.1→7.1.2)しているので古いGAppsを使用した場合、セットアップウィザードが途中で進まなくなる可能性があります。
またTWRPが古い場合(拾ってきたものをそのまま使っている等)、variant.propによる機種判別が機能せず端末情報が「unknown」になるので、こちらが原因の可能性もあります。
ご返信ありがとうございます。書いてらっしゃる通り原因は古いGappsでした。大変お騒がせしました。貴重な情報をありがとうございました。
はじめまして
参考になる情報いろいろ拝見させていただいております。
Z00Aに2017/06/15officialビルドのRRを導入したのですが、enable rootはどうしたらいいのでしょうか。ググってみてもデフォルトでenable rootだという情報ばかりで。
開発者OPのルートアクセスは無効/ADBのみで、appは出てきません。
コメントありがとうございます。こっとんです。
>enable rootはどうしたらいいのでしょうか。
https://download.lineageos.org/extras
より、x86用のzipをダウンロードし、TWRPでFlashして下さい。起動後、開発者向けオプションでONにできると思います。
もしくは、「SuperSU」を使いたい場合は、こちらをTWRPでFlashして下さい。
https://drive.google.com/open?id=0B2DVhZKJ05fLdTB0UWltbEV0cWc
ここからは補足になりますが、
https://infinitus-rom.com/download/
よりダウンロードできるZ00A用Resurrection RemixのROMは、「RR-official」と「RR」の2つあります(ファイル名は同じなので注意)。
「RR-official」の方は、Magiskが同梱されています。こちらはroot権限取得時に起動できないアプリ(主にゲーム)を起動したい人向けのビルドです。
「RR」の方は非root状態(rootless)でビルドされています。こちらのビルドでroot権限を取得する場合は追加でSUをFlashする必要があります。
はじめまして、記事の情報をいろいろ参考にさせてもらってます。Resurrection Remixを以前使ってあり気に入っていたので、Xperia XZ Premium(G8142)にもResurrection Remixを焼こうと思ったのですが現在ROMが見つからなかったので自分でビルドしようと思い記事を参考に初めて挑戦してます。初挑戦の自分でもわかりやすく、非常にありがたいです。
一つ聞きたいのですが端末が違う場合local_manifests.xmlはこの記事とは異なる内容になりますか?
端末が異なる場合、他に変えるべき点はありますでしょうか?
コメントありがとうございます。
Resurrection RemixはLineageOSのソースを利用しているのでまずはLineageOSのビルドから始めるのをオススメします。
しかし、Xperia XZ Premium(maple)はざっとXDAを見たところ、LineageOSのソースが存在しないため相当な難易度になるかと思われます。
AOSPやCarbonROM(恐らくAOSPの派生)のソースなら確認できたので、それとLineageOSのソースを引っ張ってきて自分でマージして新たにソースを作る、という大変な作業を行う必要がありそうです。
僕が紹介している方法は、すでに完成しているソースをビルドしているだけですので、一からソースを作るとなるとそれなりの知識が必要になると考えられます。
>端末が違う場合local_manifests.xmlはこの記事とは異なる内容になりますか?
はい。ビルドしたい端末用のリポジトリを追加するためのファイルです。「lineage(cm).dependencies」に必要なリポジトリが書いてあるので参照してみて下さい。LineageOS公式がサポートしていない端末だとリポジトリが足りないので、有志が作成したリポジトリをlocal_manifests.xmlに記述し補完しています。
ビルドに関してはこのブログでも解説していますが、こちらも参照してみて下さい。
LineageOS 15.1 のビルド方法 | dev:mordiford
素晴らしい記事をありがとうございます。この記事のおかげで、ずっと眠っていたSC-03Dの再利用を、もう一度やってみようと思い立ちました。(一度断念したことが笑)
早速作業を行っていましたが、ビルド途中で以下のエラーになってしまうので、お知恵を拝借いただけないでしょうか。
ERROR: /home/user/rr/packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java:4300: The method eraseMiniThumb(long) is undefined for the type MiniThumbFile
MediaProvider.javaのソースコードを見ると、エラーが出ているのは、すべてeraseMiniThumbメソッドにIDを渡している点でした。
「import android.media.MiniThumbFile;」しているので、MiniThumbFileを探したところ、「rr/frameworks/base/media/java/android/media/MiniThumbFile.java」を見つけました。
このソースの中には、確かにeraseMiniThumbメソッド自体がありませんでした。
エラーの原因までは分かったのですが、どうすればeraseMiniThumbメソッドが定義されているソースを探して、取ってこれるように変更すればいいのかわかりません(汗)
ご教授願えないでしょうか。(repoを使うのでしょうが・・・)
以下フィードバックです。
※LineageOSの記事の手順側はビルドを通せました。まだ焼く作業はしてません。
※TWRPのビルドは、「local_manifest.xml」でremove-projectを追記したものだとエラーになってしまいました。(取り消し線で消しているremove-projectがないほうだとビルドが通りましたので、公式で修正されたのかも?未確認)
※「local_manifest.xml」は、「.repo/local_manifestsディレクトリ」に入れるようにしたほうが警告が出なくて良い気がします。
コメントありがとうございます。
とりあえずandroid_packages_providers_MediaProviderのcommitを取り消してビルドできました。応急処置です。
方法
1. rr/packages/providers/MediaProvider に移動、端末を開く
2. git log でcommitログを確認
3. 今回は2月のcommitまで戻るので、そのハッシュ値「b13328b6b9c62123ec9d5dcd3ae99537cd629c94」をコピー(qで終了)
4. git reset –hard b13328b6b9c62123ec9d5dcd3ae99537cd629c94 を実行(ハイフンは2つ連続です。なぜかコメントに反映されませんでした。git reset ハイフンハイフンhard ~)
5. git log でcommitが取り消さているか確認
6. 忘れずにmake cleanしてビルド
TWRPについてはそのままでもビルドできました。platform_manifest_twrp_omniの方でnative-cafが削除されているのでlocal_manifest修正前、修正後どちらでもOKかと思われます。
>「local_manifest.xml」は、「.repo/local_manifestsディレクトリ」に入れるようにしたほうが警告が出なくて良い気がします。
以前まで警告は出なかったので、特に意識していませんでした。確かにそちらの方がスマートですね。ありがとうございます。
すっかりgitリポジトリだということが頭から抜け落ちてました。お恥ずかしい(汗)
普通にgit操作でローカルを変更するだけでよかったんですね。
以下の操作で無事ビルドが通り、RRをROMに焼くところまで確認できました。
1. rr/packages/providers/MediaProvider に移動、端末を開く
2. githubでcommitログを確認
https://github.com/LineageOS/android_packages_providers_MediaProvider/commits/cm-14.1
3. b13328bよりも一つ手前に8381d51があったのでそちらを採用しました。
※Bug:37957260の対応っぽいので残しました。(バグの内容は確認してません)
eraseMiniThumbメソッドの呼び出しは71218caのチェリーピックで他のコミットから取ってきた修正のマージでしたので、たぶんこの71218caのコミットがクソコミットなんだと思います。
4. git reset –hard 8381d513b0b0631f9720950ce02c307636bef2fb を実行。
ハイフンハイフンはlinuxでよくあるパラメータ指定で、パラメータ正式名は「–」、省略名は「-」になるケースが多いみたいです。
5. git log でcommitが取り消さているか確認。対象のMediaProvider.javaの内容にeraseMiniThumbメソッドの呼び出しがないことを確認。
6. 忘れずにmake cleanしてビルド
※TWRPのビルドの件を再度確認しました。
これは、正確にはビルドではなく、「remove-projectがあると、source build/envsetup.sh」がこける・・・でした。
あ。ハイフンが反映されないって、このブログのコメント欄のことでしたか(汗)
無事に成功してよかったです。貴重な情報ありがとうございました。