Как создать банку для 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.
Это работает!
- Сделайте ваш проект библиотеки нормальным, сняв флажок IsLibrary.
- Выполните ваш проект как приложение для Android. (Это не покажет никакой ошибки)
- Вы найдете файл.jar в папке bin вместе с.apk.
- Дайте вам.jar, кто хочет использовать вашу библиотеку.
- Скажите им, чтобы просто импортировать внешний JAR-файл в путь сборки.
Это будет хорошо работать со всеми ресурсами. Благодарю всех вас. за ваш ответ
Выполните следующие шаги, чтобы получить распространяемый jar-файл вашей библиотеки (проверено для библиотечного проекта без внешних зависимостей):
- Создайте свой библиотечный проект. Убери это. Вы получите файл libraryProjectName.jar в папке bin. (Убедитесь, что "is Library" выбрана в проекте библиотеки.
- Скопируйте файл.jar в папку libs вашего целевого приложения.
- Обновите рабочее пространство и нажмите
Ctr+Shift+O
(на Windwows/Linux) илиCmd+Shift+O
(на Mac), чтобы разрешить любые зависимости импорта из библиотеки добавлены.
Комментарий в случае возникновения каких-либо проблем.
Протестировано с ADT 22.2.1
- Создайте свой библиотечный проект
- Создать пустой проект
- Добавить проект библиотеки в ваш пустой проект
- Построить проект
- В папке /gen вы найдете класс для вашего библиотечного проекта, который будет содержать ваши ресурсы для проекта lib.
- Экспорт JAR (выберите только этот класс... из папки /gen)
- Экспортируйте JAR из вашего проекта lib
- Переименуйте экспортированные файлы в zip и объедините контент
- Переименуйте окончательный файл в 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, выбрать каталоги и место для сохранения.