Создать библиотеку 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).
Примечание: у нас нет ресурсов в библиотеке.