StatusRetryVerificationAtRuntime: Ошибка компиляции фреймворков / базы с помощью javac в Andorid 8.1.0

Я пытаюсь сделать некоторое внедрение кода в frameworks/base во время компиляции для форка Oreo (8.1.0). Мой первый шаг - использовать javac (в конце концов, я хочу использовать компилятор aspectj...) для компиляции frameworks/base в jar, а затем с помощью jack преобразовать полученный jar в классы *.dex. Я делал это ранее на M, но столкнулся с проблемой слияния моих изменений. Классы *.dex, кажется, сгенерированы правильно (они примерно того же размера, что и те, которые не содержат мои изменения, и dexdump показывает, что мои новые не пропускают никаких классов, которые есть у старых, кроме package-info.java?), но сборка завершается неудачно при создании boot.art (иногда это приводит к ошибкам в Context вместо AlarmManager):

Проверка не удалась: klass->IsVerified() Загрузочный класс classpath java.lang.Class не смог полностью проверить: state= StatusRetryVerificationAtRuntime

Я пытался использовать dx вместо jack для создания классов *.dex из моего jar, но я получаю ту же ошибку. В качестве проверки работоспособности я попытался удалить свои изменения и просто добавить

LOCAL_JACK_ENABLED:= javac_frontend

к модулю фреймворка в frameworks/base/Android.mk, так как build/core/java.mk, кажется, указывает, что это поддерживаемый способ использовать javac вместо jack, но я все еще получаю ту же ошибку.

art / runtime / mirror / classes.h содержит комментарий о StatusRetryVerificationAtRuntime:

// kStatusRetryVerificationAtRuntime: The verifier sets a class to
// this state if it encounters a soft failure at compile time. This
// often happens when there are unresolved classes in other dex
// files, and this status marks a class as needing to be verified
// again at runtime.

Казалось бы, это указывает на то, что класс или метод упоминаются в моих файлах dex, но не определены? Я подтвердил, что мои входные файлы Java одинаковы. Единственные классы, которые, по-видимому, отсутствуют, это классы информации о пакете, которые не кажутся важными?

Кто-нибудь сталкивался с этой ошибкой прежде, чем / сможет дать некоторое представление о том, что она означает и как ее отладить?

0 ответов

Другие вопросы по тегам