Libxposed API 101: «невозможно найти символ» для getModuleContext(), несмотря на расширение XposedModuleAndroid

Форум для тех, кто программирует под Android
Anonymous
Libxposed API 101: «невозможно найти символ» для getModuleContext(), несмотря на расширение XposedModule

Сообщение Anonymous »

Я обновляю свой модуль LSPosed до последней версии libxposed API 101. Я столкнулся со странным поведением компиляции: проект компилируется нормально, если я использую жестко закодированные строки, но происходит сбой, как только я пытаюсь использовать ресурсы локализации модуля.
Проблема: Когда я пытаюсь получить ресурсы с помощью 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

Вернуться в «Android»