Как создать банку для Android Library Project

Мне нужно создать библиотеку, которую я собираюсь экспортировать клиенту в файл JAR. Есть ли способ создать банку с ресурсами в ней?

В Google AdMob есть такой jar-файл, в который входит файл ресурсов, такой как R$layout.class. На этой странице описан некоторый способ сделать это, но я не могу точно понять, как я должен импортировать проект библиотеки в приложение, используя метод, описанный выше.

8 ответов

Решение

Это самое близкое, что вы можете получить:

Шаг № 1: Создайте обычный проект библиотеки Android и запустите его.

Шаг № 2: Скопируйте этот проект библиотеки Android в другой каталог.

Шаг № 3: Создайте JAR из скомпилированных классов Java из исходного проекта библиотеки Android и поместите этот JAR в libs/ каталог копии, которую вы сделали в шаге #2. Вы должны иметь возможность запускать ProGuard на этом JAR вручную, хотя я этого не пробовал.

Шаг № 4: Удалить все внутри src/ каталог скопированного библиотечного проекта, оставленный позади и пустой src/ каталог.

Шаг № 5: Загрузите или распакуйте скопированный проект библиотеки Android.

Это даст вам проект библиотеки Android, такой как Play Services, где ресурсы доступны, а исходный код - нет.

ОБНОВЛЕНИЕ: в настоящее время еще более удачным подходом является упаковка вашего библиотечного проекта в виде AAR, который является родным способом Android для создания многократно используемого артефакта из вашего скомпилированного кода плюс необходимые ресурсы. В настоящее время (июль 2014 года), Gradle для Android, Android Studio и android-maven-plugin может создавать и потреблять AAR.

Это работает!

  1. Сделайте ваш проект библиотеки нормальным, сняв флажок IsLibrary.
  2. Выполните ваш проект как приложение для Android. (Это не покажет никакой ошибки)
  3. Вы найдете файл.jar в папке bin вместе с.apk.
  4. Дайте вам.jar, кто хочет использовать вашу библиотеку.
  5. Скажите им, чтобы просто импортировать внешний JAR-файл в путь сборки.

Это будет хорошо работать со всеми ресурсами. Благодарю всех вас. за ваш ответ

Выполните следующие шаги, чтобы получить распространяемый jar-файл вашей библиотеки (проверено для библиотечного проекта без внешних зависимостей):

  1. Создайте свой библиотечный проект. Убери это. Вы получите файл libraryProjectName.jar в папке bin. (Убедитесь, что "is Library" выбрана в проекте библиотеки.
  2. Скопируйте файл.jar в папку libs вашего целевого приложения.
  3. Обновите рабочее пространство и нажмите Ctr+Shift+O (на Windwows/Linux) или Cmd+Shift+O (на Mac), чтобы разрешить любые зависимости импорта из библиотеки добавлены.

Комментарий в случае возникновения каких-либо проблем.

Протестировано с ADT 22.2.1

  1. Создайте свой библиотечный проект
  2. Создать пустой проект
  3. Добавить проект библиотеки в ваш пустой проект
  4. Построить проект
  5. В папке /gen вы найдете класс для вашего библиотечного проекта, который будет содержать ваши ресурсы для проекта lib.
  6. Экспорт JAR (выберите только этот класс... из папки /gen)
  7. Экспортируйте JAR из вашего проекта lib
  8. Переименуйте экспортированные файлы в zip и объедините контент
  9. Переименуйте окончательный файл в JAR и добавьте его в проект.

Вы не можете упаковать файлы ресурсов в jar. Вы можете экспортировать свой проект как библиотечный проект.

Вы экспортируете свои служебные классы, которые не ссылаются на ресурсы в Android, то есть чистые классы Java, как файл JAR.

Проверьте ссылку ниже

http://developer.android.com/tools/projects/index.html

Сделать ваш проект библиотечным проектом

Щелкните правой кнопкой мыши по вашему проекту. Перейти к свойствам. Выберите Android. Убедитесь, что библиотека проверена.

Для ссылки на проект библиотеки в вашем проекте Android

Щелкните правой кнопкой мыши по вашему проекту. Перейти к свойствам. Выберите Android. Нажмите Добавить. Просмотрите и проект библиотеки.

Цитирование из документов

Проект библиотеки отличается от стандартного проекта приложения Android тем, что вы не можете скомпилировать его непосредственно в свой собственный файл.apk и запустить его на устройстве Android. Точно так же вы не можете экспортировать проект библиотеки в автономный файл JAR, как это было бы сделано для настоящей библиотеки. Вместо этого вы должны скомпилировать библиотеку косвенно, ссылаясь на библиотеку в зависимом приложении и создавая это приложение.

Вот простой способ сделать это с помощью муравья, найденный в исходном коде Volley. Добавьте приведенный ниже код в custom_rules.xml, а затем создайте с ant jar

<?xml version="1.0" encoding="UTF-8"?>
<project name="volley-rules" default="help">

  <!-- A rule to generate the JAR for inclusion in an Android
       application. Output file will be bin/volley.jar -->
  <target name="jar" depends="-compile">
    <jar destfile="bin/volley.jar"
         basedir="bin/classes" />
  </target>
</project>

Согласно последней версии Android Studio v1.2, это так же просто, как выпечка. Уже ответили полное решение со скриншотами по этой ссылке

С Eclipse ADT v22.6.2 вы можете просто экспортировать jar, нажав File->Export->Java->Jar File, выбрать каталоги и место для сохранения.

Другие вопросы по тегам