Я намерен использовать библиотеку Java, и у меня есть только файл AAR из репозитория Maven, но мне нужен файл JAR.
Предыстория:
Я пытался скомпилировать библиотеку, но ее структура Gradle была нестабильной. Итак, я попросил скомпилированный файл jar, и его разработчик передал мне файл aar из какого-то репозитория Maven (разработчик не смог скомпилировать свой собственный проект). Конфигурация Gradle была беспорядочной, она зависела от нескольких библиотек, и Gradle выдавал некоторые исключения.
Я пытался использовать это в своей IDEA IDE, но она не смогла его увидеть. Проект библиотеки должен иметь возможность компилироваться в файл jar, верно?
Вопрос:
Что я должен сделать, чтобы преобразовать этот файл AAR в файл JAR?
Переведено автоматически
Ответ 1
Файл AAR состоит из файла JAR и некоторых файлов ресурсов (по сути, это стандартный zip-файл с пользовательским расширением). Вот шаги для преобразования:
Извлеките файл AAR с помощью стандартного zip-файла (переименуйте его в *.zip, чтобы упростить задачу)
Найдите classes.jar файл в извлеченных файлах
Переименуйте его по своему усмотрению и используйте этот файл jar в своем проекте
Ответ 2
.aar - это стандартный zip-архив, тот же, что используется в .jar. Просто измените расширение и, предполагая, что оно не повреждено или что-то еще, все должно быть в порядке.
При необходимости вы можете извлечь его в свою файловую систему, а затем переупаковать в jar.
1) Rename it to .jar 2) Extract: jar xf filename.jar 3) Repackage: jar cf output.jar input-file(s)
Ответ 3
Как указывали многие другие пользователи, простое извлечение .jar из файла .aar не совсем сокращает его, поскольку могут отсутствовать ресурсы.
Вот шаги, которые сработали у меня (в контексте Android ваш пробег может отличаться, если у вас другие цели):
Переименуйте файл .aar в .zip и извлеките.
Извлеченная папка представляет собой проект ADT, который вы можете импортировать в Eclipse с некоторыми незначительными изменениями (см. Ниже)!
В извлеченной папке переименуйте содержащийся файл classes.jar во что угодно (в этом примере myProjectLib.jar) и переместите его в папку lib внутри извлеченной папки.
Теперь, чтобы Eclipse смог его принять, вам нужно поместить два файла в извлеченную корневую папку:
.проект
.путь к классу
Для этого создайте новый фиктивный проект Android в Eclipse и скопируйте файлы поверх него или скопируйте из существующего проекта Android.
Откройте файл .project, найдите тег XML name и замените его содержимое на myProjectLib (или как вы назвали свой jar-файл выше) и сохраните.
Теперь в Eclipse вы можете Файл -> Создать -> Проект -> Android Project из существующего исходного кода .. и указать на содержимое извлеченной папки.
После импорта щелкните правой кнопкой мыши по только что созданному проекту, выберите Свойства -> Android и проверьте, есть ли библиотека.
В вашем основном проекте, для которого вы хотите использовать библиотеку, также перейдите в Свойства -> Android и добавьте недавно добавленный myProjectLib в список зависимостей.
Ответ 4
Для тех, кто хочет сделать это автоматически, я написал небольшой двухстрочный bash-скрипт, который выполняет следующие две вещи:
Ищет все файлы * .aar и извлекает их classes.jar из них
Извлеченные переименования 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`' \;