Декомпилированный не запутанный apk содержит ошибки в java-коде

Я использовал декомпилятор приложения для Android для декомпиляции случайного приложения. Кажется, что приложение не запутывается - даже имена переменных сохраняются. Дело в java-коде. Иногда я получаю сообщение об ошибке. Это образец:

private long compressAndFormat(byte[] token data) {
        long result = 0;
        int i = 0;
        while (true) {
            try {
                if (i >= this.ipb.length) {
                    return result >> 1;
                }
                int bit;
                while (bit >= 0) {
                    byte mask = (byte) (1 << bit);
                    if ((this.ipb[i] & mask) != 0) {
                        if ((tokenData[i] & mask) != 0) {
                            result |= 1;
                        }
                        result <<= 1;
                    }
                    bit--;
                }
                i++;
            } finally {
                result = 0;
            }
        }
    }

В этом случае я получаю ошибку Variable 'bit' might not have been initialized. Почему так случилось? Это приложение было написано на более старой версии java, где вы могли использовать переменные без инициализации, или что-то не так с декомпилятором?

это происходит из-за того, что бит переменной «мог быть не инициализирован». int bit; -> просто инициализируйте его базовым значением

Stultuske 02.08.2018 10:10

@Stultuske Я знаю. Мне интересно, почему это происходит. Почему есть bit, а не bit = 0.

dafie 02.08.2018 10:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
24
0

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