最初のXPOSEDモジュールを開発する

これ以上面倒なことはせずに、始めましょう。..!

画像2.始めましょう—コーディング

ステップ— 1:AndroidStudioを開きます

Ifお持ちでない場合は、こちらからダウンロードできます:リンク。

ステップ— 2:アクティビティの選択

新しいAndroidStudioプロジェクトを作成します。 (下の画像を参照)
このチュートリアルはシンプルにしています。ステータスバーの時計の色を変更するだけなので、アクティビティを作成する必要はありません。
[アクティビティなし]を選択して、[次へ]に進みます。

画像:新しいプロジェクト—アクティビティの選択

ステップ— 3:プロジェクト構成

画像:プロジェクトの構成

アプリケーションの名前とパッケージ名を指定します。言語をJavaのままにします。Kotlinに精通している場合は、それを使用します。これは一種の「hello-world」アプリ/モジュール開発であるため、ハードコーディングはそれほど多くありません。
最小限のAPIを維持していますレベルを15にします。
次に[完了]ボタンを押します。

ステップ— 4:build.gradle(アプリ)を変更します&以下の依存関係を追加します。

次に、プロジェクトを同期します。

ステップ— 5:manifest.xmlファイルを変更します。

アプリケーションタグ内に以下のメタデータタグを追加します:

名前はxposedmoduleで、値はtrueである必要があります。リソースは空のままにします。次に、xposedminversion(前の手順のAPIバージョン)とxposeddescription(モジュールの非常に短い説明)について同じことを繰り返します。

ステップ— 6:クラスを作成します:

package com.myfirstxposedmodule;
public class MyModule {
}

これは、将来変更するクラスです。

ステップ— 7:xposed_initファイルを作成および変更します:

画像:プロジェクトビュー

ディレクトリビューをプロジェクトビューに変更します。アプリ> src > mainに移動します。メインを右クリックして、新しい>ディレクトリを選択します。
名前を付けます:assets

右クリック最近作成したassetsディレクトリで、新しい>ファイルを選択します。
名前を付けます:xposed_init(ファイルタイプを要求された場合はtextを選択します。)

xposed_initファイル内に、フルネームを追加します私たちのjavaクラスの。つまり、この場合、次のようになります。

com.myfirstxposedmodule.MyModule

これは、Xposedフレームワークがモジュールを識別し、ブート時にロードする方法です。このファイルは、ロードするクラスをフレームワークに通知します。これはログにも表示されます。

ステップ— 8:MyModuleクラスを変更します:

package com.myfirstxposedmodule;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import de.robv.android.xposed.XposedBridge;
public class MyModule implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
}
}

IXposedHookLoadPackageを実装し、上記のようにメソッドhandleLoadPackageを実装します。

それでは、試してみましょう。そのhandleLoadPackageメソッド内にログ関数を配置することにより:

XposedBridge.log("Loaded app: " + lpparam.packageName);

これにより、ロードされたモジュールが出力されます。通常、これらのログは次のファイルに記録されます:/data/data/de.robv.android.exposed.installer/log/debug.log(Xposedインストーラーから簡単にアクセスできます)。

ステップ— 9:コードを実行します:

画像:「アプリ」の実行中にエラーが発生しました

直接実行しようとした場合これをAndroidStudioから実行すると、このエラーが発生します。現在、アクティビティがないため、問題ありません。

とにかく、心配しないでください。解決策があります。実行構成を編集し、起動オプションをデフォルトのアクティビティからなしに変更して、[OK]を選択するだけです。

画像:変更実行構成

ここで、もう一度実行してみます(Windows:Shift + F10)。

デバイスで正常に実行されると、次のようになります。 XposedInstallerアプリのモジュールのリストでこのモジュールを見ることができます。下の画像に示すように、マニフェストファイルに入力した説明テキストも表示されます。

画像:Xposedモジュールリスト

チェックボックスをオンにしてそのモジュールをアクティブにし、デバイスを再起動します。再起動後、Xposed Installerアプリケーションを開き、ログを開きます(パスの上で説明したログファイルを開くこともできます)。次のような行が表示されます。

Xposedモジュールを作成して実行する方法がわかったので、さらに深く掘り下げてステータスバーのコードを確認し、独自の実装をいくつか適用します。

ステップ— 10:ステータスバーのコードを掘り下げる:

ここで、ステータスバー(パッケージ)。ご存知のように、Androidはオープンソースのオペレーティングソースであるため、コードの内部を確認できます。このリンクからAndroidのソースコードをダウンロードできます。 AndroidのバージョンとROMによっては、いくつかの変更がある場合があります。今のところ、私たちは時計のコードを見つけることだけに興味があります。 com.android.systemuiパッケージのどこかにClock.javaクラスがあり、このクラスはTextViewを拡張します。これをTextViewのように扱うことができます。これはそのクラスへのリンクです。 updateClock()という名前のステータスバーの時刻を更新する方法が1つあります。以下のスニペットをご覧ください:

では、何が必要ですか?このメソッドが実行されるたびにコードを実行したいと思います。これは次のステップで行います。これはメソッドのフックとも呼ばれます。

ステップ— 11:メソッドのフック:

XposedHelperは、いくつかのヘルパーメソッドを提供するクラスです。必要なヘルパーメソッドの1つは、クラスローダーであるStringの完全なクラス名を取得するfindAndHookMethodです(

from handleLoadPackage)、追跡するメソッド名(この場合はupdateClockStringおよびXC_MethodHookのコールバック(単なるコールバック)。以下にコードを示します

上記のコードでは、匿名クラスXC_MethodHookに実装した

およびafterHookedMethod。名前が示すように、最初のものはフックされたメソッドの前に実行され、後者はフックされたメソッドの後に実行されます(この場合はupdateClock)。引数と戻り値の型のパラメーターは、MethodHookParam引数によって処理されます。ただし、現時点では、ステータスバーの時計の色を変更するだけで、afterHookedMethodが必要になります。

そのTextViewオブジェクト。param.thisObjectから取得できます—これはthisキーワードと同じになりますClock.javaクラス。次に、それをTextViewにキャストし、そのTextViewオブジェクトの色を変更するだけで、テキストを変更することもできます。 :

ステップ— 12:モジュールを実行します:

コードを実行して、デバイスを再起動します。時計が赤で表示され、追加した絵文字テキストが表示されます。

画像:の色を変更ステータスバーの時計

以上です!!再起動するのは大変だと思います。でもねえ、あなたはあなた自身のXposedモジュールを作成しました、それは素晴らしいことではありませんか?? !!

Leave a Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です