Карта зависимостей показывает, что может измениться в одиночку

Приложение может загружать одну основную библиотеку, которая загружает транзитивные зависимости. Сторонние SDK могут включать собственные компоненты, которые зависят от экспорта или определенного порядка инициализации.

Записывайте имена библиотек, прямые и транзитивные зависимости, точки входа для загрузки, время инициализации и вызывающие объекты. В противном случае изменение в одном SO может завершиться неудачно, только если позже загрузится другая библиотека.

  • Первичные и транзитивные зависимости
  • Системные и сторонние библиотеки
  • Загрузка записи и порядок инициализации
  • Самая ранняя стадия отказа

Регистрация JNI ограничивает обработку символов.

Статическая регистрация основана на соглашениях об именах, тогда как динамическая регистрация обычно привязывает методы Java к собственным функциям во время инициализации. Они накладывают различные ограничения на видимость, переименование и время загрузки.

Прежде чем изменять экспорт или представление функции, определите, как регистрируется каждая важная запись, вызывает ли ее отражение или сторонний код, и как будут диагностироваться как Java, так и собственные сбои.

ABI - это граница выполнения, а не метка.

arm64-v8a, armeabi-v7a и x86_64 используют разные инструкции, связанные выходные данные и зависимости. Успешный запуск сборки или эмулятора для одного ABI не устанавливает другую целевую архитектуру.

Проверьте ABI в окончательной версии APK, затем проверьте разрешение зависимостей, запуск приложения, критические вызовы JNI, обработку ошибок и сторонние пути SDK на каждой целевой архитектуре.

  • Финальный пакет содержит цель ABI.
  • Любая зависимость разрешается
  • Критические пути JNI повторяются
  • Непокрытые архитектуры являются явными

Примите прочность защиты со стабильностью нагрузки

Сокращение символов, обработка строк и виртуализация функций устраняют различные подсказки. Ни одно отдельное действие не представляет собой полную встроенную защиту, а запуск приложений или часто выполняемые функции требуют особого внимания к производительности.

Начните с небольшого набора ценных функций с понятными входными и выходными данными. Расширьте область действия одного и того же кандидата и сохраняйте восстанавливаемую версию для каждого изменения конфигурации.

Примените руководство к реальному приложению

Предоставьте стек, критические пути, целевые системы и текущего кандидата, чтобы Yudun мог порекомендовать целенаправленную проверку защиты и совместимости.