Как создать jar файл android studio

Обновлено: 06.07.2024

В этой статье я расскажу как создать библиотеку, которая использует другие библиотеки и при этом уместить всё в одном jar.

Допустим мы пишем библиотеку, она использует другие библиотеки и, в частности, для примера, support library. Если бы мы использовали maven, то в pom файле просто прописали зависимости и не парились. Но что если нашу библиотеку будут использовать люди, которые не пользуются системами сборок или пользуются ant' ом?

Мы можем положить зависимости рядом с нашим jar. Но тогда неизбежны конфликты библиотек разных версий, например, если мы используем одну версию support library, а в самом приложении другая. Тогда придется руками одну из них удалять.

Можно пойти другим путем, вспомним что jar это обычный zip файл. Мы распакуем все зависимости, получим байт-код в виде .class файлов, далее компилируем код нашей библиотеки, кладем все .class файлы в одно место и собираем из них jar. Но если в приложении используются те же библиотеки что и у нас, то получим ошибку что в проекте два одинаковых класса.

Для решения этой проблемы воспользуемся утилитой jarjar. Она переименовывает все классы в jar файле. На примере support library — все классы находятся в пакете android.support.v4

Создадим правило для переименования классов android.support.v4.* в inner.android.support.v4.*
и сохраним в файл rules.txt

В итоге получили jar'ку с переименованными классами. Далее мы распаковываем все наши зависимости с переименованными классами и компилируем. Получаем библиотеку, которая содержит весь код нужный для выполнения.

Наша библиотека содержит код всех зависимостей, которые могут весить немало. Чтобы уменьшить размер применим proguard для удаления неиспользуемых классов и методов.

И в заключение небольшой скрипт на gradle который всё это делает


Вои и всё, после выполнения скрипта мы получим proguard_library.jar, который можно добавлять к приложению и использовать.

В моём случае библиотека использует support library и dropbox sdk, и весит 50 кБ.

Этим же способом можно уменьшать размер вашего apk, все зависимости можно подключать не как jar файлы, а распаковывать в .classes и применять proguard, тогда он удалит неиспользуемые классы из библиотек. Так можно подключать к проекту тяжелые фреймворки не боясь увеличения размера apk

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

1. Создание библиотеки Android

Если ваша библиотека будет состоять только из классов Java, упаковка их как JAR и распространение ее с использованием хостинга файлов, возможно, самый быстрый и простой способ поделиться ею. Если вам нужно было создать ее из консоли, достаточно было бы выполнить следующую команду:

Однако этот учебник показывает, как работать с более сложными библиотеками, которые содержат не только классы Java, но также различные типы файлов и ресурсов XML. Такие библиотеки создаются как модули библиотеки Android и обычно упаковываются как файлы AAR.

Давайте создадим простую библиотеку Android, которая предлагает пользовательский View для разработчиков, которые его используют.

Шаг 1: добавьте новый модуль

Для начала добавьте в проект новый модуль Android, выбрав Новый> Новый модуль в меню Файл. Вам будет показан следующий экран, который предлагает множество вариантов:

New module dialog
New module dialog
New module dialog

Выберите Библиотека Android и нажмите Далее. В следующей форме введите имя своей библиотеки и нажмите Далее. Я буду называть эту библиотеку mylittlelibrary.

На последнем экране выберите Не добавлять активность и нажмите Готово.

Теперь у вашего проекта будет два модуля: один для приложения и один для библиотеки. Вот как выглядит его структура:

Structure of project
Structure of project
Structure of project

Шаг 2. Создание макета.

Создайте новый формат XML, щелкнув правой кнопкой мыши папку res вашего библиотечного модуля и выбрав New> XML> Layout XML File. Назовите его my_view.xml.

Чтобы этот учебник был простым, мы создадим пользовательский View , в котором есть два виджета TextView внутри LinearLayout . После добавления некоторого текста в виджеты TextView XML-файл макета должен выглядеть так:

Шаг 3. Создание класса Java

Создайте новый класс Java и назовите его MyView.java. Обязательно поместите этот файл в каталог src библиотечного модуля, а не в модуль приложения.

Чтобы этот класс работал как View , сделайте его подклассом класса LinearLayout . Android Studio предложит добавить в класс несколько конструкторов. После их добавления новый класс должен выглядеть следующим образом:

Как вы можете видеть, теперь у нас есть два конструктора. Чтобы избежать добавления кода инициализации для каждого конструктора, вызовите метод с именем initialize из каждого конструктора. Добавьте следующий код к каждому конструктору:

В методе initialize вызовите inflate , чтобы связать макет, который мы создали на предыдущем шаге с классом.

2. Использование библиотеки локально

Теперь, когда библиотека готова, давайте воспользуемся ею в модуле app того же проекта, чтобы убедиться, что проблем нет. Для этого добавьте ее как compile зависимость в файле build.gradle модуля app:

Создайте новый класс Java MainActivity внутри модуля приложения. Сделайте его подклассом класса Activity и переопределите его метод onCreate .

Внутри метода onCreate создайте экземпляр пользовательского представления, используя его конструктор. Передайте его методу setContentView , чтобы он заполнил все пространство экрана Activity :

Теперь ваша Activity готова. Добавив его в манифест приложения, создайте проект и разверните приложение на устройстве Android. После запуска приложения вы сможете увидеть пользовательский вид.

3. Публикация вашей библиотеки на Bintray

Bintray - популярная платформа, которую вы можете использовать для публикации Android-библиотек. Она бесплатная и простая в использовании.

Начните с создания учетной записи на Bintray. После входа в свою учетную запись вы увидите, что у вас уже есть шесть репозиториев. Вы можете использовать один из них или создать новый репозиторий. Для этого урока я буду использовать репозиторий, называемый maven, который является репозиторием Maven.

Homepage
Homepage
Homepage

Перейдите на страницу своего профиля и нажмите кнопку Изменить. На следующей странице щелкните ссылку API Key, чтобы просмотреть свой ключ API.

API Key
API Key
API Key

Запомните ключ, потому что вам понадобится его аутентификация при использовании плагина Bintray.

Шаг 1: добавьте необходимые плагины

Чтобы взаимодействовать с Bintray в Android Studio, вы должны включить плагин Bintray в dependencies файла build.gradle вашего проекта.

Поскольку вы загружаете библиотеку в репозиторий Maven, вы также должны добавить плагин Maven, как показано ниже.

Шаг 2: Примените плагины

Откройте файл build.gradle вашего библиотечного модуля и добавьте следующий код, чтобы применить плагины, добавленные нами на предыдущем шаге.

Шаг 3: укажите детали POM

Плагин Bintray будет искать файл POM при загрузке библиотеки. Несмотря на то, что плагин Maven генерирует его для вас, вы должны указать значение тега groupId и значение тега version самостоятельно. Для этого используйте переменные group и version в вашем файле gradle.

Если вы знакомы с Maven, и вам интересно, почему мы не указали значение тега artifactId , это потому, что плагин Maven по умолчанию использует имя вашей библиотеки как artifactId .

Шаг 4: Создание JAR исходников

Чтобы соответствовать стандартам Maven, ваша библиотека также должна иметь JAR-файл, содержащий исходные файлы библиотеки. Чтобы сгенерировать JAR-файл, создайте новую задачу Jar , generateSourcesJar и укажите местоположение исходных файлов, используя функцию from .

Шаг 5: Создание JAR Javadoc JAR

Также рекомендуется, чтобы ваша библиотека имела JAR-файл, содержащий его Javadocs. Поскольку в настоящее время у вас нет Javadocs, создайте новую задачу Javadoc , generateJavadocs, чтобы сгенерировать их. Используйте переменную source , чтобы указать расположение исходных файлов. Вы также должны обновить переменную classpath , чтобы задача могла находить классы, принадлежащие Android SDK. Вы можете сделать это, добавив к нему возвращаемое значение метода android.getBootClasspath .

Затем, чтобы создать JAR из Javadocs, создайте задачу Jar , generateJavadocsJar и передайте свойство destinationDir для generateJavaDocs в его функцию from. Ваша новая задача должна выглядеть так:

Чтобы задача generateJavadocsJar запускалась только после завершения задачи generateJavadocs , добавьте следующий фрагмент кода, который использует метод dependOn для порядка задач:

Шаг 6: Включите сгенерированные файлы JAR

Чтобы включить исходные файлы JAR и Javadoc в список артефактов, которые будут загружены в репозиторий Maven, вы должны добавить имена своих задач в configuration с именем archives. Для этого используйте следующий фрагмент кода:

Шаг 7: Запуск задач

Настало время запустить задачи, которые мы создали на предыдущих шагах. Откройте окно Gradle Projects и найдите задачу с именем install.

Install task
Install task
Install task

Дважды щелкните его, чтобы выполнить задачи, связанные с библиотечным модулем. По завершении работы у вас будет все, что вам нужно, чтобы опубликовать вашу библиотеку, действительный файл POM, файл AAR, источник JAR и JAR Javadocs.

Шаг 8: Настройте плагин Bintray

Чтобы настроить плагин, вы должны использовать замыкание bintray в файле Gradle. Сначала выполните аутентификацию с использованием переменных user и key , соответствующих вашему имени пользователя Bintray и API-интерфейсу соответственно.

В Bintray ваша библиотека будет находиться внутри пакета Bintray. Вы должны предоставить подробную информацию об этом, используя интуитивно названные параметры repo , name , licenses , и vcsUrl для замыкания pkg . Если пакет не существует, он будет для вас автоматически создан.

Когда вы загружаете файлы в Bintray, они будут связаны с версией пакета Bintray. Следовательно, pkg должен содержать замыкание version , для свойства name которого задано уникальное имя. Кроме того, вы также можете предоставить описание, дату выпуска и тег Git с использованием параметров desc , release и vcsTag .

Наконец, чтобы указать файлы, которые должны быть загружены, установите значение параметра configuration в archives.

Это пример конфигурации:

Шаг 9: Загрузка файлов с помощью плагина Bintray

Откройте окно Gradle Projects снова и найдите задачу bintrayUpload. Дважды щелкните его, чтобы начать загрузку файлов.

Bintray upload
Bintray upload
Bintray upload

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

Notification about unpublished files
Notification about unpublished files
Notification about unpublished files

4. Использование библиотеки из Bintray

Ваша библиотека теперь доступна как пакет Bintray. После того, как вы поделитесь URL-адресом своего репозитория Maven, вместе с идентификатором группы, идентификатором артефакта и номером версии, любой разработчик может получить доступ к вашей библиотеке. Например, чтобы использовать созданную библиотеку, разработчикам пришлось бы включить следующий фрагмент кода:

Обратите внимание, что разработчик должен явно включать ваш репозиторий в список repositories , прежде чем добавлять библиотеку в качестве compile зависимости.

5. Добавление библиотеки в JCenter

По умолчанию Android Studio ищет библиотеки в репозитории JCenter. Если вы включите свою библиотеку в репозиторий JCenter, разработчикам не нужно будет добавлять что-либо в свой список repositories .

JCenter button
JCenter button
JCenter button

Compose message page
Compose message page
Compose message page

Link to JCenter
Link to JCenter
Link to JCenter

Любой разработчик теперь может использовать вашу библиотеку, не меняя список repositories .

Заключение

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

Чтобы узнать больше о Bintray, посетите руководство пользователя Bintray.

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

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

  1. сделайте свой проект библиотеки обычным проектом, сняв флажок IsLibrary.
  2. выполните свой проект в качестве приложения для Android. (Он не будет показывать никаких ошибок)
  3. вы найдете .jar-файл в папке bin вместе с ним .АПК.
  4. дам тебе .банки, которые хотят использовать вашу библиотеку.
  5. скажите им, чтобы просто импортировать внешнюю банку в путь сборки.
  1. создать проект библиотеки. Очистить его. Вы получите libraryProjectName.jar-файл внутри папки bin. (Убедитесь, что "библиотека" и избранные в проект библиотеки.
  2. скопировать .jar-файл в libs
  1. создать проект библиотеки
  2. создать пустой проект
  3. Добавить проект библиотеки в пустой проект
  4. строительство
  5. в папке /gen вы найдете класс для вашего проекта библиотеки, это будет содержать ваши ресурсы для проекта lib.
  6. экспорт JAR (выберите только этот класс . с /папка-го поколения)
  7. экспорт JAR из вашего проекта lib
  8. переименование экспортируемых файлов для zip и слияния содержимого
  9. переименуйте конечный файл в JAR и добавьте его в проект.

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

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

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

У меня есть довольно последняя версия android studio, я создал модуль под проектом, который в основном должен быть библиотекой , когда я его создаю, он создает файл ".aar", то, что я хочу, это файл .jar, так как эта библиотека также должна использоваться с eclipse.

Библиотека также содержит активность, есть ли какой-нибудь способ, с помощью которого я могу создать файл .jar, который я могу использовать и на Eclipse, и на Android Studio ?

Я уже создал этот модуль и попробовал построить, в результате он сгенерировал файл .aar, а не файл .jar.

3 ответа

Я хочу создать файл jar из одного проекта android для другого проекта android. Я хочу выбрать только определенные классы, а не все классы из проекта. Я попробовал eclipse-export way создать файл jar.Jar, и он также содержит все выбранные файлы классов,после добавления созданного файла jar в.

Как добавить файл jar в проект Android studio. Например, я пытаюсь добавить ksoap2-android-assembly-3.1.1-jar-с-dependencies.jar в проект. Нигде не вижу возможности добавить файл jar в проект, чтобы получить доступ к библиотечным функциям внутри него.

Я нашел способ добиться этого, очень простой, используя Gradle 2.2.1:

Поместите это в свой библиотечный модуль. Он скомпилирует его как релиз и создаст файл JAR в: build/libs .

bash gradlew jar или используйте свой IDE для целевой задачи jar Gradle.

aar не имеет отношения к AS или eclipse, но является ndroid AR chive для Android приложений, таких как J ava AR chive для java приложений. Поскольку Android основан на java, можно использовать банки. Но чтобы учесть android специальностей, таких как пакеты ресурсов, aar-это правильная вещь для использования.

В настоящее время сборки на основе gradle, похоже , не позволяют создавать jar с android studio, я решил пойти на Intelij, у него есть необходимая опция и делает то, что я хочу, я могу использовать community edition.

***Update**** Даже jar , созданный Intelij с ресурсами , не работает, очевидно, что нелегко иметь jar с ресурсом, поэтому я решил выбрать .aar и надеялся, что Eclipse также получит поддержку .aar, когда gradle поддерживает земли там, так как это было моей главной заботой.

Как создать файл JAR из проекта Android Studio? Я следовал за многими гидами без особого успеха. Я попытался скомпилировать как обычный и библиотечный проект, но ни один файл JAR не был автоматически сгенерирован. Должен ли я сделать это вручную или прибегнуть к Ant, чтобы получить файл Jar?

Я работаю над проектом, который должен стать библиотекой SDK, которую другие разработчики интегрируют в свой проект Android. Я хочу создать и экспортировать библиотеку Jar одного из моих модулей Android из проекта Android studio. Этот модуль sdk содержит комментарии javadoc, и я хочу создать.

Похожие вопросы:

Как создать файл jar из проекта android, который содержит библиотеку facebook и библиотеку viewPager в android studio

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

Я работаю с базовым приложением android , я не знаю, куда добавить файл jar в android studio.

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

Как добавить файл jar в проект Android studio. Например, я пытаюсь добавить ksoap2-android-assembly-3.1.1-jar-с-dependencies.jar в проект. Нигде не вижу возможности добавить файл jar в проект, чтобы.

Как создать файл JAR из проекта Android Studio? Я следовал за многими гидами без особого успеха. Я попытался скомпилировать как обычный и библиотечный проект, но ни один файл JAR не был.

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

Я не могу найти способ создать файл Android Studio jar для рабочего стола. Я использую библиотеку Android Studio 1.3.2 и LibGDX. Я создал видеоигру и хочу поделиться ею с другими PC без.

В android studio я пытаюсь создать файл .jar своей библиотеки, и он содержит еще .jar зависимостей. После добавления созданного файла .jar в другой проект и запуска он дает мне.

Я скачал такой проект с открытым исходным кодом android из РЕПО github. , и классы , которые я хочу отредактировать , находятся под.

Читайте также: