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 одинаковы. Единственные классы, которые, по-видимому, отсутствуют, это классы информации о пакете, которые не кажутся важными?
Кто-нибудь сталкивался с этой ошибкой прежде, чем / сможет дать некоторое представление о том, что она означает и как ее отладить?