您的位置:首页 > 移动开发 > Android开发

使用Android Studio导出Jar包

2017-01-22 17:32 204 查看


 

对于Android工程,如果我们需要把源码打包为Jar文件,在Eclipse上操作是比较简便的。

但是假若使用Android Studio作为IDE的话,操作就相对复杂了一点儿。

 

背景:

AndroidStudio默认打包时,会生成 aar
格式的产物,而不是 jar
包。


 

aar
和 jar
的不同?


 

首先需要明确的是,aar文件和
jar文件都只是普通的压缩文件,只不过他们具有不同的文件结构。

Jar文件是被设计用来打包java代码的,而aar文件是在jar文件基础之上开发的,设计它是因为Android
Libaray需要一些特有的文件,比如资源文件、AndroidManifest.xml文件,JNI库文件等。这些文件并不是jar文件的标准,而aar类型的压缩包可以包含该类文件。

 

可以说,aar文件是在jar文件的基础之上的。其实我们可以解压缩一份Android
Studio生成的aar文件,可以看到里面是有一个jar文件的,默认文件名是
classes.jar。

 

如何在AndroidStudio上打包jar文件?

 

如前所述,Android Studio是默认打包为aar文件,而aar文件内是包含
classes.jar的。

所以,一个比较原始的方法是,解压缩aar文件,取出其中的jar文件。

 

或者,我们在gradle里创建一个task,自动化导出jar文件。

比如,在项目的build.gradle里新建task如下:

 

task exportJar(type:
Copy) {
    from('build/intermediates/bundles/release/')
    into('build/libs/')
    include('classes.jar')
    rename('classes.jar',
'HylAndroidKit.jar')

}

 

from('build/intermediates/bundles/release/')

这里的目录是Android Studio编译时的一个中间产物路径,我们要打包该目录下的文件。

可以看到,该目录下的结果主要包括:

classes.jar

AndroidManifest.xml

aidl

assets

jni

res

当然,因为我们要打包的是jar,所以这些目录的文件并不全部要使用的。

下面还会有语句进行限制。

 

into('build/libs/')

我们要把打包的文件放入的目录。

 

include('classes.jar')

这句话限定了我们要打包什么文件,其实即是说我们要使用的是AndroidStudio编译后产生的
classes.jar 文件。

 

rename('classes.jar',
'HylAndroidKit.jar')

根据需求,我们把打包生成的文件改成我们需要的文件名。

 

 

每次我们需要打包jar时,执行该task即可。

当然,我们也可以做另外的task去清空之前的jar包。比如:

task deleteOldJar(type: Delete) {

    delete 'build/outputs/HylAndroidKit.jar'

}


或者,可以把该操作放在exportJar时统一处理。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: