Карта зависимостей показывает, что может измениться в одиночку
Приложение может загружать одну основную библиотеку, которая загружает транзитивные зависимости. Сторонние SDK могут включать собственные компоненты, которые зависят от экспорта или определенного порядка инициализации.
Записывайте имена библиотек, прямые и транзитивные зависимости, точки входа для загрузки, время инициализации и вызывающие объекты. В противном случае изменение в одном SO может завершиться неудачно, только если позже загрузится другая библиотека.
- Первичные и транзитивные зависимости
- Системные и сторонние библиотеки
- Загрузка записи и порядок инициализации
- Самая ранняя стадия отказа
Регистрация JNI ограничивает обработку символов.
Статическая регистрация основана на соглашениях об именах, тогда как динамическая регистрация обычно привязывает методы Java к собственным функциям во время инициализации. Они накладывают различные ограничения на видимость, переименование и время загрузки.
Прежде чем изменять экспорт или представление функции, определите, как регистрируется каждая важная запись, вызывает ли ее отражение или сторонний код, и как будут диагностироваться как Java, так и собственные сбои.
ABI - это граница выполнения, а не метка.
arm64-v8a, armeabi-v7a и x86_64 используют разные инструкции, связанные выходные данные и зависимости. Успешный запуск сборки или эмулятора для одного ABI не устанавливает другую целевую архитектуру.
Проверьте ABI в окончательной версии APK, затем проверьте разрешение зависимостей, запуск приложения, критические вызовы JNI, обработку ошибок и сторонние пути SDK на каждой целевой архитектуре.
- Финальный пакет содержит цель ABI.
- Любая зависимость разрешается
- Критические пути JNI повторяются
- Непокрытые архитектуры являются явными
Примите прочность защиты со стабильностью нагрузки
Сокращение символов, обработка строк и виртуализация функций устраняют различные подсказки. Ни одно отдельное действие не представляет собой полную встроенную защиту, а запуск приложений или часто выполняемые функции требуют особого внимания к производительности.
Начните с небольшого набора ценных функций с понятными входными и выходными данными. Расширьте область действия одного и того же кандидата и сохраняйте восстанавливаемую версию для каждого изменения конфигурации.
Примените руководство к реальному приложению
Предоставьте стек, критические пути, целевые системы и текущего кандидата, чтобы Yudun мог порекомендовать целенаправленную проверку защиты и совместимости.