Как конвертировать AAR в JAR



ситуация:



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



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



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



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



вопрос:



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

760   7  

7 ответов:

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

  1. извлеките файл AAR с помощью стандартного zip-извлечения (переименуйте его в *.молнии чтобы было проще)
  2. найти классы.банку файл в извлеченных файлах
  3. переименовать его как вам как и использовать этот файл jar в вашем проекте

.aar-это стандартный zip-архив, тот же самый, который используется .сосуд. Просто измените расширение и, предполагая, что оно не повреждено или что-то еще, все должно быть в порядке.

Если вам нужно, вы можете извлечь его в файловую систему и затем упаковать его в банку.

1) Rename it to .jar
2) Extract: jar xf filename.jar
3) Repackage: jar cf output.jar input-file(s)

Как многие другие люди указали, просто извлечение .банку из-под .файл aar не совсем сокращает его, поскольку ресурсы могут отсутствовать.

вот шаги, которые работали для меня (контекст Android, ваш пробег может отличаться, если у вас есть другие цели):

  1. переименовать .ААР файл к.застегнуть и извлечь.
  2. извлеченная папка-это проект ADT, который вы можете импортировать в Eclipse с некоторыми незначительными изменениями (см. ниже)!
  3. в извлеченную папку переименовать файл классы.банку к тому, что вам нравится (в этом примере myProjectLib.jar) и переместите его в папку lib в извлеченной папке.
  4. теперь для того, чтобы Eclipse принял его, вам нужно поместить два файла в корень извлеченной папки:
    • .проект
    • .путь к классу
  5. чтобы сделать это, создайте новый проект Android dummy в Eclipse и скопируйте файлы или скопируйте из существующий проект Android.
  6. открыть .файл проекта и найдите тег имени XML и замените его содержимое на myProjectLib (или то, что вы назвали своим файлом jar выше) и сохраните.
  7. теперь в Eclipse вы можете File -> New -> Project - > Android Project из существующего источника.. и укажите на содержимое извлеченной папки.
  8. после импорта щелкните правой кнопкой мыши на вновь созданном проекте, выберите Свойства - > Android, и проверить Библиотека.
  9. в вашем основном проекте, для которого вы хотите использовать библиотеку, также перейдите к Свойства - > Android и добавить недавно добавленный myProjectLib в список зависимостей.

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

  1. ищет все *.AAR файлы и извлекает классы.баночка от них
  2. переименовывает извлечены уроки.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`' \;
    

вот именно!

 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.

Примечание: Если вы хотите сделать только .jar-файл из вашего .файл aar использует выше способом. Предположим, если вы хотите включить манифест.xml и ресурсы с вашим .jar-файл означает вы можете просто щелкните правой кнопкой мыши на .AAR-файл и сохраните его как .jar-файл напрямую, вместо того, чтобы сохранение его в качестве .застежка-молния. Для просмотра .jar-файл, который вы извлекли, скачать JD-GUI (Java Decompiler). Затем перетащите ваш .jar-файл в этот JD_GUI, вы можете увидеть .файл класса в удобочитаемых форматах, таких как a .Java-файл.

enter image description here enter image description here

ресурсов .ААР-проекты

находим классов.jar-файл внутри .файл aar довольно тривиален. Однако такой подход не работает, если таковой имеется .aar-проект определил некоторые ресурсы (пример: R. layout.xyz)

  • deaar от CommonsGuy помог мне получить действительный ADT-дружественный проект из an .ААР-файл. в моем случае я обратился подвыборка-масштаб-изображение-вид. Мне потребовалось около час, чтобы настроить ruby на моем компьютере.
  • другой подход использует android-maven-плагин для Eclipse / ADT как CommonsGuy пишет в своем блоге.

  • еще один подход может быть, просто копирую весь нужный проект как источник из git и импортировать его как "существующий проект Android"

Android Studio (версия: 1.3.2) позволяет легко получить доступ .баночка внутри А.ААР.

бонус: он автоматически декомпилирует классы!

просто выполните следующие действия:

  1. File > New > New Module > Import .JAR/.AAR Package импортировать вы .aar как модуль

  2. добавить вновь созданный модуль в качестве зависимости от вашего основного проекта (не уверен, если это необходимо)

  3. Правой Кнопкой Мыши на "классы.jar", как показано в захвате ниже, и нажмите кнопку "Показать в проводнике". Вот твой .сосуд.

access .jar from .aar

Comments

    Ничего не найдено.