Intereting Posts
Андроид: вопрос макета начальника Android scrollview не заполняет родительский вид Как вы определяете задержку звука (AudioTrack) на Android? Самый эффективный способ показать анимацию по кадру за кадром Существуют ли эмуляторы или Genymotion, поддерживающие АРТ, замену далвика? Нажатие на пункт меню в панели действий с эспрессо при использовании onView (withId (…)) Как установить другой цвет для нажатого состояния кнопки? Изменить размер шрифта элемента textview в android Тихая установка на устройствах Android Как реализовать OnZoomListener на MapView Андроид без учета регистра курсора с оператором LIKE (работает для всех локалей) Множественное определение игнорируется для нулевого количества Как легко переключаться на MTP на устройстве Android 6.0 с поддержкой Debug? Как создать собственный приватный плагин в телефонной запинке Не удается импортировать проекты в рабочее пространство Eclipse

Насколько разумным является Eclipse / ADT, когда дело доходит до проектов библиотеки Android?

Итак, у меня есть несколько классов стиля "Utility" в некоторых моих проектах. Мне любопытно, могу ли я перенести их в проект библиотеки Android, который содержит весь или большинство моего кода, не относящегося к конкретному приложению (в основном оболочки и интерфейсы).

Итак, мой вопрос заключается в том, что происходит с файлами, которые мне не нужны в этой библиотеке. Я знаю, что проекты библиотеки Android в основном просто копируют код в другой проект, поэтому, если я скажу, что использую 25% кода в моей библиотеке общего назначения, мое приложение фактически содержит байт-код для всех 100%, или это правильно Это только для того, что мне нужно.

В прошлом у меня были некоторые проблемы с неиспользуемыми классами в Proguard, поэтому я просто один раз укусил, дважды застенчивый с ADT …

Solutions Collecting From Web of "Насколько разумным является Eclipse / ADT, когда дело доходит до проектов библиотеки Android?"

К сожалению, все ваши проекты будут расти, когда библиотека станет больше – даже если большинство содержимого этой библиотеки не используются. Я сам тестировал это, создав приложение A и библиотеку L. Если L – это библиотека, используемая в A, файл classes.dex (и, следовательно, файл A.apk) растет, если я добавляю больше классов, даже если они не являются используемый.

Подводя итог: прямо сейчас я бы создал базовую библиотеку для определенных вещей, которые являются небольшими и могут использоваться многими проектами, и создать новую библиотеку для каждого нового компонента, который будет больше и будет использоваться только некоторыми проектами. Хорошим кандидатом для новой библиотеки будет новый компонент пользовательского интерфейса с несколькими изображениями, определенными в ресурсах. Хорошим кандидатом для базовой библиотеки являются обычно используемые методы и такие вещи, как файловые кеши, например. Скомпилированный код довольно сильно сжат для Dalvik, который вы можете увидеть здесь. (Вся презентация на самом деле забавно смотреть 🙂

Изменить: если ProGuard активирован, он также удалит неиспользуемый код для вас. Достаточно proguard.cfg по умолчанию. Он не будет запускаться с построкой отладки (по умолчанию), но при компиляции окончательного .apk. Так что это действительно возможно!

Я успешно использовал 3-уровневые проекты библиотеки Android, хотя это своего рода боль. Основной вариант использования – это когда есть набор ресурсов и классов, которые вы хотите разделить в нескольких проектах. Поскольку я использую систему управления версиями, я бы предпочел не использовать символические ссылки.

Обратите внимание, что проекты библиотеки Android также сильно страдают при работе с ресурсами. ADT будет восстанавливать R.java один раз для каждой библиотеки, и каждый R.java будет содержать копию всех идентификаторов ресурсов из всех библиотек. Основная проблема заключается в том, что ресурсы регенерируются для всего проекта в целом, и нет никакого способа «построить банку» для зависимости, как можно было бы ожидать от обычных «библиотек». Мы попытались интегрироваться с OpenFeint и имели все виды ада, связанные с библиотеками и зависимостями. Я думаю, что мы закончили просто слияние всех исходных и ресурсных файлов OpenFeint в наш собственный проект и отключение проекта «Библиотека», поскольку оно предлагало мало ценности.

Проекты библиотеки Android являются неуклюжим способом совместного использования кода между проектами и имеют ряд недостатков. Я обнаружил, что все, что выполняется в проекте библиотеки, также может быть выполнено с помощью символических ссылок (источник символической ссылки на два проекта). Мне еще не удалось найти приложение, в котором проект Android Library предложил нечто, что было нелегко воспроизвести с помощью других, менее хрупких средств.