Substratum がどのようにして柔軟性のない TouchWiz にさらなる選択肢をもたらしたか

チーム [projekt.] の Sungstratum は、Substratum を通じて RRO-OMS のすべてのテーマグッズを Samsung Nougat デバイスに提供します。 さらに詳しく知りたい方は続きをお読みください。

Android のテーマは、ハッキングな編集から Substratum まで、長い道のりを経て、現在では サングストラタム. 何年も前、Android の議論で「テーマ」という言葉は頻繁に「選択者」という言葉に取って代わられていました。 Android をテーマにする基礎を築いた CyanogenMod にある T-Mobile Theme Choicer パラダイス。 OS の外観を変更できることにより、ユーザーは別の次元でカスタマイズできるようになり、デバイスをよりパーソナライズする変更を加えることができるようになりました。

優れた取り組みは 2 つの異なる方向に継続されました。 テーマ チューザーは CyanogenMod テーマ エンジンに進化しましたが、テーマ リソースに長年の努力が払われてきたにもかかわらず、CMTE は時代遅れになりました 他の選択肢が現れたとき.


RRO とレイヤー

代替案の 1 つの基礎は、Sony が新しいフレームワークという形でコードを提供したときに築かれました。 ランタイム リソース オーバーレイ (RRO) AOSPに受け入れられました。 このフレームワークは、実行時にアプリケーション リソースを置き換える機能を提供します (これが名前の由来です)。 「オーバーレイ」自体は、Gingerbread (および おそらく以前も)、主にリソースを交換してアプリケーションをその特定の環境で動作させるために使用されます。 デバイス。 RRO に対する Sony のアプローチには、デバイス上に存在する他の対応するリソースにマップされたリソースを使用する APK を受け入れるようにアセット マネージャーを変更することが含まれていました。 APK からのこれらの新しいリソースは、実行時のみベース リソースの上にオーバーレイされ、システムは、これらの新しいリソースが常にシステムの一部であるかのように動作できるようになります。

RRO フレームワークは、Lollipop 5.0 が公開される前に AOSP にマージされましたが、5.0 の最初のいくつかのビルドでは、他の変更によりフレームワークの一部が壊れていました。

Android 6.0 Marshmallow の開発者プレビューは、制限的ではあるものの機能的な RRO フレームワークを初めて追加しました。、Android の標準レベルでカスタマイズ性の扉を開きます。 したがって、OEM が標準の Android テーマ オプションから意図的に逸脱しようとしない限り、特定の 「テーマ」をどのように実装するかというアプローチにおいて、一貫性のレベルを維持できる可能性があります。 アンドロイド。

AOSP が RRO をいじくり回し、それをすべて組み込む最善の方法を検討している間に、開発者のチームが次のように呼びかけました。 ビットサイコ 「」と呼ばれる共同作業に協力しましたレイヤー". Android 5.1 Lollipop のストック RRO 機能を拡張したレイヤーにより、より複雑なリソースの切り替えが可能になり、ストック RRO よりも多くのテーマの要素制御が可能になりました。 レイヤは RRO を基にして構築されているため、すべてのレイヤ テーマが Marshmallow のストック RRO で動作するわけではないため、ROM メーカーは ROM でレイヤ機能を有効にする追加のコードを追加する必要がありました。

一方、ソニーは Android テーマに向けた独自の取り組みを進めました。 取り組み始めたのは、 OMS (オーバーレイ マネージャー サービス)、オーバーレイを管理するためのクライアント。プロバイダーが優先順位を動的に制御し、オーバーレイを有効または無効にできるようにします。 OMS は AOSP に統合され、Android O に組み込まれる予定です. XDA 認定開発者 ニコラシュム Android O が「ダイナミック オーバーレイ」を搭載していることを情報源を通じて確認できました。これは OMS への言及であると考えられています。

従来、そのような機能はテーマの制御下にあったため、OMS はレイヤーとの競合を引き起こしました。 OMS によってもたらされた問題に対処し、レイヤーの機能を拡張するために、BitSyko は再びチームを結成しました (そして、名前を に変更しました) [プロジェクト]) を作成する 基材. Substratum は OMS 機能を備えたクライアントです これは、レイヤー機能と OMS を調和させようとし、他の過去のテーマ ソリューションから他の要素も借用しています。 必要なすべての要素が単一のオーバーレイに注入されるようになったため、個々の要素のテーマを設定するためにオーバーレイが互いに重なり合わなくなりました。 デバイス上でコンパイルするなどの機能により、変更の間に再起動を必要とせずにテーマを適用できるため、 大幅 エンドユーザーがテーマを試したり実験したりすることが容易になります。 Substratum は当初から積極的に開発が進められており、そのすべての機能と機能を列挙しています。 追加された機能についてはこの記事の範囲外となるため、この記事の本当の主題に進みます。 ピース。


サブストラタムからサングストラタムへ

前のセクションで説明したように、Substratum は、ストック OMS 機能とストック RRO 機能を (レイヤーを通じて) 拡張する方法として始まりました。 他のほとんどの OEM は競合する変更を行っていたため、Substratum は AOSP ベースの ROM と併用することを目的としていました。 これでは、サムスンの UX スキンなど、編集された UX スキン上で Substratum が変更を加えたものと共存することはできません。 例。

サムスン自身も、Nougat 上の自社デバイス全体で使用できるテーマ ソリューションの開発に取り組んでいました。 ソニーとは異なり、サムスンはテーマ コードを AOSP に提供することに関心を示しませんでした。 しかし、サムスンのソリューションはかなり基本的なものであったため、AOSP が実際に失うものはそれほど多くありませんでした。 Touchwiz に組み込まれた Samsung のテーマ ソリューションは、Samsung Galaxy S6 で実際に登場しましたが、前述したように、達成できることはかなり制限されていました。 それ以前は、Galaxy Alpha から始まった限定的な実験が行われていましたが、ほとんどのシステム UI 要素はその範囲外でした。 テーマでは、壁紙やアイコンに加えて、たとえばダイヤラー、連絡先、メッセージ、通知領域などのいくつかの Samsung ストック アプリを変更できます。

結局のところ、Samsung のテーマ エンジン 伸びる AOSP にある RRO。 Samsung は、RRO を拡張した後に独自の内部バージョンの OMS も再作成したため、RRO と OMS の両方の実装は AOSP とは異なります。 しかし驚くべきことに、Touchwiz の独自性と複雑さを考慮すると、その程度はそれほど大きくなく、異常な動作です。 新しい Samsung の主力製品を使用しているテーマ者は、RRO オーバーレイをインストールしてサードパーティ アプリケーションのテーマを設定できると報告しました。

これは、チーム [projekt.] が Substratum で Samsung デバイスを正式にサポートすることを検討する必要があるという合図でした。 チームはアプリの RRO/レガシー セクションから少量のコードを変換しましたが、 root を要求して再起動を要求すると、オーバーレイがインストールされるように特定のインテントが起動されます。 次にチームは、テーマによって影響を受けるアプリケーションがバックグラウンドで強制的に閉じられるようにし、次回の起動時に資産が完全に更新されるようにしました。

XDA認定開発者に聞いた ニコラシュム Samsung の RRO-OMS のクローズド ソース実装に対抗する際にチームが直面した課題についての洞察を提供します。

私たちが直面した課題はかなり曖昧で、あまり知識のない多くの人には知られていませんでした。 オープンソースかクローズドソースかにかかわらず、テーマシステムを理解する - すべてには独自のトライアルがあり、 エラーフェーズ。 この場合、Samsung と協力して多くの問題に遭遇しましたが、主な問題はシステムの意図が正しくないことです。 インストールが完了した後にオーバーレイに対して起動されます - ブロードキャスト受信機を利用する場合など 「android.intent.action. PACKAGE_ADDED」 - テーマ サービスは、特定の Samsung のシステム署名の一部ではないものをすべて拒否します。 テーマ サービスの許可を受け取ることができないため、最も難しい部分は、方法を見つけなければならなかった回避策です。 その周り。

私たちが Substratum を Samsung のテーマ エンジンと併用する方法は、Samsung と同じシステムを利用することです。 これらは、Sony の Resource Runtime Overlay システムの高度に修正されたバージョンを使用しており、RRO と略され、Substratum ユーザーの間ではレガシーとして知られています。 ただし、異なる点は、Samsung テーマにはこれらのオーバーレイを設定から非表示にする追加の権限があるため、手動で 1 つずつアンインストールすることができないことです。 同じシステムを使用していますが、AOSP/Sony の実装を利用しているため、Samsung テーマは完全にテーマ フレームワークを実行できます。 サブストラタム オーバーレイは、「fwk」が存在しないメディエーター ターゲットに触れることができません - 誰もが知っているように、フレームワークは単なる「android」パッケージです 名前。

[projekt.] が Samsung の RRO 実装と比較的簡単に連携できたのは奇妙に思えました。 サムスンのデバイスに取り組んだことのある人なら誰でも、サムスンがしばしば物事を作るのがいかに難しいかを証明することができます。 チームが移植中に遭遇した特定のブロックについて問い合わせました。

確かに、少数のユーザーに影響を与える何らかのセキュリティ メカニズムが導入されており、起動時にオーバーレイが元に戻ります。 これは、Samsung のデバイスの起動方法が原因です。 TouchWiz/Samsung Experience ではほとんどすべて 7.0 を使用しているため、「アプリの最適化」という新しい方法を使用しています (携帯電話を更新するとこれを確認できます)。 バックグラウンドでアップグレード中であることを示す Android Nougat アイコンが付いた通知が表示されるため、この方法でアプリを最適化すると、ターゲットもアンロードされます パッケージを削除すると、最終的には起動時に ID マッピング プロセスが中断され (ターゲット パッケージが存在しないため)、そのため、少数の人が、パッケージの実行後にオーバーレイのアンロードを経験します。 リブート。

また、いくつかの Samsung テーマ、特に @envy~ の Dark/Black テーマでもこれが起こっているのがわかります。 [表示] -> [ナビゲーション バー] のデフォルトのナビゲーション バーの色を黒にします。実際のデフォルトの色は次のとおりです。 白。 黒に設定すると、キーボードを開くことができ、ナビゲーション バーは黒のままになります。 これは、多くのデバイスで同様に再起動時にランダムに元に戻ります。

テーマが再び注目を集める中、Substratum は Sungstratum のようなサイド ブランチで今後どのような計画を立てているのでしょうか?

今後、現在のユーザー向けに小さな小さなアプリをアドオンに統合する予定です。 デバイスにインストールされているすべてのテーマが次からインストールされている場合、Samsung テーマ サービスを停止できるようになります。 XDA。 したがって、XDA から Samsung テーマ形式のテーマを使用する人は、アドオンを使用して、 Samsung のサービスでは、再起動するたびに標準のテーマに戻されません (Samsung ストアからインストールされていないため) 正式には)。 Samsung のサイトから入手できる無料の Samsung 開発者キーが必要ですが、sungstratum アドオンのダウンロードに事前にバンドルされています。


AOSP と Android O の最近の変更と今後の変更により、Google のかつて誕生した OS はさらにカスタマイズされてユーザーに引き継がれることになるようです。 一部の OEM は、カスタム ユーザー インターフェイスや UX アドオンの廃止を計画しています。 AOSP を支持しており、Samsung などの他社も独自のテーマ ソリューションを使用して十分近いところにいます。 私たちは、テーマがさらに多くの人々のユーザー エクスペリエンスにおいて重要な役割を果たす未来、つまり OS を想定しています。 デバイスの外観を実際に制御できる場所、ユーザー インターフェイスの美学がユーザーに合わせて調整される場所 あなた。 そして、この素晴らしいコミュニティと Substratum のようなプロジェクトの総合的な力がなければ、私たちはそのような未来に到達することはできなかったでしょう。


Substratum フォーラムで Samsung Nougat の Substratum Integration をチェックしてください。GitHub 上の基盤