Как создать 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, выбрав Новый> Новый модуль в меню Файл. Вам будет показан следующий экран, который предлагает множество вариантов:
Выберите Библиотека Android и нажмите Далее. В следующей форме введите имя своей библиотеки и нажмите Далее. Я буду называть эту библиотеку mylittlelibrary.
На последнем экране выберите Не добавлять активность и нажмите Готово.
Теперь у вашего проекта будет два модуля: один для приложения и один для библиотеки. Вот как выглядит его структура:
Шаг 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.
Перейдите на страницу своего профиля и нажмите кнопку Изменить. На следующей странице щелкните ссылку API Key, чтобы просмотреть свой ключ API.
Запомните ключ, потому что вам понадобится его аутентификация при использовании плагина 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.
Дважды щелкните его, чтобы выполнить задачи, связанные с библиотечным модулем. По завершении работы у вас будет все, что вам нужно, чтобы опубликовать вашу библиотеку, действительный файл 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. Вы увидите уведомление, в котором говорится, что у вас есть четыре неопубликованных файла. Чтобы опубликовать эти файлы, нажмите ссылку Опубликовать.
4. Использование библиотеки из Bintray
Ваша библиотека теперь доступна как пакет Bintray. После того, как вы поделитесь URL-адресом своего репозитория Maven, вместе с идентификатором группы, идентификатором артефакта и номером версии, любой разработчик может получить доступ к вашей библиотеке. Например, чтобы использовать созданную библиотеку, разработчикам пришлось бы включить следующий фрагмент кода:
Обратите внимание, что разработчик должен явно включать ваш репозиторий в список repositories , прежде чем добавлять библиотеку в качестве compile зависимости.
5. Добавление библиотеки в JCenter
По умолчанию Android Studio ищет библиотеки в репозитории JCenter. Если вы включите свою библиотеку в репозиторий JCenter, разработчикам не нужно будет добавлять что-либо в свой список repositories .
Любой разработчик теперь может использовать вашу библиотеку, не меняя список repositories .
Заключение
В этом уроке вы узнали, как создать простой модуль библиотеки Android и опубликовать его как в своем собственном репозитории Maven, так и в репозитории JCenter. По пути вы также научились создавать и выполнять различные типы задач gradle.
Чтобы узнать больше о Bintray, посетите руководство пользователя Bintray.
Мне нужно создать библиотеку, которую я собираюсь экспортировать клиенту в файл jar. Есть ли способ создать банку с ресурсами в ней?
У Google adMob есть такая банка, которая включает в себя файл ресурсов, такой как R$layout.класс в нем. на этой странице описывает какой-то способ сделать это, но я не могу точно понять, как я должен импортировать проект библиотеки в приложение, используя метод выше.
- сделайте свой проект библиотеки обычным проектом, сняв флажок IsLibrary.
- выполните свой проект в качестве приложения для Android. (Он не будет показывать никаких ошибок)
- вы найдете .jar-файл в папке bin вместе с ним .АПК.
- дам тебе .банки, которые хотят использовать вашу библиотеку.
- скажите им, чтобы просто импортировать внешнюю банку в путь сборки.
- создать проект библиотеки. Очистить его. Вы получите libraryProjectName.jar-файл внутри папки bin. (Убедитесь, что "библиотека" и избранные в проект библиотеки.
- скопировать .jar-файл в libs
- создать проект библиотеки
- создать пустой проект
- Добавить проект библиотеки в пустой проект
- строительство
- в папке /gen вы найдете класс для вашего проекта библиотеки, это будет содержать ваши ресурсы для проекта lib.
- экспорт JAR (выберите только этот класс . с /папка-го поколения)
- экспорт JAR из вашего проекта lib
- переименование экспортируемых файлов для zip и слияния содержимого
- переименуйте конечный файл в 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. , и классы , которые я хочу отредактировать , находятся под.
Читайте также: