简体   繁体   English

如何从android studio创建一个jar文件

[英]how to create a jar file from android studio

I have a fairly latest version of android studio, I have created a module under a project which is basically supposed to be a library, when I build it, it creates an ".aar" file , what I want is .jar file as this library is supposed to be used with eclipse as well.我有一个相当最新版本的android studio,我在一个基本上应该是一个库的项目下创建了一个模块,当我构建它时,它会创建一个“.aar”文件,我想要的是.jar文件库也应该与 eclipse 一起使用。

The library contains activity as well, is there any way by which I can create a .jar file which I can use on Eclipse as well Android Studio ?该库也包含活动,有什么方法可以创建一个可以在 Eclipse 和 Android Studio 上使用的 .jar 文件?

I have already created this module and tried building , as a result it generated .aar file and not a .jar file.我已经创建了这个模块并尝试构建,结果它生成了 .aar 文件而不是 .jar 文件。

I found a way to achieve this, plain simple, using Gradle 2.2.1:我找到了一种方法来实现这一点,很简单,使用 Gradle 2.2.1:

task jar(type: Jar, dependsOn: 'assembleRelease') {
    from fileTree(dir: 'build/intermediates/classes/release')
}

Place this in your library module.把它放在你的库模块中。 It will compile it as release and produce a JAR file in: build/libs .它会将其编译为发行版并在以下位置生成 JAR 文件: build/libs

bash gradlew jar or use your IDE to target that jar Gradle task. bash gradlew jar或使用您的 IDE 来定位该jar Gradle 任务。

aar is not related to AS or eclipse but is an A ndroid AR chive for Android applications like J ava AR chives are for java applications. aar是不相关的AS或食,但是Android应用程序等的J ava AR韭菜一个被A ndroid AR韭菜是为Java应用程序。 Because Android is java based, jars can be used.因为 Android 是基于 Java 的,所以可以使用 jars。 But to take android specialities into account, like resource bundles, an aar is the right thing to use.但是考虑到 android 的特性,比如资源包,aar 是正确的使用方法。

Currently gradle based builds doesnt seems to be allowing to create jar with android studio, I decided to go for Intelij it has necessary option and does what i want , i can use community edition.目前基于 gradle 的构建似乎不允许使用 android studio 创建 jar,我决定使用 Intelij,它有必要的选项并做我想做的,我可以使用社区版。

***Update**** Even the jar produced by Intelij with resources don't work , obviously its not easy to have a jar with resource , so decided to opt for .aar and hoping that Eclipse also gets support for .aar when gradle supports lands there, as that was my main concern. ***更新**** 即使是Intelij制作的带资源的jar也不行,显然有资源的jar不容易,所以决定选择.aar,希望Eclipse也能支持.aar的时候gradle 支持土地,因为这是我的主要关注点。

在此处输入图片说明 Add this in your library's gradle file:将此添加到您库的 gradle 文件中:

task deleteJar(type: Delete) {
    delete 'libs/traylib.jar'
}

task createJar(type: Copy) {
    from('build/intermediates/packaged-classes/release/')
    into('libs/')
    include('classes.jar')
    rename('classes.jar', 'traylib.jar')
}

createJar.dependsOn(deleteJar, build)

You need to check path of your generated classes.jar: build/intermediates/ packaged-classes /release/您需要检查生成的 classes.jar 的路径: build/intermediates/ packaged-classes /release/

Create lib folder in your lib's root folder if it is not there如果 lib 文件夹不存在,请在 lib 的根文件夹中创建 lib 文件夹

Go to gradle build: Android Studio --> View --> Toll Windows --> Gradle转到 gradle 构建:Android Studio --> 查看 --> Toll Windows --> Gradle

Select your module(:library) --> Tasks --> other --> Double click on createJar task选择你的模块(:library) --> 任务 --> 其他 --> 双击 createJar 任务

您只需解压缩aar文件即可获得分离的文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM