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

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

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

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

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

11 ответов

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

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 в главной папке ваших проектов.

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

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

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

Шаги, чтобы следовать:

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

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

  • Перейти к файлу -> Структура проекта -> Выбрать приложение -> Выбрать "Зависимость"
  • Выберите "+" внизу -> выберите "Зависимость модуля"
  • Выберите модуль jar lib, который вы только что создали
  • Выберите 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, воспользуйтесь этой ссылкой

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам