Este guia se destina a imagens nativas adaptadas sem a tag Xposed. Use o componente nativo de ativação do Xposed para evitar problemas de controle de risco causados por bibliotecas Xposed de código aberto.
1. Escopo
Use este guia para integrar o pré-carregamento do serviço Xposed ou recursos complementares nas imagens nativas compatíveis com a FoxPhone. Sistemas Android atualmente suportados:
- AOSP 10
- AOSP 12
Não adicione outra dependência Xposed Bridge de código aberto ao mesmo tempo. O AAR fornecido usa o namespace de API adaptado pela plataforma; misturar outra biblioteca Bridge pode causar conflitos de classes, falhas de carregamento ou sinais adicionais de controle de risco.
2. Baixar a dependência de integração
Baixe o AAR fornecido pela plataforma e mantenha o nome do arquivo como xposed-bridge-debug.aar:
xposed-bridge-debug.aar 264.87 KB
- Tamanho do arquivo: 271231 bytes (aprox. 264,87 KB)
- SHA-256:
D9DC538315E875D83357B3986CC27D1F7535BE17D9F3F6E69C2F327C9A23FC98 - API mínimo do Android: 26
3. Integração do demo Android
Etapa 1: Criar um projeto Android
- Crie um projeto Android no 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.

Etapa 2: Adicionar o 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')
}
Etapa 3: Configurar o ponto de entrada do módulo
- Create an
assetsdirectory underapp/src/main/. - Crie o arquivo sem extensão
xposed_init。 - Informe o nome totalmente qualificado de uma classe de entrada por linha. Exemplo:
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.
Etapa 4: Implementar a classe de entrada
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.
Etapa 5: Verificar a estrutura do projeto
Após a configuração, o projeto deve conter pelo menos os seguintes arquivos:
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

Etapa 6: Configurar regras de ofuscação
Se o build de release habilitar R8 ou ProGuard, mantenha a classe de entrada para evitar que seu nome seja alterado ou removido:
-keep class com.example.myapplication.Main { *; }
Se você alterar o pacote da classe de entrada, atualize também xposed_init and the obfuscation rules.。
Etapa 7: Compilar e verificar
- Execute o Gradle Sync e confirme que a dependência AAR foi resolvida corretamente.
- 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. Perguntas frequentes
1. O módulo não é executado após a instalação
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. As interfaces Xposed não são encontradas durante a compilação
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. O pacote Release instala normalmente, mas o ponto de entrada não é executado
Check whether R8 or ProGuard changed or removed the entry class, and verify that the obfuscation rules match xposed_init.
4. Ocorrem classes duplicadas ou conflito de Bridge em tempo de execução
Remove other Xposed Bridge dependencies and confirm that the platform AAR is added with compileOnly and is not packaged into the APK twice.
5. O módulo afeta um aplicativo que não é o alvo
Filter by packageName at the very start of the entry method and return immediately for non-target processes.