備忘録

備忘録

Android Xposedモジュール開発方法

注意

この記事の内容は2017年1月16日時点の物です。
内容が古くなっている場合があります。

Ⅰ はじめに

英語読める人は こちらへ この記事は次のリビジョンを元にしています 77a14d29d04d6c01fa78218cfc04946f64987fd1

Ⅱ 準備物

Ⅲ 開発方法

1. プロジェクト作成

f:id:kagasu:20200423035300p:plain:h200

2. アプリケーション名を決める

f:id:kagasu:20200423035317p:plain

3. プラットフォームを決める

Minimum SDKAndroid 4.0.3(API 15)を選択する。
f:id:kagasu:20200423035330p:plain:h200

4. Activityは追加しない

f:id:kagasu:20200423035341p:plain:h200

5. app/build.gradleを書き換える

f:id:kagasu:20200423035352p:plain

以下のコードをbuild.gradleに追加します。 f:id:kagasu:20200423035358p:plain

repositories {
    jcenter();
}

dependencies {
    provided 'de.robv.android.xposed:api:82'
}

6. AndroidManifest.xmlを書き換える

f:id:kagasu:20200423035405p:plain

以下のコードをAndroidManifest.xmlに追加します。 f:id:kagasu:20200423035410p:plain

<meta-data
    android:name="xposedmodule"
    android:value="true" />
<meta-data
    android:name="xposeddescription"
    android:value="Xposedモジュールの説明" />
<meta-data
    android:name="xposedminversion"
    android:value="53" />

7. 新規クラスの作成

f:id:kagasu:20200423035416p:plain

package net.kagasu.myxposedmodule;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;

public class MyXposedModule implements IXposedHookLoadPackage {
    public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
        XposedBridge.log("Loaded app: " + lpparam.packageName);
    }
}

8. xposed_initファイルの作成

app/src/main/assets/xposed_init ファイルの作成を行って下さい。 f:id:kagasu:20200423035422p:plain

※うまくフォルダの作成ができない場合は、 Tool WindowのProjectの表示形式をProject Filesに変更した後に作業しましょう。
f:id:kagasu:20200423035430p:plain

9. xposed_initにエントリポイントとなるクラス名を書く

net.kagasu.myxposedmodule.MyXposedModule

10. ビルド

プロジェクトをビルドし、Xposedモジュールをロードさせます。 モジュールを追加/変更した後はAndroid端末の再起動を必ず行って下さい。 ※Xposed Installer → フレームワーク → 簡易再起動でも可
f:id:kagasu:20200423035442p:plain:h300

11. 実行結果

Android端末再起動後にXposed Installer → ログで実行結果が確認できます。 f:id:kagasu:20200423035458p:plain:h300

トラブルシューティング

  1. "Session 'app': Error Launching activity" と出る f:id:kagasu:20200423035510p:plain
  2. 今回のサンプルはActivityがないので正常です。

  3. コードを書き換えてもモジュールが更新されない

  4. Android StudioのBuild → Rebuild Projectを実行した後にRun appを実行すると更新されます。 更新した後はAndroid端末の再起動を必ず行って下さい。