Я загрузил несколько исходных файлов библиотеки и хотел бы экспортировать их как файл Jar с помощью Android Studio. Есть ли способ экспортировать в файл jar с помощью студии Android?
редактировать:
Библиотека, которую я хочу экспортировать как jar, - это библиотека Android. Он называется StandOut и может быть загружен с GitHub. https://github.com/pingpongboss/StandOut
android
android-studio
Шалфей Пурпре
источник
источник
Ответы:
Невозможно экспортировать библиотеку Android в виде файла jar. Однако его можно экспортировать как
aar
файл.Aar
files - это новый двоичный формат для библиотек Android. Информация о них есть в Google I / O, видео о новой системе сборки .Сначала создайте библиотеку в Android Studio или из командной строки
gradle build
из корневого каталога вашей библиотеки.Это приведет к
<yourlibroot>/libs/build/yourlib.aar
файлу.Этот файл aar представляет собой двоичное представление вашей библиотеки и может быть добавлен в ваш проект вместо библиотеки в качестве проекта зависимости.
Чтобы добавить файл aar в качестве зависимости, вы должны опубликовать его в центральном хранилище maven или в локальном репозитории maven, а затем сослаться на файл aar в файле проекта
gradle.build
.Однако этот шаг немного запутан. Я нашел хорошее объяснение, как это сделать здесь:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
источник
Мне удалось создать исходный код библиотеки для скомпилированного
.jar
файла, используя подход из этого решения: https://stackoverflow.com/a/19037807/1002054Вот что я сделал:
1. Репозиторий библиотеки Checkout
Возможно, это была библиотека Volley.
2. Импортировать библиотеку в Android Studio.
Я использовал Android Studio 0.3.7. На этом этапе я столкнулся с некоторыми проблемами, а именно, мне пришлось скопировать
gradle
папку из нового проекта Android, прежде чем я смог импортировать исходный код библиотеки Volley, это может варьироваться в зависимости от исходного кода, который вы используете.3. Измените свой
build.gradle
файл.// If your module is a library project, this is needed //to properly recognize 'android-library' plugin buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.3' } } apply plugin: 'android-library' android { compileSdkVersion 17 buildToolsVersion = 17 sourceSets { main { // Here is the path to your source code java { srcDir 'src' } } } } // This is the actual solution, as in https://stackoverflow.com/a/19037807/1002054 task clearJar(type: Delete) { delete 'build/libs/myCompiledLibrary.jar' } task makeJar(type: Copy) { from('build/bundles/release/') into('build/libs/') include('classes.jar') rename ('classes.jar', 'myCompiledLibrary.jar') } makeJar.dependsOn(clearJar, build)
4. Запустите
gradlew makeJar
команду из корня вашего проекта.Я в моем случае я должен был копировать
gradlew.bat
иgradle
файлы из нового андроида проекта в моей библиотеке корня проекта. Вы должны найти файл скомпилированной библиотекиmyCompiledLibrary.jar
вbuild\libs
каталоге.Надеюсь, кому-то это пригодится.
Редактировать:
Предостережение
Хотя это работает, вы столкнетесь с исключением дублирующейся библиотеки при компиляции проекта с несколькими модулями, когда более одного модуля (включая модуль приложения) зависит от одного и того же
jar
файла (например, модули имеют собственный каталог библиотеки, на который есть ссылка вbuild.gradle
данном модуле) .В случае, если вам нужно использовать одну библиотеку более чем в одном модуле, я бы рекомендовал использовать этот подход: сборка Android gradle и библиотека поддержки.
источник
res
папка, то файл AAR именно такой - файл JAR сres
поддержкой папок.Начиная с Android Studio V1.0 файл jar доступен по следующей ссылке на проект:
версия отладки: "ваше_приложение" \ build \ intermediate \ bundles \ debug \ classes.jar
версия выпуска: "ваше_приложение" \ build \ intermediate \ bundles \ release \ classes.jar
Файл JAR создается в процессе сборки, в графическом интерфейсе Android Studio он находится в меню Build-> Make Project, а в строке CMD - «gradlew build».
источник
Включите в build.gradle следующее:
android.libraryVariants.all { variant -> task("generate${variant.name}Javadoc", type: Javadoc) { description "Generates Javadoc for $variant.name." source = variant.javaCompile.source ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) } task("javadoc${variant.name}", type: Jar) { classifier = "javadoc" description "Bundles Javadoc into a JAR file for $variant.name." from tasks["generate${variant.name}Javadoc"] } task("jar${variant.name}", type: Jar) { description "Bundles compiled .class files into a JAR file for $variant.name." dependsOn variant.javaCompile from variant.javaCompile.destinationDir exclude '**/R.class', '**/R$*.class', '**/R.html', '**/R.*.html' } }
Затем вы можете выполнить gradle с помощью:
./gradlew clean javadocRelease jarRelease
который создаст вам ваш Jar, а также javadoc jar вbuild/libs/
папке.РЕДАКТИРОВАТЬ: с инструментами Android Gradle 1.10. + Получение каталога Android SDK отличается от предыдущего. Вы должны изменить следующее (спасибо Vishal!):
android.sdkDirectory
вместо
android.plugin.sdkDirectory
источник
Мне удалось экспортировать файл jar в Android Studio с помощью этого руководства: https://www.youtube.com/watch?v=1i4I-Nph-Cw «Как экспортировать Jar из Android Studio»
Я обновил свой ответ, включив в него все шаги по экспорту JAR в Android Studio:
1) Создайте проект приложения Android, перейдите в app-> build.gradle
2) Измените в этом файле следующее:
изменить применить плагин: 'com.android.application', чтобы применить плагин: 'com.android.library'
удалите следующее: applicationId, versionCode и versionName
Добавьте следующий код:
// task to export contents as jar task exportJar(type: Copy) { from ('build/intermediates/bundles/release/') into ('release/') include ('classes.jar') rename('classes.jar', 'AndroidPlugin2.jar') } exportJar.dependsOn(deleteOldJar, build)
3) Не забудьте нажать кнопку синхронизации сейчас в этом файле (вверху справа или используйте кнопку синхронизации).
4) Щелкните вкладку Gradle (обычно в середине справа) и прокрутите вниз до exportjar.
5) Как только вы увидите сообщение об успешной сборке в окне запуска, с помощью обычного файлового проводника перейдите к экспортированной банке, используя путь: C: \ Users \ name \ AndroidStudioProjects \ ProjectName \ app \ release, вы должны увидеть в этом каталоге ваш файл jar.
Удачи :)
источник
Вот еще один, немного другой ответ с некоторыми улучшениями.
Этот код берет .jar прямо из .aar. Лично мне это дает немного больше уверенности в том, что биты, отправленные через .jar, такие же, как и отправленные через .aar. Это также означает, что если вы используете ProGuard, выходной jar-файл будет обфусцирован по желанию.
Я также добавил суперзадачу makeJar, которая делает jar-файлы для всех вариантов сборки.
task(makeJar) << { // Empty. We'll add dependencies for this task below } // Generate jar creation tasks for all build variants android.libraryVariants.all { variant -> String taskName = "makeJar${variant.name.capitalize()}" // Create a jar by extracting it from the assembled .aar // This ensures that products distributed via .aar and .jar exactly the same bits task (taskName, type: Copy) { String archiveName = "${project.name}-${variant.name}" String outputDir = "${buildDir.getPath()}/outputs" dependsOn "assemble${variant.name.capitalize()}" from(zipTree("${outputDir}/aar/${archiveName}.aar")) into("${outputDir}/jar/") include('classes.jar') rename ('classes.jar', "${archiveName}-${variant.mergedFlavor.versionName}.jar") } makeJar.dependsOn tasks[taskName] }
Для любознательного читателя я изо всех сил пытался определить правильные переменные и параметры, которые плагин com.android.library использует для именования файлов .aar. Я наконец нашел их в Android Open Source Project здесь .
источник
Мы можем экспортировать файл jar для проекта библиотеки Android без файлов ресурсов от студии Android. Это тоже требование, с которым я недавно столкнулся.
1. Настройте файл build.gradle.
// Task to delete old jar task clearJar(type: Delete){ delete 'release/lunademo.jar' } // task to export contents as jar task makeJar(type: Copy) { from ('build/intermediates/bundles/release/') into ('build/libs/') include ('classes.jar') rename('classes.jar', 'lunademo.jar') } makeJar.dependsOn(clearJar, build)
2. Запустите gradlew makeJar в корне вашего проекта.
Вы увидите свои библиотеки в каталоге как build / libs /, если вам повезет.
================================================== ==========
Если вы столкнулись с проблемой как «Исключение тайм-аута сокета» в командной строке, как показано ниже,
Вы можете выполнить следующие действия, чтобы открыть окно Gradle в правой части и щелкнуть «makeJar» в студии Android следующим образом:
Затем перейдите в каталог build / libs, вы увидите свой файл jar.
Надеюсь, что это будет полезно для вас.
Удачи @.@
Луна
источник