Как сделать.jar из проекта Android Studio

Я использую AndroidStudio, и у меня есть этот проект, как показано:

То, что находится внутри синего круга, это myLib. myLib также должен использовать внешнюю библиотеку, которая находится внутри красного круга, и пакет apache (зеленый круг).

Поэтому я хочу, чтобы все это стало одним.jar, чтобы я мог использовать его в других проектах.

Было бы очень полезно пошаговое руководство, я новичок в мире разработчиков.

Спасибо!

11 ответов

  • Откройте build.gradle для проекта библиотеки

  • Написать две задачи в 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

  • Двойной клик на createJar

  • После успешного выполнения задачи получите сгенерированный файл jar по пути, указанному в задаче createJar, т.е. libs/xxxx.jar.

  • скопируйте новый сгенерированный jar в папку lib вашего необходимого проекта -> щелкните правой кнопкой мыши -> выберите "добавить как библиотеку"

Если вы настроите код как простой Java-модуль в Gradle, тогда очень легко сделать так, чтобы Gradle предоставил вам jar-файл с содержимым. Этот jar-файл будет содержать только ваш код, а не другие библиотеки Apache, от которых он зависит. Я бы порекомендовал распространять это так; немного странно связывать зависимости внутри вашей библиотеки, и для пользователей этих библиотек более привычно включать эти зависимости самостоятельно (потому что в противном случае возникают конфликты тех проектов, которые уже связывают копии библиотеки, возможно, разных версий). Более того, вы избежите потенциальных проблем с лицензированием, связанных с перераспределением чужого кода, если вы опубликуете свою библиотеку.

Возьмите код, который также необходимо скомпилировать в jar, и переместите его в отдельный простой Java-модуль в Android Studio:

  1. МенюФайл > Новый модуль... > Библиотека Java
  2. Настройте библиотеку, имя пакета Java и имена классов в мастере. (Если вы не хотите, чтобы он создавал класс для вас, вы можете просто удалить его после создания модуля)
  3. В вашем коде Android установите зависимость от нового модуля, чтобы он мог использовать код в вашей новой библиотеке:
  4. Файл > Структура проекта > Модули > (ваш модуль Android) > Зависимости > + > Зависимость модуля. Смотрите скриншот ниже:введите описание изображения здесь
  5. Выберите ваш модуль из списка в появившемся диалоговом окне:введите описание изображения здесь

Надеюсь, ваш проект должен строиться нормально сейчас. После того, как вы выполните сборку, файл jar для вашей библиотеки Java будет помещен в каталог build / libs в каталоге вашего модуля. Если вы хотите собрать jar-файл вручную, вы можете запустить его задачу jar build file из окна Gradle:введите описание изображения здесь

Gradle уже есть Task за что под other

Затем прокрутите вниз до createFullJarRelease и щелкните по нему.

Задачи Gradle

После этого вы найдете свой артефакт в

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

расположение файла jar

  1. Перейдите на вкладку Gradle в Android Studio, затем выберите проект библиотеки.

  2. Затем перейдите в Задачи

  3. Затем перейдите в Другое

  4. Дважды щелкните 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.

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