2013-05-27 3 views
5

компании Google instructions for using the Play Service API (например) сказать:Почему Google рекомендует копировать библиотеки в дерево?

Копирование/дополнения/Google/google_play_services/libproject/Google-игра-services_lib проект библиотеки в исходном дереве, где вы сохранить ваши Android проекты приложений.

Примечание. Вы должны ссылаться на копию библиотеки, которую вы скопировали в исходное дерево, - вы не должны ссылаться на библиотеку из каталога Android SDK.

Это кажется уродливым для меня - почему бы не ссылаться на него из каталога SDK? Есть ли какая-то техническая причина для этого? Или это так, что у вас есть явный контроль над тем, когда он обновляется?

ответ

4

Я хотел бы указать, что это полностью ограничение Eclipse, и это действительно уродливо.

Проблема в том, что эта библиотека содержит ресурсы в дополнение к исходному коду. Eclipse может работать только с библиотеками, упакованными как файлы jar, которые в целях разработки Android не могут содержать ресурсы.

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

Если вы переместите свою сборку в Maven и используете среду IDE, которая «понимает» Maven, тогда вы можете скомпилировать библиотеку, которая содержит ресурсы как «apklib», и рассматривать ее как внешнюю библиотеку, аналогично файл jar.

Новая система сборки на базе Gradle построена на примитивах Maven, но использует для этого другой формат «aar». Надеюсь, в конечном итоге он также поддержит апклиб, чтобы сборка Maven и сборки Gradle могли взаимодействовать.

Я только что прошел через преобразование приложения Android в сборку Maven, в том числе использование некоторых апклибов. Я могу сказать вам, что Eclipse с плагином m2eclipse не обрабатывает apklibs должным образом. И IntelliJ, и новая Android-студия Google (на базе IntelliJ) обрабатывают апклибы без проблем.

0

Речь идет не о "Play Services Library". Как и любые другие библиотеки, которые использует проект, на эту библиотеку следует ссылаться из исходного дерева проекта.

В этом случае внешняя библиотека находится в каталоге Android SDK, и ссылка на нее также не является хорошей практикой. Так что да, его можно назвать «технической причиной».

Использованные библиотеки (библиотека Службы Службы в этом случае) не должны ссылаться нигде, кроме дерева исходных текстов проекта.

+0

Что такое _is_ техническая причина? Почему вы думаете, что это не хорошая практика, или это не должно быть сделано? – poolie

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