Как подключить источник библиотеки поддержки Android в Eclipse?

Наличие исходного кода, прикрепленного к внешним библиотекам, — это здорово. Где найти исходный код пакета поддержки v4? Желательно, чтобы это был zip-файл, который можно было бы легко прикрепить к android-support-v4.jar в Eclipse.


person Håvard Geithus    schedule 17.12.2011    source источник
comment
imo @andr ответ тот, который нужно принять   -  person Amir Uval    schedule 29.04.2013


Ответы (9)


После загрузки пакета поддержки из Android SDK Manager вы можете найти исходный код пакета поддержки в папке ‹android-sdks›/extras/android/support/v4/src.

person Jacob Dam    schedule 20.12.2011
comment
В моем случае он был сохранен в C:\Program Files\Android\android-sdk\extras\android\compatibility\v4\src\java. Затем я взял его содержимое (папку Android) и упаковал его в *.jar с помощью этой команды: jar cf android-support-v4-sources.jar android/. Я прикрепил эту банку к android-support-v4.jar (настройки пути/библиотеки сборки Java в eclipse). Приятно работает :) - person Håvard Geithus; 04.01.2012
comment
Сейчас это не работает. Как я могу заставить его работать? помогите. Я использую объявление 21.1. Источник документа android-support-v4.jar или источник java не поддается изменению. Щелкните правой кнопкой мыши проект, «Свойства» > «Путь сборки Java» > вкладка «Библиотеки», частные библиотеки Android > android-support-v4.jar - Исходное вложение: (нет) - не подлежит изменению. :( - person Thupten; 20.05.2013
comment
Хорошо. Получил работу. android-support-v4.jar должен быть в Referenced Libraries, щелкнув правой кнопкой мыши, Build Path.., Add to Path. Затем в Referenced Libraries щелкните правой кнопкой мыши свойства android-support-v4 и установите sources. - person Thupten; 03.06.2013
comment
Этот ответ полностью отвечает на вопрос ОП. Чтобы прикрепить его к вашему файлу jar в eclipse, см. ответ @andr - person JRomero; 09.08.2013
comment
@Thupten, разве вы не ссылаетесь дважды тогда, когда одного будет достаточно? - person Pacerier; 24.11.2014

Я просто хочу добавить еще один способ подключения исходников для библиотеки поддержки. Требуется ADT версии 20 или новее. Предположительно, этот метод работает для всех JAR-файлов, для которых установка местоположения источника/javadoc отключена контейнером. Вот что вам нужно сделать:

  1. Библиотека android-support-v4.jar находится в каталоге libs вашего проекта. В том же каталоге создайте обычный файл свойств Java с таким же именем, как и рассматриваемый JAR, но с добавленным расширением .properties. Итак, для нашей библиотеки поддержки это будет:
    android-support-v4.jar.properties.

  2. Откройте созданный файл свойств и установите значение свойства с именем src в место, где можно найти исходные коды для этой библиотеки. В вашем файле должна быть одна строка, например:

    src=c:/apps/adt-bundle-windows-64bit/sdk/extras/android/support/v4/src
    
  3. Сохраните файл.

  4. Закройте и снова откройте проект Android.

  5. Попробуйте перейти к одному из классов поддержки. Исходное вложение теперь должно работать.

Отлично сработал в моем случае.

Следует отметить одну вещь: если src не является абсолютным путем, он будет разрешен, начиная с родительского каталога файла JAR. В качестве примера возьмем библиотеку поддержки — если src=support/src, ADT будет считать, что исходники классов расположены в libs/support/src.

Краткое описание этой функции, написанное ее автором, можно найти здесь.

Если кому-то интересно, как именно обрабатывается этот файл .properties, рекомендую прочитать набор патчей #4, особенно. изменения в eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/ internal/project/LibraryClasspathContainerInitializer.java :)

Изменить

Также см. прекрасный комментарий WindRider о правильном добавлении исходников в проект с несколькими библиотеками, на которые ссылаются.

person andr    schedule 19.12.2012
comment
Это «официальный» и рекомендуемый способ сделать это. - person BoD; 21.01.2013
comment
Обратите внимание: если у вас есть большой проект с несколькими библиотеками, на которые ссылаются, которые, в свою очередь, ссылаются на библиотеку поддержки Android, вы должны убедиться, что все копии android-support-v4.jar являются одними и теми же двоичными файлами. В противном случае вы получите странную ошибку несоответствия контрольной суммы бла-бла. Также будет импортирована только одна из этих копий библиотеки поддержки, возможно, содержащаяся в папке lib\ проектов библиотеки. Чтобы увидеть, какой из них используется, откройте Package Explorer -> Android Dependencies и посмотрите, откуда импортирована библиотека поддержки. Затем проделайте ту же процедуру не для основного проекта, а для проекта библиотеки. - person WindRider; 31.01.2013
comment
@WindRider отлично, буду иметь это в виду .. спасибо за участие :) - person andr; 01.02.2013
comment
Да, эта глупость беспокоила меня несколько месяцев, пока я, наконец, не решил найти причину. В ADT есть некоторые дополнения, касающиеся конфликтующих библиотек зависимостей. Это что-то связанное с инструментом DEX, и оно было описано в видео Google I/O. Теперь есть другая проблема: источник появляется, но не правильной версии. Я думаю, что ревизии не совпадают. Исходники в SDK, возможно, предназначены для более новых версий. Это связано с тем, что SDK Manager обновляет библиотеку поддержки новыми версиями. Не могу поверить, как можно было потерять целый день на такие неважные проблемы! - person WindRider; 01.02.2013
comment
Попробовав некоторые из остальных, я могу сказать, что это лучший ответ - его следует принять как правильный. - person Amir Uval; 29.04.2013
comment
Чтобы подчеркнуть, файл .properties должен быть создан в каталоге libs, как говорит uval. - person DavidS; 05.07.2013
comment
Это правильный ответ. - person Jazib; 28.09.2013
comment
Я заметил, что иногда кажется, что это перестает работать по какой-то причине ... Обычно до такой степени, что приходится удалять и воссоздавать файл .properties, чтобы заставить его снова работать, кто-нибудь еще сталкивался с этим? - person syklon; 04.10.2013
comment
Что делать, если я хочу использовать это для android/support/v7/appcompat? В этом случае файл .jar не указан в папке libs. - person Simulant; 24.10.2013
comment
@zyklonSport нет - я активно использую этот метод для нескольких проектов и в общей сложности около 60 исходных архивов библиотек и пока не обнаружил проблем. возможно, попробуйте опубликовать новый вопрос SO и / или группу новостей ADT, если вы все еще сталкиваетесь с этим - таким образом, он наверняка привлечет больше внимания со стороны умных людей. - person andr; 25.10.2013
comment
@Simulant - я не эксперт по совместимой библиотеке ActionBar, но с первого взгляда я предполагаю, что для ее использования вам нужно импортировать ее как отдельный проект Android Lib и ссылаться на нее как на зависимость в вашем основном проекте, верно? Если это так, вам просто нужно выполнить описанные здесь шаги для каталога libs проекта lib. В этом каталоге должно быть два файла .jar: android-support-v4.jar и android-support-v7-appcompat.jar, для которых вы должны иметь возможность создавать упомянутые файлы .properties. - person andr; 25.10.2013
comment
@andr - да, отлично работает. Я попробовал это сам в неправильном проекте. Поэтому мне пришлось добавить свойства в папку Library-Projects libs. Большое спасибо! - person Simulant; 25.10.2013
comment
Доступна ли переменная или макрос, чтобы путь к инструментам ADT не нужно было жестко запрограммировать? Файл .properties является хорошим кандидатом для проверки системы управления версиями и совместного использования разработчиками. - person Edward Brey; 05.11.2013
comment
@EdwardBrey, к сожалению, нет - расширение переменной AFAIK не выполняется для любых типов переменных (Eclipse или ОС). Что работает для меня, так это размещение всех исходников в отдельном каталоге (скажем, libsrc) в корневом каталоге проекта. Затем я сохраняю libsrc в системе контроля версий (чтобы все разработчики использовали одну и ту же версию исходников) и ссылаюсь на нее как src=../libsrc/acra-4.5.0-sources.jar. - person andr; 06.11.2013
comment
БОЛЬШОЕ СПАСИБО! Наконец-то появился элегантный способ сделать это. @Håvard Пожалуйста, отметьте это как правильный ответ для будущих искателей. Спасибо. - person Shirane85; 01.01.2014
comment
Если вам интересно, какой проект Eclipse будет искать исходный код, это будет первый проект, который вы откроете. Поэтому, если вы сначала откроете библиотеку, на которую ссылаетесь, содержащую проект библиотеки поддержки, там будет ссылка на источник. Если вы сначала откроете ссылочный проект, он будет использовать его. Поэтому просто откройте сначала проект, содержащий исходную библиотеку, а затем остальные. Или просто используйте указанное библиотечное решение, предложенное другими пользователями. :) - person Brad; 27.02.2014
comment
Если вам нужен javadoc, вы можете сначала перейти к <ANDROID_HOME>/extras/android/supportv/, а затем создать javadoc с помощью javadoc -d docs -sourcepath src/java -subpackages android.support.v4. Последний шаг — добавить строку doc=c:/apps/adt-bundle-windows-64bit/sdk/extras/android/support/v4/docs в android-support-v4.jar.property. Закройте и снова откройте свой проект, и теперь вы можете увидеть библиотеку javadoc для поддержки. - person lins05; 08.03.2014
comment
Если вы используете Windows, убедитесь, что вы используете косую черту в строке src. - person Scutterman; 28.05.2014

Здесь решение для прикрепления источника библиотеки поддержки в Eclipse Juno

Я предполагаю, что в вашем проекте уже есть android-support-v4.jar в вашем «Пути сборки» в разделе «Зависимости Android», но вы не можете прикрепить к нему исходный каталог. («Исходное вложение» указано «Не подлежит изменению»). Решение:

  • Перейти к «Настроить путь сборки»
  • Добавьте внешние JAR-файлы > YourProject/libs/android-support-v4.jar (я знаю, что ваш проект уже ссылался на него, но не волнуйтесь, просто добавьте его снова).
  • Разверните банку и прикрепите источник к внешней банке: android-sdk/extras/android/support/v4/src
  • Перейдите на вкладку «Заказ и экспорт», подтяните внешнюю банку над «Зависимостями Android».

Наслаждайтесь навигацией по библиотеке поддержки с исходным кодом!

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

person Hiep    schedule 07.11.2012
comment
Путь сборки Java, а не путь сборки конфигурации для меня. - person user123321; 12.12.2012
comment
Это имело все необходимые шаги и сработало для меня! Последний шаг (заказ) был исключен из других и очень важен. - person cottonBallPaws; 16.01.2013
comment
У меня был android-support-v4.jar, указанный в частных библиотеках Android (APL, который был указан выше зависимостей Android), поэтому мне пришлось вытащить недавно добавленный .jar выше APL. - person Kuitsi; 07.06.2013
comment
Кстати, это работает и с другими библиотеками, а не только с библиотекой поддержки. /Капитан Очевидность - person Emil Lundberg; 08.06.2013
comment
Вы не должны этого делать. Это противоречит первоначальной настройке стандартного приложения для Android. Я бы порекомендовал вам использовать официальное решение @andr. - person JRomero; 09.08.2013
comment
Также был необходим перезапуск затмения. Не знаю почему :( - person AlikElzin-kilaka; 11.11.2013
comment
На вкладке «Заказ и экспорт» мне пришлось открыть внешнюю банку над частными библиотеками Android вместо зависимостей, чтобы я мог работать. - person Adam Toth; 07.01.2014
comment
@ Дж. Ромеро, каким образом другое решение является официальным? Мне кажется, что это недокументированная функция, обнаруженная кем-то, просматривающим исходный код Eclipse. - person Pacerier; 24.11.2014

Ссылаясь на принятый ответ, также можно прикрепить исходный код прямо из каталога без создания файла .jar. На вкладке "Путь/библиотеки сборки Java" разверните android-support-v4.jar, выделите "Исходное вложение", нажмите "Изменить...", "Внешняя папка...", затем укажите (android-sdk)\extras\ андроид\поддержка\v4.

Это было проверено с помощью eclipse indigo.

Из комментариев:

Проблема с невозможностью добавить исходный код в библиотеку поддержки возникает, если ваша библиотека поддержки находится в папке «Android Dependencies» вашего проекта. Обходной путь находится на той же вкладке «Путь/библиотеки сборки Java», нажмите «Добавить внешние JAR-файлы ...» и найдите файл .jar в своем пути (android-sdk)\extras\android\support\v4. Затем он появится в настройках вашего проекта в новой папке «Referenced Libraries».

person happydude    schedule 18.02.2012
comment
Если, конечно, у вас нет бага, не позволяющего прикрепить исходники к банке. - person User; 01.08.2012
comment
Это было бы здорово, но моя кнопка редактирования неактивна :/. Это ошибка, которую вы упоминаете lxx? Нашли решение? - person span; 02.08.2012
comment
Все выделено серым цветом, написано, что его нельзя изменить. - person Mister Smith; 01.10.2012
comment
Проблема с невозможностью добавить исходный код в библиотеку поддержки возникает, если ваша библиотека поддержки находится в папке зависимостей Android вашего проекта. Обходной путь находится на той же вкладке «Путь/библиотеки сборки Java», нажмите «Добавить внешние JAR-файлы»… и найдите файл .jar в своем пути (android-sdk)\extras\android\support\v4. Затем он появится в настройках вашего проекта в новой папке Referenced Libraries. Затем вы можете прикрепить источник к этому файлу .jar, как указано в исходном ответе. - person happydude; 03.10.2012

Для тех, кому нравится стандарт, есть jar-файл исходного кода, что делает его более удобным для контроля версий и совместного использования проекта.

Например:

../android-support-v4.jar
../android-support-v4-src.jar

Создать исходный файл jar и прикрепить его просто:

  1. cd к path_to_android_sdk/extras/android/compatibility/v4/
  2. Используйте свою любимую zip-программу, например 7-zip, чтобы создать zip-файл и назвать его android-support-v4-src.jar. Первая папка в банке должна быть /scr.
  3. Скопируйте файл в свой проект, в этом примере он находится в той же папке, что и jar кода.
  4. В Eclipse прикрепите исходный файл jar в свойствах проекта.
person fishjd    schedule 28.06.2013
comment
Спасибо за Ваш ответ. Для создания архива jar также можно использовать программу jar, входящую в состав JDK. - person Håvard Geithus; 29.06.2013

Я просто удаляю автоматически сгенерированный, а затем вручную добавляю его в качестве библиотек Referencde.

Сначала откройте класс, среда IDE попросит вас изменить прикрепленный источник.

person Hisenberg    schedule 13.08.2014

Процесс присоединения src и doc из пути сборки работает для некоторых, а для некоторых — нет (например, у меня). некоторые ключевые вещи, которые следует иметь в виду

  1. Убедитесь, что вы находитесь в Проводнике пакетов, а не в Навигаторе проектов.

  2. Если вы поместили файл android-support-v4.jar в папку libs под своим проектом. отличный.

  3. Щелкните правой кнопкой мыши банку, Построить путь.. Добавить в путь. (если «Добавить в путь» не отображается, значит, он уже добавлен. Вы увидите путь настройки..)

  4. В результате шага 3 в дереве проводника пакетов появится новая папка с именем Referenced Libraries. Откройте это дерево, найдите там android-support-v4.jar. Щелкните правой кнопкой мыши эту банку в свойствах Библиотеки ссылок. Затем установите там исходное вложение Java и расположение Javadoc.

  5. Вы сделали.

Путь к моему исходному файлу Java (внешнее расположение).

C:/Users/thupten/adt-bundle-windows-x86_64-20130514/sdk/extras/android/support/v4/src

Я использовал документ веб-сайта Android для местоположения документа Java.

http://developer.android.com/reference/android/support/v4/app/package-summary.html

person Thupten    schedule 20.05.2013

Я нашел это для меня:

Для основной библиотеки: android.jar:

источник: SDK/источники/Android-19 документ: SDK/документы/ссылка/

Для библиотеки поддержки: android-support-v4.jar: (перед этим мы должны добавить android-support-v4.jar как внешний jar (Свойства проекта -> Путь сборки Java -> Библиотеки, затем на вкладке «Заказ и экспорт» подтянуть эта библиотека перед частными библиотеками Android)):

источник: sdk/extras/android/support/v4/src/java документ: http://developer.android.com/reference/android/support/v4/app/package-summary.html (не уверен)

person ultraon    schedule 12.02.2014

После того, как вы обновили SDK и загрузили в него документацию:

  • Импортируйте проект библиотеки поддержки в проводник пакетов.
  • Создайте папку в библиотеке и назовите ее, например, ext-jars.
  • Переместите android-support-v4.jar в папку ext-jars.

    введите здесь описание изображения

  • Щелкните правой кнопкой мыши проект и выберите «Свойства».
  • Нажмите «Путь сборки Java» в левом меню, затем выберите вкладку «Библиотеки».
  • Нажмите на Add JARs..., затем разверните проект и выберите файл jar, который вы уже переместили в папку ext-jars.

введите здесь описание изображения

  • Разверните добавленную банку и выберите Source attachment, затем нажмите Edit.
  • Выберите External location, затем нажмите External Folder...
  • Выберите исходную папку для Support v4, которая находится в [sdk-path]/extras/android/support/v4/src.

введите здесь описание изображения

  • Выберите Javadoc location, щелкните Edit, затем выберите Javadoc URL, затем щелкните Browse... и выберите расположение javadoc для поддержки v4, которое находится в [sdk-path]/docs/reference/.

введите здесь описание изображения – выберите вкладку Order and Export и проверьте android-support-v4.jar, которое вы только что добавили.

Я предлагаю вам также очистить проект и снова открыть Eclipse.

person M D P    schedule 19.09.2016