Как сделать.jar из проекта Android Studio
Я использую AndroidStudio, и у меня есть этот проект, как показано:
То, что находится внутри синего круга, это myLib. myLib также должен использовать внешнюю библиотеку, которая находится внутри красного круга, и пакет apache (зеленый круг).
Поэтому я хочу, чтобы все это стало одним.jar, чтобы я мог использовать его в других проектах.
Было бы очень полезно пошаговое руководство, я новичок в мире разработчиков.
Спасибо!
11 ответов
Написать две задачи в build.gradle - deleteJar и createJar и добавить правило createJar.dependsOn(deleteJar, build)
Код сверху:
task deleteJar(type: Delete) {
delete 'libs/jars/logmanagementlib.jar'
}
task createJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('libs/jars/')
include('classes.jar')
rename('classes.jar', 'logmanagementlib.jar')
}
createJar.dependsOn(deleteJar, build)
Разверните панель Gradle справа и откройте все задачи в yourlibrary->others. Там вы увидите две новые задачи - createJar и deleteJar
После успешного выполнения задачи получите сгенерированный файл jar по пути, указанному в задаче createJar, т.е. libs/xxxx.jar.
скопируйте новый сгенерированный jar в папку lib вашего необходимого проекта -> щелкните правой кнопкой мыши -> выберите "добавить как библиотеку"
Если вы настроите код как простой Java-модуль в Gradle, тогда очень легко сделать так, чтобы Gradle предоставил вам jar-файл с содержимым. Этот jar-файл будет содержать только ваш код, а не другие библиотеки Apache, от которых он зависит. Я бы порекомендовал распространять это так; немного странно связывать зависимости внутри вашей библиотеки, и для пользователей этих библиотек более привычно включать эти зависимости самостоятельно (потому что в противном случае возникают конфликты тех проектов, которые уже связывают копии библиотеки, возможно, разных версий). Более того, вы избежите потенциальных проблем с лицензированием, связанных с перераспределением чужого кода, если вы опубликуете свою библиотеку.
Возьмите код, который также необходимо скомпилировать в jar, и переместите его в отдельный простой Java-модуль в Android Studio:
- МенюФайл > Новый модуль... > Библиотека Java
- Настройте библиотеку, имя пакета Java и имена классов в мастере. (Если вы не хотите, чтобы он создавал класс для вас, вы можете просто удалить его после создания модуля)
- В вашем коде Android установите зависимость от нового модуля, чтобы он мог использовать код в вашей новой библиотеке:
- Файл > Структура проекта > Модули > (ваш модуль Android) > Зависимости > + > Зависимость модуля. Смотрите скриншот ниже:
- Выберите ваш модуль из списка в появившемся диалоговом окне:
Надеюсь, ваш проект должен строиться нормально сейчас. После того, как вы выполните сборку, файл jar для вашей библиотеки Java будет помещен в каталог build / libs в каталоге вашего модуля. Если вы хотите собрать jar-файл вручную, вы можете запустить его задачу jar build file из окна Gradle:
Gradle уже есть Task
за что под other
Затем прокрутите вниз до createFullJarRelease
и щелкните по нему.
После этого вы найдете свой артефакт в
Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar
Просто добавьте это в build.gradle вашего Java-модуля. Он будет включать зависимые библиотеки в архиве.
mainClassName = "com.company.application.Main"
jar {
manifest {
attributes "Main-Class": "$mainClassName"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
Это приведет к созданию файла [module_name]/build/libs/[module_name].jar.
У меня была добавка; В новой версии Android Studio (для меня это: Android Studio Arctic Fox | 2020.3.1 Patch3Build #AI-203.7717.56.2031.7784292, построенный 1 октября 2021 г.) В панели Gradle по умолчанию у него нет задач. Перейдите в Android Studio --- Настройки - Экспериментальная - вкладка Gradle, снимите флажок «Не создавать список задач Gradle во время синхронизации Gradle», затем нажмите Файл - Синхронизировать проект с файлами Gradle, после чего задача появилась на панели Gradle.
Затем следуйте ответу: /questions/23467131/kak-sdelatjar-iz-proekta-android-studio/23467135#23467135
В случае, если этот принятый ответ не работает для вас
Использовать это
task createJar(type: Copy) {
from('build/intermediates/packaged-classes/release/')
into('libs/jars/')
include('classes.jar')
rename('classes.jar', 'plugin.jar')
}
Вместо этого
task createJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('libs/jars/')
include('classes.jar')
rename('classes.jar', 'logmanagementlib.jar')
}
Файл.jar будет автоматически сгенерирован, когда вы скомпилируете / запустите ваше приложение.
Вы можете найти свой файл class.jar в root_folder/app/build/ промежуточные /bundles/debug
Перейдите на вкладку Gradle в Android Studio, затем выберите проект библиотеки.
Затем перейдите в Задачи
Затем перейдите в Другое
Дважды щелкните bundleReleaseaar
Вы можете найти свой .aar
файлы под your_module/build/outputs/aar/your-release.aar
task deleteJar(type: Delete) {
delete 'libs/mylibrary.jar'
}
task exportjar(type: Copy) {
from('build/intermediates/compile_library_classes/release/')
into('libs/')
include('classes.jar')
rename('classes.jar', 'mylibrary.jar')
}
exportjar.dependsOn(deleteJar, build)
Если вы запустите задачу Gradle из AndroidStudio [Подробнее]
assembleRelease
//or
bundleReleaseAar
или через терминал
./gradlew <moduleName>:assembleRelease
//or
./gradlew <moduleName>:bundleReleaseAar
тогда вы сможете найти .aar
в
<project_path>/build/outputs/aar/<module_name>.aar
//if you do not see it try to remove this folder and repeat the command
.aar
(Android Library) файл состоит из .jar
(Java Library) и дополнительные ресурсы Android. .aar
файл представляет собой zip-архив с расширением aar, поэтому вы можете заменить .aar
с участием .zip
или беги
unzip "<path_to/module_name>.aar"
Я нашел способ найти выходные данные компилятора проекта (структура проекта> проект). затем найдите соответствующую папку модуля, который вы хотите превратить в банку, сожмите ее с помощью zip и измените расширение вывода с zip на jar.