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

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

编辑:

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

无法将Android库导出为jar文件。 但是,可以将其导出为aar文件。 Aar文件是Android库的新的二进制格式。 在Google I / O即New Build Systemvideo中有关于它们的信息。

首先,在Android Studio中构build库,或者从库的根目录发出gradle build

这将导致<yourlibroot>/libs/build/yourlib.aar文件。

这个aar文件是你的库的二进制表示,可以添加到你的项目,而不是作为依赖项目的库。

要将aar文件添加为依赖项,您必须将其发布到maven中心或本地maven存储库,然后将项目的gradle.build文件中的gradle.build文件gradle.build

但是,这一步有点复杂。 我在这里find了一个很好的解释:

http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds

我能够build立一个库源代码编译.jar文件,使用从这个解决scheme的方法: https : //stackoverflow.com/a/19037807/1002054

以下是我所做的细分:

1.结帐库存储库

在这种情况下,这是一个Volley图书馆

2.在Android Studio中导入库。

我使用Android Studio 0.3.7。 我在这一步遇到了一些问题,即我必须从新的android项目中复制gradle文件夹,才能导入Volley库源代码,这可能取决于您使用的源代码。

3.修改你的build.gradle文件

 // If your module is a library project, this is needed //to properly recognize 'android-library' plugin buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.3' } } apply plugin: 'android-library' android { compileSdkVersion 17 buildToolsVersion = 17 sourceSets { main { // Here is the path to your source code java { srcDir 'src' } } } } // This is the actual solution, as in https://stackoverflow.com/a/19037807/1002054 task clearJar(type: Delete) { delete 'build/libs/myCompiledLibrary.jar' } task makeJar(type: Copy) { from('build/bundles/release/') into('build/libs/') include('classes.jar') rename ('classes.jar', 'myCompiledLibrary.jar') } makeJar.dependsOn(clearJar, build) 

4.从项目根目录运行gradlew makeJar命令。

我的情况下,我不得不将gradlew.batgradle文件从新的android项目复制到我的库项目根目录。 你应该在build\libs目录下find你编译的库文件myCompiledLibrary.jar

我希望有人认为这有用。

编辑:

警告

尽pipe如此,在编译具有多个模块的项目时,会遇到重复的库exception,其中多个模块(包括应用程序模块)依赖于相同的jar文件(例如,模块具有自己的库目录,在build.gradle给定模块)。

如果您需要在多个模块中使用单个库,我会推荐使用这种方法: Android gradle build和支持库

从Android Studio V1.0开始,jar文件在以下项目链接中可用:

debuggingver:“your_app”\ build \ intermediates \ bundles \ debug \ classes.jar

释放ver:“your_app”\ build \ intermediates \ bundles \ release \ classes.jar

JAR文件是在构build过程中创build的,在Android Studio GUI中,它来自Build-> Make Project,而从CMD行则是“gradlew build”。

在build.gradle中包含以下内容:

 android.libraryVariants.all { variant -> task("generate${variant.name}Javadoc", type: Javadoc) { description "Generates Javadoc for $variant.name." source = variant.javaCompile.source ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) } task("javadoc${variant.name}", type: Jar) { classifier = "javadoc" description "Bundles Javadoc into a JAR file for $variant.name." from tasks["generate${variant.name}Javadoc"] } task("jar${variant.name}", type: Jar) { description "Bundles compiled .class files into a JAR file for $variant.name." dependsOn variant.javaCompile from variant.javaCompile.destinationDir exclude '**/R.class', '**/R$*.class', '**/R.html', '**/R.*.html' } } 

然后你可以执行gradle: ./gradlew clean javadocRelease jarRelease ,它将为你的Jar和一个javadoc jar生成build/libs/文件夹。

编辑:与Android gradle工具1.10 +获取Android SDK目录是不同于以前。 你必须改变以下(感谢Vishal!):

 android.sdkDirectory 

代替

 android.plugin.sdkDirectory 

我能够在Android Studio中使用本教程导出jar文件: https : //www.youtube.com/watch?v= 1i4I-Nph-Cw“如何从Android Studio导出Jar”

我更新了我的答案,包括在Android Studio中导出JAR的所有步骤:

1)创buildAndroid应用程序项目,进入app-> build.gradle

2)在此文件中更改以下内容:

  • 修改应用插件:'com.android.application' 应用插件:'com.android.library'

  • 删除以下内容: applicationId,versionCode和versionName

  • 添加下面的代码:

 // Task to delete old jar task deleteOldJar(type: Delete){ delete 'release/AndroidPlugin2.jar' } 
 // task to export contents as jar task exportJar(type: Copy) { from ('build/intermediates/bundles/release/') into ('release/') include ('classes.jar') rename('classes.jar', 'AndroidPlugin2.jar') } exportJar.dependsOn(deleteOldJar, build) 

3)不要忘记在这个文件中点击同步 (右上angular或使用同步button)。

4)点击Gradle标签(通常在中间右侧)并向下滚动到exportjar

5)一旦你在运行窗口中看到构build成功的消息,使用正常的文件浏览器转到导出的jar使用path: C:\ Users \ name \ AndroidStudioProjects \ ProjectName \ app \ release你应该在这个目录中看到你的jar文件。

祝你好运 :)

这是另一个略有不同的答案,只有一些改进。

此代码将.jar从.aar中取出。 就个人而言,这给了我更多的信心,通过.jar运送的位与通过.aar运送的位相同。 这也意味着,如果您使用的是ProGuard,输出jar会根据需要进行混淆。

我还添加了一个超级“makeJar”任务,为所有构build变体生成jar。

 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文件的正确variables和参数。 我终于在Android开源项目中find了他们。

我们可以通过Android studio导出Android库项目的jar文件,而不需要资源文件。 这也是我最近遇到的要求。

1.configuration你的build.gradle文件

  // Task to delete old jar task clearJar(type: Delete){ delete 'release/lunademo.jar' } // task to export contents as jar task makeJar(type: Copy) { from ('build/intermediates/bundles/release/') into ('build/libs/') include ('classes.jar') rename('classes.jar', 'lunademo.jar') } makeJar.dependsOn(clearJar, build) 

2.在您的项目根目录下运行gradlew makeJar

如果你幸运的话,你会看到你的libs目录下的build / libs /。

================================================== ==========

如果您在命令行中遇到问题如下所示的“套接字超时exception”

在这里输入图像描述

你可以按照这个步骤打开右边的Gradle窗口,然后点击Android studio上的“makeJar”

在这里输入图像描述

在这里输入图像描述

然后去build立/ libs目录,你会看到你的jar文件。

希望这对你有所帮助。

祝你好运 @。@

卢纳