От Eclipse до Android Studio: отклонение VFY из-за огромного метода

Я перехожу с Eclipse на Android Studio, и теперь мое приложение падает, а Logcat показывает разные причины для разных телефонов, но фокусируется на очень большом методе, который у меня есть. Например:

Телефон Android 6.0.1:

java.lang.VerifyError: Verifier rejected class due to bad method

Телефон Android 2.3.6:

W/dalvikvm: VFY: warning: method is huge (regs=466 insnsSize=25467)

При использовании Eclipse у меня не было проблем с Android 2.3.6 и выше (моё приложение зависало только на телефонах с версиями Android ниже 2.3.6). Теперь в Android Studio мое приложение вылетает во всех версиях Android.

Я читал, что размер файла не должен давать ошибок для версий Android 2.3.6 и выше. Так было и с Eclipse. Я новичок в Android Studio; может есть проблема совместимости, которую легко решить?

СОВЕТ: Решил сделать рефакторинг метода и решил проблему.


person user9912884    schedule 08.06.2018    source источник
comment
Спасибо @howlger; Является ли предел 64 КБ таким же, как предел 2 ^ 21 в (количество регистров) * (количество инструкций)? В stackoverflow.com/questions/4748771/ кажется, что Android уже давно снял ограничение 2^21 (или, может быть, компилятор Eclipse, а не Android снял ограничение 2^21?)   -  person user9912884    schedule 08.06.2018
comment
Даже если ошибка возникает при преобразовании в код Dalvik, я предполагаю, что это уже связано с другим байт-кодом. Я думаю, что Eclipse и Android Studio отличаются компилятором Java (компилятор Eclipse Java против javac), но, вероятно, не преобразованием в код Dalvik. Но это всего лишь предположение, и мне жаль, что я не могу ответить на ваш вопрос.   -  person howlger    schedule 08.06.2018