首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Android Studio中导出库到Jar?

如何在Android Studio中导出库到Jar?
EN

Stack Overflow用户
提问于 2013-05-27 03:47:40
回答 2查看 105.1K关注 0票数 85

我已经下载了一些库源代码,并希望使用Android Studio将其导出为Jar文件。有没有办法使用Android studio导出到jar文件?

编辑:

我想导出为jar的库是一个Android库。它被称为"StandOut“,可以从GitHub下载。https://github.com/pingpongboss/StandOut

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 86
EN

Stack Overflow用户

发布于 2015-01-23 13:10:26

这是另一个稍有不同的答案,但有一些增强。

这段代码直接从.aar中取出.jar。就我个人而言,这让我更有信心,通过.jar发货的bit与通过.aar发货的bit是一样的。这也意味着,如果您使用的是ProGuard,那么输出jar将根据需要进行模糊处理。

我还添加了一个超级"makeJar“任务,它为所有构建变体制作jars。

代码语言:javascript
复制
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中找到了它们。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16763090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档