2016-08-23 3 views
-2

Я использую Android-студию для своей базы Android-кода, а мой код использует ZipInputStream.java, который предоставляется как Android SDK, так и JDK. Неважно, какая версия SDK или JDK это.JDK libs, а не Android SDK libs

Странно, когда я запускаю свой apk на Android-M и более низких устройствах и эмуляторах, версия вышеупомянутого класса поставляется из SDK, но на эмуляторе Android N, используя тот же apk, ZipInputStream.java поступает из JDK.

Как заставить Android N использовать классы из SDK по умолчанию, а не JDK?

Обратите внимание, что я пробовал это, построив apk с помощью api 23 и 24 как для целевых, так и для компиляционных версий sdk, 23.x и 24.x для обоих инструментов сборки и поддержки-v4. Я даже пытался использовать JDK 7 и 8. Кажется, что с ОС Android N есть что-то в том, как он выбирает классы JDK по классам SDK, которые могут отсутствовать. Помощь будет оценена. Заранее спасибо.

+3

* версия вышеупомянутого класса взята из SDK * no ... если вы запустили приложение на устройстве/эмуляторе, то он использует реализацию ZipInputStream из библиотеки времени исполнения устройства/эмулятора ... также как вы «проверили» это ? – Selvin

+0

Я подтвердил, поставив точки останова в обеих версиях файла. Кроме того, для Android-N он ведет себя точно так же, как ожидает версия JDK файлов. Для FoY

ответ

1

но на Android N эмулятора, при использовании же APK, ZipInputStream.java происходит от JDK

Устройство/эмулятор всегда использует ZipInputStream реализацию, которая находится на устройстве/эмуляторе. На устройстве/эмуляторе нет исходного кода Java.

Теперь Android 7.0/N переместил много java.* и javax.* классов от оригинала, выпусков Apache Harmony to ones that are based on the OpenJDK. Я не знаю, изменился ли ZipInputStream.

Как заставить Android N использовать классы из SDK по умолчанию, а не JDK?

У вас нет. Реализация классов инфраструктуры, включая классы java.* и javax.*, исходит от устройства/эмулятора, а не вашего приложения.

В целом переход от Гармонии к OpenJDK has been fairly smooth. Если вы столкнулись с проблемами совместимости, где ZipInputStream больше не ведет себя так, создайте воспроизводимый тестовый пример и file an issue.

+0

Спасибо. довольно сложный ответ. Интересно, знали ли люди о голосовании по моему вопросу. Если бы они знали, что они прокомментировали. Еще раз спасибо. – FoY

Смежные вопросы