Вопрос по java, android – Что происходит с комментариями после компиляции Java-файлов в Android?

7

Как работает компилятор Android? Удаляет ли это комментарии в коде Java и файлах Android XML при компиляции?

комментарии игнорируются компилятором и не отображаются в результирующем байт-коде или машинном коде Hunter McMillen

Ваш Ответ

2   ответа
11

Комментарии в файлах Java удаляются или игнорируются, когда они компилируются в файлы классов. Файлы классов не предназначены для чтения человеком - они оптимизированы для эффективной работы на виртуальной машине. Если комментарии останутся, они просто приведут к тому, что файлы классов будут больше, чем требуется, и без дополнительной выгоды (т. Е. Компилятор и виртуальные машины не понимают комментарии, поэтому зачем их включать)

Что касается файлов XML, комментарии обычно сохраняются. В то время как скомпилированный файл класса имеет только одну цель (для запуска на виртуальной машине), файл XML может служить многим целям. Например, вы можете загрузить файл XML в свое приложение и манипулировать им. В зависимости от использования XML-файла в вашем приложении, может потребоваться оставить там комментарии - фактически, ваше приложение может специально искать комментарии. Поскольку XML-файлы могут иметь широкое применение, комментарии не удаляются из XML-файлов, если они требуются для какой-либо другой цели.

Я определенно рекомендую вам удалить комментарии из XML, если вы обеспокоены последствиями для безопасности. Если у вас много комментариев, это также приведет к тому, что приложение будет работать немного медленнее, поскольку при чтении XML-файла оно должно пропускать все комментарии. Стоит помнить, что XML-файлы специально разработаны для удобства чтения :-)
Спасибо! Понял. :) Может быть, мне нужно удалить некоторые из моих комментариев к XML перед экспортом моего приложения в целях безопасности. Arci
На самом деле, если вы ссылаетесь на макеты XML в R. Тогда они также лишены комментариев и включены в сильно оптимизированные объекты просмотра. Таким образом, вам не нужно удалять комментарии даже из вашего XML.
@Ancantus Какая оптимизация в точности происходит с объектами вида?
Спасибо! Я собираюсь удалить свои комментарии. Arci
5

Комментарии не присутствуют в байт-коде / .class-версии файла. Comments игнорируются компилятором во время компиляции.

Компилятор работает таким образом, что он преобразует весь код языка высокого уровня в машинно-понятный код ... все сразу ... не построчно, как интерпретатор ... в случае Android ... компилятор преобразует исходные файлы .java в свои файлы байт-кода / .class..и затем в файлы .dex (исполняемые файлы Dalvik). Все приложения в Android запускаются поверх виртуальной машины под названием Dalvik Virtual Машина, которая нуждается в .dex файлах ..

Попробуйте открыть файл apk как zip .. используя любой архиватор .. вы бы увидели там файл classes.dex ..

А что касается XML-файлов ... они используются приложением, только когда вы отображаете что-то на экране (т. Е. Визуализируется действие) ... поэтому во время отображения активности ... соответствующий XML-файл используется для построить пользовательский интерфейс .. этот процесс называется надувать!

РЕДАКТИРОВАТЬ: [Но 1 пункт, который я помню сейчас относительно этого, состоит в том, что ... системные приложения, которые присутствуют в телефоне Android ... такие как все предоставляемые Google приложения (Gmail, Карты и т. Д.) ... Контакты, Phone.apk и т. все это системные apks .. присутствующие в / system / app / directory .. они могут содержать или не содержать файлы .dex в них ..

если они содержат .dex внутри apk-файлов (как и любое обычное приложение, которое мы разрабатываем) ... тогда ПЗУ называется деодексированным ПЗУ (прошивкой ОС Android) ... но это, в свою очередь, приводит к более медленной загрузке, когда ПЗУ устанавливается в первый раз из-за копирования всех файлов .dex из системных файлов .apk в кеш dalvik ... так как все файлы .dex системных apks необходимы при запуске / загрузке системы.

Но если в ПЗУ имеется odexed ... все файлы .dex системы .apk находятся не в .apk, а в виде отдельного файла в каталоге / system / app / .. с расширением .odex

Для всех приложений, которые вы и я разрабатываем (несистемные приложения) .. только приложения магазина игр .., которые содержат .dex внутри .apk]

РЕДАКТИРОВАТЬ: я знаю, что это не очень связано с работой или вопросом ... но просто хотел бы упомянуть разницу размещения файлов .dex для приложений sys и non-sys! :)

Надеюсь, это помогло! :)

Комментарии в XML-файлах обычно сохраняются!
Спасибо, Риаш! Как насчет комментариев к XML? Они также удаляются при компиляции? Arci

Похожие вопросы