Как создать банку для проекта библиотеки Android

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

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

Ответ 1

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

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

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

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

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

Шаг № 5: ZIP или иным образом распространять скопированный проект библиотеки Android.

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

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

Ответ 2

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

  • Сделайте проект библиотеки обычным проектом, сняв флажок с IsLibrary.
  • Выполните проект в качестве приложения для Android. (Он не будет показывать никаких ошибок)
  • Вы найдете файл .jar в папке bin вместе с .apk.
  • Предоставьте вам .jar, которые хотят использовать вашу библиотеку.
  • Скажите им, чтобы импортировать внешнюю банку в путь сборки.

Это будет хорошо работать со всеми ресурсами. Спасибо всем. для вашего ответа

Ответ 3

Следуйте приведенным ниже инструкциям, чтобы получить распределяемую банку вашей библиотеки (проверена для проекта библиотеки без внешних зависимостей):

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

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

Ответ 4

Протестировано с помощью adt 22.2.1

  • Создайте проект библиотеки
  • Создать пустой проект
  • Добавить проект библиотеки в пустой проект
  • Проект сборки
  • В папке /gen вы найдете класс для вашего проекта библиотеки, это будет содержать ваши ресурсы для проекта lib.
  • Экспорт JAR (выберите только этот класс... из папки /gen )
  • Экспорт JAR из вашего проекта lib
  • Переименуйте экспортированные файлы в zip и слияние содержимого
  • Переименуйте окончательный файл как JAR и добавьте его в проект.

Ответ 5

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

Вы экспортируете свои классы утилит, которые не относятся к ресурсам в android, т.е. чистые классы java в качестве файла jar.

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

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

Сделать проект проектом библиотеки

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

Чтобы передать проект библиотеки в проект андроида

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

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

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

Ответ 6

Вот простой способ сделать это с помощью ant, нашел это в исходном коде 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>

Ответ 7

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

Ответ 8

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