Проблема: Когда я пытаюсь получить ресурсы с помощью getModuleContext().getResources(), компилятор Java (JDK 18) выдает ошибку «невозможно найти символ» для getModuleContext() метод, хотя мой класс расширяет XposedModule.
Ошибка:
E:\...\Back2Kill.java:59: error: cannot find symbol
mRes = getModuleContext().getResources();
^
symbol: method getModuleContext()
location: class Back2Kill
Парадокс:
- Случай A (Успех): Если я использую log(Log.INFO, TAG, «Hardcoded String»); и закомментирую инициализацию mRes, проект собирается успешно.
- Случай B (Отказ): Если я использую mRes = getModuleContext().getResources(); для поддержки локализации, компилятор выдает ошибку «невозможно найти символ» для getModuleContext().
- версия libxposed: 101.0.0 (AAR)
- JDK: 18
- Базовый класс: io.github.libxpose.api.XusedModule
- Используя getContext().getResources() (та же ошибка).
- Используя getModuleContext().getResources().
- Проверил, что api-101.0.0.aar правильно преобразован с помощью Gradle.
package com.hks.back2kill;
import io.github.libxposed.api.XposedModule;
import io.github.libxposed.api.XposedInterface;
import androidx.annotation.NonNull;
import android.content.res.Resources;
import android.util.Log;
public class Back2Kill extends XposedModule {
private Resources mRes;
// Required constructor for API 100+
public Back2Kill(@NonNull XposedInterface base, @NonNull ModuleLoadedParam param) {
super(base, param);
}
@Override
public void onPackageReady(@NonNull PackageReadyParam param) {
if (!param.getPackageName().equals("com.android.systemui")) return;
// Compilation fails here ONLY if R.string is used elsewhere in the class
mRes = getModuleContext().getResources();
log(Log.INFO, TAG, mRes.getString(R.string.log_ready));
}
}
Мои фрагменты build.gradle:
dependencies {
compileOnly 'io.github.libxposed:api:101.0.0'
}
Подробнее: https://stackoverflow.com/questions/799 ... -extending