Создать библиотеку Android Jar для распространения - PullRequest
158 голосов
/ 16 февраля 2011

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

Я ищу способ создания и распространения библиотеки с закрытым исходным кодом, которую можно использовать в других проектах Android, таких как традиционный JAR.Это потребует использования компилятора Android, так что это не файл JAR vanilla-Java.FWIW, мне не нужно вставлять ресурсы / макеты в JAR.

Я видел http://andparcel.com/, но это похоже на обходной путь, и я бы предпочел использовать что-то «официально поддерживаемое» Google,Кроме того, мне нужно убедиться, что созданный мной JAR-файл совместим со старой / новой версией Android SDK (т. Е. Мне нужен способ установить версию целевой платформы и т. Д.).

Используйте последние наборы инструментов Androidразрешить создание / использование двоичных файлов JAR?Можете ли вы указать на некоторые документы о том, как я могу это сделать?

Ответы [ 11 ]

49 голосов
/ 16 декабря 2011

Если вы создаете проект библиотеки Android без каких-либо ресурсов, ADT (впервые замеченный в r16) создаст файл .jar с тем же именем, что и у проекта, в папке «bin».

23 голосов
/ 08 апреля 2011

Android не предоставляет специальный вид Android-JAR. Но то, что вы можете сделать, это добавить build.xml в ваш проект и собрать JAR с помощью ant.

Мой build.xml выглядит так:

<project name="MyAndroidLib" default="dist" basedir=".">
  <description>
This is my Android lib
  </description>
  <!-- set global properties for this build -->
  <property name="src" location="src" />
  <property name="bin" location="bin" />

  <target name="jar">
    <jar destfile="MyAndroidLib.jar" basedir="bin/classes/">
      <!-- replace 'com' by what ever you are using -->
      <!-- as first part of the package name -->
      <!-- e.g. de, org, ... -->
      <!-- the ** is important to include the directory recursively -->
      <include name="com/**" />
    </jar>
  </target>
</project>

Создайте JAR, запустив ant jar в главной папке своих проектов.

17 голосов
/ 08 апреля 2011

Вы можете создать «обычный» Java-проект и импортировать оттуда Android.jar. Затем у вас будет доступ ко всем компонентам в SDK. Затем вы можете экспортировать свой проект как jar ... и загрузить его из вашего приложения для Android. Это прекрасно работает, и кажется, что это довольно простой способ сделать это.

15 голосов
/ 23 июля 2012

просто зайдите в свойства проекта, из которого вы хотите сделать jar. Нажмите на вкладку Android.и отметьте галочкой в ​​библиотеке Is.Теперь вы можете увидеть файл .jar в папке bin. Используйте его там, где хотите использовать.

10 голосов
/ 16 февраля 2011

Единственное решение, «официально поддерживаемое» Google, - это проект библиотеки, для которого требуется распространение исходного кода. Вы можете создать JAR обычным способом, но вы не можете включать или ссылаться на ресурсы внутри него.

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

8 голосов
/ 18 марта 2015

В последней сборке Android Studio 1.2 создание библиотеки JAR было сделано просто, просто наведи и щелкни.

Последовательность шагов:

  • Перейти к файлу -> Новый -> Новый модуль enter image description here
  • Выберите «Библиотека Java» в конце списка опций enter image description here
  • Введите имя библиотеки jar и имя класса в ней и нажмите кнопку Готово enter image description here
  • Вот так!

Следующим шагом будет добавление библиотеки Jar в качестве зависимости в вашем приложении. Просто так просто

  • Перейти к файлу -> Структура проекта -> Выбрать «приложение» -> Выбрать «Зависимость»
  • Выберите «+» внизу -> выберите «Зависимость модуля» enter image description here
  • Выберите модуль jar lib, который вы только что создали enter image description here enter image description here
  • Выберите Ok и вот оно!

.... Или вы можете просто добавить приведенную ниже строку в файл приложения Gradle

dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar']) // Default Gradle Task, should be already present
      compile 'com.android.support:appcompat-v7:21.0.3' // Default Gradle Task, should be already present

      compile project(':nameOfYourJarLibraryModule') // This is your jar library module
 }

Google продвигает Android Archive (AAR), даже несмотря на то, что поддерживаемый JAR возвращается в Android Studio. Чтобы узнать разницу между AAR и JAR, обратитесь к этой ссылке

6 голосов
/ 13 июня 2013

Попробуйте это: Это работает

1) превратить ваш проект библиотеки в обычный проект, отменив выбор флага IsLibrary.

2) Выполните ваш проект как приложение Android.(Не будет отображаться никакой ошибки)

3) вы найдете файл .jar в папке bin вместе с .apk.

4) Дайте вам .jar, кто хочет использовать вашу библиотеку.

5) Скажите им просто импортировать внешний jar-файл в путь сборки.

это будет прекрасно работать со всеми ресурсами.удачи.

1 голос
/ 27 февраля 2011

ADT создает папку bin, которая содержит все файлы классов для всех соответствующих исходных файлов и каталогов в вашем проекте. Вы можете использовать команду jar, создать архив jar, содержащий эти файлы и каталоги классов и предположительно вашу библиотеку, ноконечно, уровень платформы файлов классов будет предназначен только для текущего уровня сборки проекта - вам понадобится отдельный файл jar для каждого уровня платформы;Однако самое замечательное в этом то, что файл R.class включен в дерево каталогов проекта, и поэтому у вас есть доступ к его ресурсам.Я не знаю, если это официальный способ сделать что-то в Android, но у меня это сработало.

0 голосов
/ 26 мая 2015

Открыть файл project.properties введите значение android.library = истина

сохранить файл, из меню затмения для проекта, выберите «построить автоматически» затем выберите «очистить» под банкой создается новая банка

0 голосов
/ 15 июня 2013

.jar это просто файл .zip, который содержит файл .class (Вы можете попробовать изменить расширение любого файла .jar на .zip, а затем посмотреть результат). Легко, вы можете создать любую библиотеку .jar для любых целей, архивируя файл .class.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...