Как эффективно переопределить глобальные переменные состояния в скомпилированном Android APK для оптимизации ресурсов?Android

Форум для тех, кто программирует под Android
Anonymous
Как эффективно переопределить глобальные переменные состояния в скомпилированном Android APK для оптимизации ресурсов?

Сообщение Anonymous »

Я работаю над проектом по оптимизации производительности тяжелого приложения для 3D-моделирования (похожего на Truckers of Europe 3). Моя цель — обойти систему линейного прогресса и протестировать высококачественные активы (грузовики и скины) без прохождения стандартного процесса $O(n)$ измельчения.
Проблема:
Приложение сохраняет состояние экономики и прогресс уровня в локальном двоичном файле. I want to implement a "Saturated State" where: В настоящее время я использую метод внедрения памяти во время выполнения, но сталкиваюсь с проблемой Управления памятью: когда я одновременно разблокирую все более 50 скинов с высоким разрешением, использование кучи резко возрастает, что приводит к ошибке OutOfMemoryError (OOM) на устройствах среднего уровня.
Что я пробовал:
  • Я успешно исправил переменную current_balance в структуре данных.
  • Я пытался использовать Отложенную загрузку для разблокированных ресурсов, но оригинальный движок игры пытается предварительно кэшировать все «доступные» скины в списке пользовательского интерфейса.
Фрагмент кода (концептуальная логика):
Java

Код: Выделить всё

// Current approach in the optimization patch
public void applyStateSaturation() {
if (OptimizationModule.isActive()) {
GlobalState.setBalance(999999999);
GlobalState.setLevel(MAX_LEVEL);
// Triggering the unlock for all assets
AssetManager.unlockAllVehicles();
}
}
Вопросы:
  • Как я могу перехватить процедуру предварительного кэширования движка, чтобы предотвратить загрузку всех текстур в память одновременно?
  • Существуют ли более эффективные шаблоны для Переопределения состояния в скомпилированных средах для обеспечения стабильности (аналогично патчам, используемым в HNHAYVL для версии 0.7.64)?
Я видел, как это плавно реализовано в некоторых технических зеркалах, таких как https://hnhayvl.net/truckers-of-europe-3/, но я борюсь с накладными расходами памяти.
Любые советы по эффективному манипулированию состоянием памяти будут оценены!
Теги: android Java оптимизация управление памятью реверс-инжиниринг

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