Вопрос-ответ

How to convert AAR to JAR

Как преобразовать AAR в JAR

Ситуация:

Я намерен использовать библиотеку Java, и у меня есть только файл AAR из репозитория Maven, но мне нужен файл JAR.

Предыстория:

Я пытался скомпилировать библиотеку, но ее структура Gradle была нестабильной. Итак, я попросил скомпилированный файл jar, и его разработчик передал мне файл aar из какого-то репозитория Maven (разработчик не смог скомпилировать свой собственный проект). Конфигурация Gradle была беспорядочной, она зависела от нескольких библиотек, и Gradle выдавал некоторые исключения.

Я пытался использовать это в своей IDEA IDE, но она не смогла его увидеть. Проект библиотеки должен иметь возможность компилироваться в файл jar, верно?

Вопрос:

Что я должен сделать, чтобы преобразовать этот файл AAR в файл JAR?

Переведено автоматически
Ответ 1

Файл AAR состоит из файла JAR и некоторых файлов ресурсов (по сути, это стандартный zip-файл с пользовательским расширением). Вот шаги для преобразования:


  1. Извлеките файл AAR с помощью стандартного zip-файла (переименуйте его в *.zip, чтобы упростить задачу)

  2. Найдите classes.jar файл в извлеченных файлах

  3. Переименуйте его по своему усмотрению и используйте этот файл 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 ваш пробег может отличаться, если у вас другие цели):


  1. Переименуйте файл .aar в .zip и извлеките.

  2. Извлеченная папка представляет собой проект ADT, который вы можете импортировать в Eclipse с некоторыми незначительными изменениями (см. Ниже)!

  3. В извлеченной папке переименуйте содержащийся файл classes.jar во что угодно (в этом примере myProjectLib.jar) и переместите его в папку lib внутри извлеченной папки.

  4. Теперь, чтобы Eclipse смог его принять, вам нужно поместить два файла в извлеченную корневую папку:

    • .проект

    • .путь к классу


  5. Для этого создайте новый фиктивный проект Android в Eclipse и скопируйте файлы поверх него или скопируйте из существующего проекта Android.

  6. Откройте файл .project, найдите тег XML name и замените его содержимое на myProjectLib (или как вы назвали свой jar-файл выше) и сохраните.

  7. Теперь в Eclipse вы можете Файл -> Создать -> Проект -> Android Project из существующего исходного кода .. и указать на содержимое извлеченной папки.

  8. После импорта щелкните правой кнопкой мыши по только что созданному проекту, выберите Свойства -> Android и проверьте, есть ли библиотека.

  9. В вашем основном проекте, для которого вы хотите использовать библиотеку, также перейдите в Свойства -> Android и добавьте недавно добавленный myProjectLib в список зависимостей.

Ответ 4

Для тех, кто хочет сделать это автоматически, я написал небольшой двухстрочный bash-скрипт, который выполняет следующие две вещи:


  1. Ищет все файлы * .aar и извлекает их classes.jar из них

  2. Извлеченные переименования 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`' \;

Вот и все!

java jar