Android中常见第三方库so、jar、aar的区别、打包、使用

发布时间 2023-08-31 09:26:47作者: xiaowang_lj

Android中常见的第三方库包括:.so、.jar、.aar。

一、jar

1、说明

只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。
jar(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。
jar的优点:安全性、减少下载时间、传输平台扩展、包密封、包版本控制、可移植性。

打jar包时,项目里的res文件是用不了的,若想用图片文件,可以将图片文件放进assets文件里面打进jar包再进行调用,但必须注意jar里面assets文件夹里面的文件不能和调用项目里面assets文件夹里面的文件重名。

2、打jar包方法:

网上方法很多也很详细,不再赘述,给个链接:http://blog.csdn.net/u013895206/article/details/52692415

3、使用jar包方式:

首先在project视图下,把jar包放到libs文件夹里(如app/libs),然后是引用方法。
方法1:

// 在模块的build.gradle文件中添加依赖,并Sync Project
dependencies {
    implementation files('***.jar')
}

方法2:
在拷贝完jar到libs目录后,右击添加的jar包,在弹出的选项中选择Add As Library。之后会弹出模块选择,选中需要使用jar包的目录。

二、aar

1、说明

Android库项目的二进制归档文件,包含所有资源,class以及res资源文件全部包含。

将aar解压(后缀改为.zip,再解压文件)打开后,可以看到每个aar解压后的内容可能不完全一样,但是都会包含AndroidManifest.xml,classes.jar,res,R.txt。

2、打aar包方法:

网上方法很多也很详细,不再赘述,给个链接:https://www.jianshu.com/p/f391d0a6691e

3、使用aar包方式:

首先在project视图下,将aar包放到libs文件夹里(如app/libs)。
然后需要在使用的模块的build.gradle文件中添加如下配置:

repositories {
    flatDir {
        dirs 'libs'
    }
}

最后在dependencies中添加配置:

dependencies {
    // name为需要引用的aar包的文件名
    compile(name: 'test', ext: 'aar')
}

三、so

1、说明

·so库是C或C++编写的内容打包成的库。

2、打so库方法:

so库其实不用打包,因为我们已经在CMakeLists文件中指定了so库的输出路径。点击Build > Make module '***',然后去文件管理器里看一下,会生成一个jniLibs文件夹,里面包含了指定cpu架构的so文件。

 

打so库方法.png

3、使用so库方式:

首先在project视图下,将不同CPU架构的so文件放到libs文件夹里(如app/libs)。
然后在build.gradle文件中的android{ }结点里添加如下配置:

android {
    // 其余省略
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

四、如何选择jar和aar

如果你只是一个简单的类库那么使用生成的.jar文件即可;
如果你的是一个UI库,包含一些自己写的控件布局文件以及字体等资源文件那么就只能使用.aar文件。