Это руководство предназначено для нативных образов, адаптированных без тега Xposed. Используйте нативный компонент активации Xposed, чтобы избежать проблем контроля рисков, связанных с библиотеками Xposed с открытым исходным кодом.
1. Область применения
Руководство описывает интеграцию предварительного запуска службы Xposed или сопутствующих возможностей в нативные образы, поддерживаемые FoxPhone. Сейчас поддерживаются следующие системы Android:
- AOSP 10
- AOSP 12
Не подключайте одновременно другую библиотеку Xposed Bridge с открытым исходным кодом. Предоставленный AAR использует адаптированное платформой пространство имён API; смешивание с другой Bridge-библиотекой может привести к конфликтам классов, ошибкам загрузки или дополнительным сигналам контроля рисков.
2. Загрузка зависимости интеграции
Скачайте AAR, предоставленный платформой, и сохраните имя файла xposed-bridge-debug.aar:
xposed-bridge-debug.aar 264.87 KB
- Размер файла: 271231 байт (около 264,87 КБ)
- SHA-256:
D9DC538315E875D83357B3986CC27D1F7535BE17D9F3F6E69C2F327C9A23FC98 - Минимальный Android API: 26
3. Интеграция Android-демо
Шаг 1: Создайте Android-проект
- Создайте Android-проект в Android Studio.
- Choose the No Activity template to avoid generating unrelated screen code.
- The example can use Java; when using Kotlin, implement the entry class with the same interfaces.

Шаг 2: Подключите AAR
- Create a
libsdirectory under the App module. - Place
xposed-bridge-debug.aarinapp/libs/. - Reference it with
compileOnlyinapp/build.gradle.ktsso the Bridge implementation is not packaged into the APK again.
dependencies {
compileOnly(files("libs/xposed-bridge-debug.aar"))
}
For projects using the Groovy DSL, configure it in app/build.gradle:
dependencies {
compileOnly files('libs/xposed-bridge-debug.aar')
}
Шаг 3: Настройте точку входа модуля
- Create an
assetsdirectory underapp/src/main/. - Создайте файл без расширения
xposed_init。 - Укажите полное имя одного класса входа в каждой строке. Пример:
com.example.myapplication.Main
The package and class name in xposed_init must exactly match the source code; otherwise the native component cannot find the entry class.
Шаг 4: Реализуйте класс входа
The API package in the AAR is de.robv.android.examed, not the de.robv.android.xposed package commonly used by open-source Xposed libraries. Entry class example:
package com.example.myapplication;
import de.robv.android.examed.IXposedHookLoadPackage;
import de.robv.android.examed.XposedBridge;
import de.robv.android.examed.callbacks.XC_LoadPackage;
public class Main implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam)
throws Throwable {
// 必须先限制目标包,避免在所有应用进程中执行初始化逻辑。
if (!"com.example.target".equals(loadPackageParam.packageName)) {
return;
}
XposedBridge.log("Native Xposed module loaded: "
+ loadPackageParam.packageName);
// 在此处实现经过授权的服务预启或伴随逻辑。
}
}
Replace com.example.target with the actual target application package, and keep business logic limited to authorized applications and scenarios.
Шаг 5: Проверьте структуру проекта
После настройки проект должен содержать как минимум следующие файлы:
app/libs/xposed-bridge-debug.aarapp/src/main/assets/xposed_initapp/src/main/java/.../Main.javaor the corresponding Kotlin fileapp/src/main/AndroidManifest.xmlapp/build.gradle.ktsorapp/build.gradle

Шаг 6: Настройте правила обфускации
Если в release-сборке включены R8 или ProGuard, сохраните класс входа, чтобы его имя не было изменено или удалено:
-keep class com.example.myapplication.Main { *; }
Если вы изменили пакет класса входа, также обновите xposed_init and the obfuscation rules.。
Шаг 7: Соберите и проверьте
- Запустите Gradle Sync и убедитесь, что зависимость AAR разрешается корректно.
- Build the APK and confirm that it contains
assets/xposed_init. - Install the APK on a supported native image instance.
- Enable the module through the FoxPhone native Xposed activation component.
- Launch the target application, check the logs for entry-class output, and verify that the business logic runs only in the target package.
4. Часто задаваемые вопросы
1. Модуль не запускается после установки
Confirm that the instance uses a supported AOSP 10 or AOSP 12 native image, that the module is activated by the native component, and that the fully qualified class name in xposed_init is correct.
2. Интерфейсы Xposed не найдены при компиляции
Check that the AAR is in app/libs/, verify the path in the Gradle file, and confirm that the de.robv.android.examed namespace is imported.
3. Release-пакет устанавливается, но точка входа не выполняется
Check whether R8 or ProGuard changed or removed the entry class, and verify that the obfuscation rules match xposed_init.
4. Во время выполнения появляются дублирующиеся классы или конфликт Bridge
Remove other Xposed Bridge dependencies and confirm that the platform AAR is added with compileOnly and is not packaged into the APK twice.
5. Модуль влияет на приложение, не являющееся целью
Filter by packageName at the very start of the entry method and return immediately for non-target processes.