Я обновил Apache Commons Compress до последней версии 1.18 в моем проекте Android с minSdkVersion 16
Все было хорошо (сборка, запуск), пока я не протестировал его на старом устройстве Xoom с Android 4.1
Он не вылетел, но работал неправильно, и было действительно трудно определить, что не так.
У меня заканчиваются некоторые записи в журнале, такие как
невозможно разрешить статическое поле (UTF_8) в
Ljava / NiO / кодировка / StandardCharsets
NoClassDefFoundError; выбрасывается при инициализации
Lorg / апач / Обще / компресс / архиваторы / почтовый / ZipEncodingHelper
И выясните, что проблема заключается в отсутствии поддержки java.nio.charset в до 19 Android.
ВОПРОС 1: Есть ли способ добавить поддержку Java 1.7 и новее на более старых устройствах? Так что все последние библиотеки, которые имеют тенденцию двигаться к минимально необходимой версии Java 1.7 и выше, будут работать на таких устройства без проблем. Может быть, какие-то настройки Google Play?
Угадай, ответ для Q1 - НЕТ. Итак ...
ВОПРОС 2: Должны ли мы использовать библиотеки с минимальной JDK 1.6 для Android, если мы хотим запустить наше приложение на старых устройствах (например, minSdkVersion 16). Мне удалось решить мою проблему, перенеся обратно на последний Commons Compress 1.12 с минимальным 1,6 JDK
ВОПРОС 3: Есть ли способ проверить, все ли зависимости будут работать со старыми устройствами, без необходимости тестировать приложение на таких устройствах? Например, какой-нибудь инструмент для проверки зависимостей от конкретного Android SDK.