Как эффективно переопределить глобальные переменные состояния в скомпилированном 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 оптимизация управление памятью реверс-инжиниринг
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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