Situação :
Pretendo usar uma biblioteca Java e só tenho um arquivo AAR de um repositório Maven, mas preciso do arquivo JAR .
História de fundo:
Tentei compilar uma biblioteca, mas sua estrutura Gradle era instável. Então, pedi um arquivo jar compilado e seu desenvolvedor me entregou um arquivo aar de algum repositório Maven (o desenvolvedor não conseguiu compilar seu próprio projeto). A configuração do Gradle era uma bagunça, dependia de várias bibliotecas e o Gradle lançou algumas exceções.
Tentei usá-lo em meu IDE do IDEA, mas não consegui ver. Um projeto de biblioteca deve ser capaz de ser compilado em um arquivo jar, certo?
Questão :
O que devo fazer para converter esse arquivo AAR em um arquivo JAR?
Respostas:
O arquivo AAR consiste em um arquivo JAR e alguns arquivos de recursos (é basicamente um arquivo zip padrão com uma extensão de arquivo personalizada). Aqui estão as etapas para converter:
fonte
.aar é um arquivo zip padrão, o mesmo usado em .jar. Apenas altere a extensão e, presumindo que não esteja corrompida nem nada, deve ficar bem.
Se necessário, você pode extraí-lo para seu sistema de arquivos e, em seguida, empacotá-lo novamente como um jar.
fonte
Como muitas outras pessoas observaram, apenas extrair o .jar do arquivo .aar não é suficiente, pois podem estar faltando recursos.
Aqui estão as etapas que funcionaram para mim (contexto do Android, sua milhagem pode variar se você tiver outras finalidades):
fonte
Para aqueles que desejam fazer isso automaticamente, escrevi um pequeno script bash de duas linhas que faz as duas coisas seguintes:
Renomeia classes.jar extraídas para ficar como o aar, mas com uma nova extensão
É isso aí!
fonte
aar=jar+res+manifest+libs
. Deixerest=res+manifest+libs
, entãojar(aar)=aar-rest
.O Android Studio (versão: 1.3.2) permite que você acesse perfeitamente o .jar dentro de um .aar.
Bônus: descompila automaticamente as classes!
Basta seguir estas etapas:
File > New > New Module > Import .JAR/.AAR Package
para importar você .aar como um móduloAdicione o módulo recém-criado como uma dependência ao seu projeto principal (não tenho certeza se necessário)
Clique com o botão direito em "classes.jar" conforme mostrado na captura abaixo e clique em "Mostrar no explorer". Aqui está seu .jar.
fonte
fonte
Projetos .aar baseados em recursos
Encontrar o arquivo classes.jar dentro do arquivo .aar é bastante trivial. No entanto, essa abordagem não funciona, se o projeto .aar definiu alguns recursos (exemplo: R.layout.xyz)
Portanto, deaar de CommonsGuy me ajudou a obter um projeto compatível com ADT válido de um arquivo .aar. No meu caso, converti subampling-scale-image-view . Levei cerca de uma hora para configurar o Ruby no meu PC.
Outra abordagem é usar o plugin android-maven para Eclipse / ADT como CommonsGuy escreve em seu blog .
Outra abordagem poderia ser, apenas clonar todo o projeto desejado como fonte do git e importá-lo como "Projeto Android existente"
fonte
Se você estiver usando o Gradle para suas compilações, há um plug-in do Gradle que permite adicionar a dependência aar aos seus módulos java | kotlin | scala | ....
https://github.com/stepango/aar2jar
fonte