Flashable ZipがAndroid 7.1 Nougatに非公式のXposedフレームワークをもたらします

数ヶ月の待機の後、ついに(非公式ではありますが)Nougat ROMに対するXposed Frameworkのサポートが得られました。 私たち自身のフォーラムにいる優秀な開発者のおかげで、フラッシュ可能なzipを介してAndroid Nougat ROMにXposed Frameworkをインストールできるようになりました。

これまで、Xposed on Nougatの未来は少し不安定でした。 Xposed Frameworkの開発者であるRovo89は、1週間以上前にAndroid Nougatのサポートに関する更新を提供しました。 Rovo89は基本的に、XposedをNougatで適切に機能させるためにはまだ多くの作業が必要であり、我慢する必要があると述べました。

ありがたいことに、私たちは一時的に対策を待ち望んでいた人々のために一時的な解決策を得たようです。 PurifyOSチームは、開発者abforceが取り組んでいた(そして本日前に投稿された)ARTモジュールを取得し、フラッシュ可能なzipを介して他のカスタムROMにインストールできるように(ROMのコンパイル時に実装する代わりに)適応させました。

現在、Xposed SDK25 ARM64 、Xposed SDK25 ARM 、およびXposed SDK25 x 86を含む、さまざまなプラットフォームで利用可能な3つのバージョンがあります。 PurifyOSチームは、Android 7.1をベースとするOxygenOSを実行するOnePlus 3TでこのXposedの新しいバージョンをテストしましたが、Android Nougatを実行する他の携帯電話で動作するはずであり、ユーザーはすでに別のROMに正常にインストールできると報告していますおよびデバイス。 たとえば、OnePlus 5の数人のユーザーが動作していると報告しています(OnePlus 3Tで正常に動作することを考えると、驚くことではありません)が、Samsung Galaxy S6のAOSPベースのROMを実行しているユーザーも動作すると報告しましたそれら。

一部のユーザーが強制終了やその他の奇妙な問題を経験しているため、これまでのところすべての人がそれを機能させることができなかったので、理解するための癖があります。 ただし、この場合でも、以前のバージョンのAndroid OSがリリースされて以来、XposedがNougatに到着するのを待っていれば、試してみることができます。 既存のすべてのXposed Frameworkモジュールがすぐに動作するわけではありませんが、Amplifyなどの非常に人気のあるモジュールが動作していると報告されています。

デバイスまたはROMがサポートされているかどうかわからない場合は、定期的にバックアップを作成し、スレッドを注意深く読んでから作業を開始してください。 最後に、重複した質問を残す前に「検索」機能を使用してください。 Android Oはすぐそこにくるかもしれませんが、 「決して遅くない方がいい」ということわざにあるように、さらに、多くのユーザーはデバイスでAndroid Oをかなり長い間見ないので、Xposedはあなたが取り残されていると感じないように素敵なおやつ。


更新:Rovo89の応答

Xposed Frameworkの背後で開発された元のシニア認定開発者rovo89は、これらの最近の開発についての考えをGithubで回答しています。

私の経験から、基本を成し遂げるのはそれほど難しいことではないが、詳細を知るのに非常に時間がかかると言うことができます。 80-5ルールと似ていますが、95-5程度です。

以前のリリース用に設計したフックアプローチはかなり安定しており、新しいリリースにも適用できます。 IsProxyMethod()IsDirect()が呼び出されるすべての場所を確認し、新しいメソッド修飾子を考慮するかどうかを決定する(つまり、パラメーターtrue使用するかどうかIsDirect()ために、ほとんどの時間を必要とすると思います。 そうしなかった場合、そのような呼び出しを新たに導入した場所を見逃している可能性があります。 InstallStubsForMethod()などのメソッドについても同様です。これらのメソッドは、フックされたメソッドに対して呼び出された場合でも、元の元のメソッドを操作する必要があります。 これに関連する可能性のある場所をさらに確認する必要があります。 それはまだ数日間の範囲内ですが、それを怠ると、デバッグが非常に困難な不明瞭なクラッシュや誤動作が発生する可能性があります。

それに加えて、完全にゼロからコンパイルされたROMに対してのみフックが適切に機能するアプローチを取りました。 ストックROMや、ほとんどのカスタムROM(ビルド中にポートが含まれていなかったもの)、さらにはデバイスが以前にコンパイルしたアプリの場合も同様です。 そのため、特殊なROMを実行しているデバイスをワイプして、最初からやり直す必要があります。 そうでない場合は、最適化(インライン化など)によってメソッドがまったく呼び出されないため、フックが機能しません。 これに関する最悪の事態は、正確な動作がROMに依存すること、またはユーザーがデバイスをどのように使用するかに依存することです(アプリはプロファイルに基づいてコンパイルされるようになりました)。 モジュールはランダムに失敗し、モジュール開発者は自分が何を間違えたのか疑問に思うでしょう(答え:何もありません)。 すべての前提条件が満たされていない場合、それはかなり信頼性の低いAPIです。 Googleが、ROMをゼロからコンパイルしない限り、ボタンのOnClickListenerが呼び出されないアップデートを公開したと想像してください。個人的には、これは大きな制限です。

彼は続けます:

ポートはROMをゼロから再コンパイルすることのみを目的としているため、これでフラッシュ可能なZIPを公開することはまったく意味がありません

そして、私が恐れていたように、 これが不完全なポートであり、多くの場合APIコントラクトを履行できないという警告はありません 。 ????これは開発者とユーザーにとって悪いことです。彼らは少なくともそれが不完全であることを知って、彼らがそれをサポート/使用したいかどうか判断できるようにするべきです。 大きな太った警告なしに、あえてそのようなことをすることはありません。 実際、私は完璧主義者なので、不完全なバージョンを公開することはまったくありません。信頼性は私にとって非常に重要です。

Gitログを確認したところ、10月に基本的なフック(このポートのように)が準備できました。 それ以来、私は制限を取り除くことに取り組んできました。 プリコンパイル済みのROMで信頼性を高めるために、再コンパイル部分も移植できましたが、それでも理想的ではありません。 上記のどこかで説明したように、フックによって直接影響を受けるメソッドを無効化(および場合によっては再コンパイル)するだけで、すべての最適化を維持できるJITがあります。 コピー&ペーストだけではないため、これは非常に困難です。 そして、これが完了しない限り、何も公開しません。 そのための9か月(今まで)は本当に長い時間でしたが、それは私の暇な時間です。たとえば、新しいアパートに引っ越したために、Xposedで数か月(!)そうでなければ非常に限られた時間しかありませんでした。

これらの最近の開発は皆さんが知っている、愛する本当の「Xposed」ではないことを明確にする必要がありますが、機能的にはAndroid NougatでいくつかのXposed Frameworkモジュールを使用できるようになります。 Xposed Framework for Android Nougatの公式で、より安定した、より互換性のあるバージョンを待たずにあなたを非難しません。今のユーザー。 Xposedが将来処理される方法ではない可能性があります。


フォーラムでNougat用の非公式Xposedフレームワークをダウンロードする