我已经下载了一些库源代码,并希望使用Android Studio将其导出为Jar文件。有没有办法使用Android studio导出到jar文件?
编辑:
我想导出为jar的库是一个Android库。它被称为"StandOut“,可以从GitHub下载。https://github.com/pingpongboss/StandOut
发布于 2013-06-16 17:56:53
不能将Android库导出为jar文件。但是,也可以将其导出为aar
文件。Aar
文件是Android库的新的二进制格式。在谷歌I/O,New Build System video上有关于他们的信息。
首先,在Android Studio中构建库,或者通过命令行从库的根目录发出gradle build
。
这将产生<yourlibroot>/libs/build/yourlib.aar
文件。
此aar文件是库的二进制表示,可以将其添加到项目中,而不是作为依赖项目添加到库中。
要将aar文件作为依赖项添加,必须将其发布到maven中心或本地maven存储库,然后在项目的gradle.build
文件中引用aar文件。
然而,这一步有点复杂。我在这里找到了一个很好的解释:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
发布于 2015-01-23 13:10:26
这是另一个稍有不同的答案,但有一些增强。
这段代码直接从.aar中取出.jar。就我个人而言,这让我更有信心,通过.jar发货的bit与通过.aar发货的bit是一样的。这也意味着,如果您使用的是ProGuard,那么输出jar将根据需要进行模糊处理。
我还添加了一个超级"makeJar“任务,它为所有构建变体制作jars。
task(makeJar) << {
// Empty. We'll add dependencies for this task below
}
// Generate jar creation tasks for all build variants
android.libraryVariants.all { variant ->
String taskName = "makeJar${variant.name.capitalize()}"
// Create a jar by extracting it from the assembled .aar
// This ensures that products distributed via .aar and .jar exactly the same bits
task (taskName, type: Copy) {
String archiveName = "${project.name}-${variant.name}"
String outputDir = "${buildDir.getPath()}/outputs"
dependsOn "assemble${variant.name.capitalize()}"
from(zipTree("${outputDir}/aar/${archiveName}.aar"))
into("${outputDir}/jar/")
include('classes.jar')
rename ('classes.jar', "${archiveName}-${variant.mergedFlavor.versionName}.jar")
}
makeJar.dependsOn tasks[taskName]
}
对于好奇的读者,我努力确定com.android.library插件用来命名.aar文件的正确变量和参数。我最终在安卓开源项目here中找到了它们。
https://stackoverflow.com/questions/16763090
复制相似问题