2013-01-25 2 views
1

Может быть, вопрос может казаться глупым для пользователей java. Извините, я нооб.Android и связанные библиотеки

Мне интересно, как библиотеки загружаются во время работы в системе Android.

Предположим, у меня есть супер простое приложение для Android, которое вызывается только функцией, расположенной в пакете javax.net.ssl.

Кусок (dex) содержащий javax.net.ssl материал будет вставлен в apk (превращается в статическую библиотеку)? Или во время выполнения, Dalvik VM будет ссылаться на файл jar (или dex), установленный на андроидной машине? Или только Dalvik VM был скомпилирован, чтобы содержать каждый javax, включающий сам себя?

Заранее спасибо

ответ

2

Они действуют динамически подключаемый во время выполнения загрузки дополнительного кода оптимизировано DEX, сохраненный на устройстве.

На самом деле для многих компонентов это происходит один раз при запуске системы, причем в нем содержится процесс и виртуальная машина, которая становится каждым приложением, наследующим доступ только для чтения к общей копии, уже находящейся в памяти.

Собственные библиотеки работают примерно так же, как только связь происходит ниже уровня виртуальной машины, в самом процессе.

+0

Итак ... вы говорите мне, что библиотека 'android.jar' существует на каждом телефоне и будет загружаться виртуальной машиной каждый раз при загрузке телефона? –

+0

Эффективно да, но его это не называли. Он имеет реальные реализации, в то время как android.jar в sdk имеет непрозрачные подделки для руководства toolchain. –

+0

Эта реальная реализация встроена в скомпилированный код dalvik? Или он загружается из файла во время фазы запуска Dalvik? Я спрашиваю об этом, потому что у меня есть сомнения. Если последний файл существует, что делать, если я могу найти его и модифицировать вредоносным способом? (например, я могу изменить javax.net.ssl-процедуры и заставить их сбрасывать DECRYPTED данные SSL-соединений) –

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