Создайте библиотеку Jar для Android для распространения

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

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

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

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

Ответ 1

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

Ответ 2

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 в основной папке проектов.

Ответ 3

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

Ответ 4

просто перейдите к свойствам проекта, который вы хотите сделать jar.Click на вкладке Android. и отметьте в библиотеке Is. теперь вы можете видеть файл .jar в папке bin.use, где вы хотите использовать.

Ответ 5

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

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

Ответ 6

Попробуйте следующее: Это работает

1) сделайте проект вашей библиотеки нормальным проектом, сняв флажок IsLibrary.

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

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

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

5) Скажите им, чтобы импортировать внешнюю банку в путь сборки.

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

Ответ 7

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

Этапы:

  • Перейти к файлу → Новый → Новый модуль enter image description here
  • Выберите "Библиотека Java" в конце списка опций enter image description here
  • Введите имя jar lib и имя класса в нем и нажмите кнопку завершения enter image description here
  • Вот оно!

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

  • Перейти к файлу → Структура проекта → Выбрать "приложение" → Выбрать "Зависимость"
  • Выберите "+" внизу → Выберите "Dependency Module" enter image description here
  • Выберите свой модуль jar lib, который вы только что создали enter image description hereenter image description here
  • Выберите "ОК" и это будет!

.... Или вы можете просто добавить приведенную ниже строку в файл приложения 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-архив (AAR), хотя поддержка JAR возвращается в андроид-студию. Чтобы узнать разницу между AAR и JAR, обратитесь к этой ссылке

Ответ 8

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

Ответ 9

В нашем проекте мы создаем apk (используя apkbuilder), который установлен в /system/framework, и добавил этот apk в classpath по умолчанию. Для компиляции приложений с использованием jar мы создаем файл jar (используя jar c).

Примечание. У нас нет ресурсов в библиотеке.

Ответ 10

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

Ответ 11

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

сохранить файл, из меню затмения для проекта,  выберите 'build automatically' затем выберите 'clean' новый банку создается в корзине