Ситуация :
Я собираюсь использовать библиотеку Java, и у меня есть только файл AAR из репозитория Maven, но мне нужен файл JAR .
Предыстория:
Я пытался скомпилировать библиотеку, но ее структура Gradle была нестабильной. Поэтому я попросил скомпилированный файл jar, и его разработчик передал мне файл aar из какого-то репозитория Maven (разработчик не мог скомпилировать свой собственный проект). Конфигурация Gradle была беспорядочной, она зависела от нескольких библиотек, и Gradle выдавал некоторые исключения.
Я попытался использовать его в своей IDEA IDE, но он не смог его увидеть. Проект библиотеки должен быть скомпилирован в файл jar, верно?
Вопрос :
Что мне делать, чтобы преобразовать этот файл AAR в файл JAR?
Ответы:
В AAR файл состоит из JAR - файла и некоторые файлы ресурсов (это в основном стандартный почтовый файл с расширением пользовательского файла). Вот шаги для преобразования:
источник
.aar - это стандартный zip-архив, такой же, как в .jar. Просто измените расширение и, если оно не повреждено или что-то еще, все будет в порядке.
Если вам нужно, вы можете извлечь его в свою файловую систему, а затем переупаковать как jar.
1) Rename it to .jar 2) Extract: jar xf filename.jar 3) Repackage: jar cf output.jar input-file(s)
источник
Как отмечали многие другие люди, простое извлечение .jar из файла .aar не совсем его сокращает, поскольку ресурсы могут отсутствовать.
Вот шаги, которые сработали для меня (в контексте Android ваш опыт может отличаться, если у вас есть другие цели):
источник
Для тех, кто хочет делать это автоматически, я написал небольшой двухстрочный сценарий bash, который выполняет следующие две вещи:
Переименовывает извлеченный файл classes.jar как файл aar, но с новым расширением.
find . -name '*.aar' -exec sh -c 'unzip -d `dirname {}` {} classes.jar' \; find . -name '*.aar' -exec sh -c 'mv `dirname {}`/classes.jar `echo {} | sed s/aar/jar/g`' \;
Это оно!
источник
aar=jar+res+manifest+libs
. Пустьrest=res+manifest+libs
, чемjar(aar)=aar-rest
.Android Studio (версия: 1.3.2) позволяет легко получить доступ к .jar внутри .aar.
Бонус: он автоматически декомпилирует классы!
Просто выполните следующие действия:
File > New > New Module > Import .JAR/.AAR Package
чтобы импортировать вас .aar как модульДобавьте вновь созданный модуль как зависимость к вашему основному проекту (не уверен, что это необходимо)
Щелкните правой кнопкой мыши «classes.jar», как показано на снимке ниже, и нажмите «Показать в проводнике». Вот ваш .jar.
источник
The 'aar' bundle is the binary distribution of an Android Library Project. .aar file consists a JAR file and some resource files. You can convert it as .jar file using this steps 1) Copy the .aar file in a separate folder and Rename the .aar file to .zip file using any winrar or zip Extractor software. 2) Now you will get a .zip file. Right click on the .zip file and select "Extract files". Will get a folder which contains "classes.jar, resource, manifest, R.java, proguard(optional), libs(optional), assets(optional)". 3) Rename the classes.jar file as yourjarfilename.jar and use this in your project.
источник
Ресурсные .aar-проекты
Найти файл classes.jar внутри файла .aar довольно просто. Однако этот подход не работает, если в проекте .aar определены некоторые ресурсы (пример: R.layout.xyz)
Поэтому deaar из CommonsGuy помог мне получить действительный ADT-дружественный проект из файла .aar. В моем случае я преобразовал представление изображения в масштабе подвыборки . На настройку Ruby на моем ПК у меня ушло около часа.
Другой подход заключается в использовании android-maven-plugin для Eclipse / ADT, как пишет CommonsGuy в своем блоге .
Еще один подход может заключаться в том, чтобы просто клонировать весь желаемый проект как исходный из git и импортировать его как «Существующий проект Android».
источник
Если вы используете Gradle для своих сборок - есть плагин Gradle, который позволяет вам добавлять зависимость к вашим модулям java | kotlin | scala | ....
https://github.com/stepango/aar2jar
plugins { id 'java' id 'com.stepango.aar2jar' version “0.6” // <- this one } dependencies { compileOnlyAar "com.android.support:support-annotations:28.0.0" // <- Use any AAR dependencies }
источник