[英]How to convert AAR to JAR
情况 :
我打算使用Java库,我只有一个来自Maven存储库的AAR文件,但我需要JAR文件。
背景故事:
我试图编译一个库,但它的Gradle结构不稳定。 所以我要求一个编译的jar文件,它的开发人员从一些Maven存储库递给我一个aar文件(开发人员无法编译自己的项目)。 Gradle配置很乱,它依赖于多个库,Gradle抛出了一些异常。
我尝试在我的IDEA IDE中使用它,但它看不到它。 一个库项目应该能够编译成一个jar文件,对吧?
问题 :
我该怎么做才能将AAR文件转换为JAR文件?
AAR文件由一个JAR文件和一些资源文件组成(它基本上是一个带有自定义文件扩展名的标准zip文件)。 以下是转换的步骤:
.aar是一个标准的zip存档,与.jar中使用的相同。 只需更改扩展名,并假设它没有损坏或任何东西,它应该没问题。
如果需要,可以将其解压缩到文件系统,然后将其重新打包为jar。
1) Rename it to .jar
2) Extract: jar xf filename.jar
3) Repackage: jar cf output.jar input-file(s)
正如许多其他人所指出的那样,只是从.aar文件中提取.jar并没有完全削减它,因为资源可能会丢失。
以下是适用于我的步骤(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`' \\;
而已!
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文件中获取.jar文件,请使用上述方法。 假设如果要包含manifest.xml和资源以及.jar文件意味着您可以右键单击.aar文件并将其直接保存为.jar文件,而不是将其另存为.zip。 要查看已解压缩的.jar文件,请下载JD-GUI(Java Decompiler) 。 然后将.jar文件拖放到此JD_GUI中,您可以以.java文件等可读格式查看.class文件。
基于资源的.aar项目
在.aar文件中查找classes.jar文件非常简单。 但是,如果.aar-project定义了一些资源(例如:R.layout.xyz),那么这种方法不起作用
因此deaar从CommonsGuy帮助我得到一个有效的ADT友好型项目出.aar档。 在我的情况下,我转换了子采样 - 比例 - 图像 - 视图 。 我花了大约一个小时在我的电脑上设置红宝石。
另一种方法是在Eclipse / ADT中使用android-maven-plugin, CommonsGuy在他的博客中写道 。
另一种方法可能是,只需将整个所需项目作为源代码从git克隆并将其导入为“现有Android项目”
如果您使用Gradle作为构建 - 有一个Gradle插件,它允许您向java | kotlin | scala | ...模块添加aar依赖项。
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.