关于android studio导出jar包和aar包

本文介绍了如何将库项目打包为本地jar和aar文件,包括导出过程、注意事项,以及两者之间的区别。重点在于解决网络不可达时的依赖问题和清单文件的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于客户网络环境无法访问我提供的广域网的maven仓库地址,需要我提供本地jar包的方式,因此来看看我们需要怎么弄。

一、导出jar

1.首先需要创建一个app工程并且new 一个moudle,既然想封装成一个库那么肯定要在moudle里进行编代码吧,这里就不做过多的陈述,我直接拿项目作为案例。这里你要保证app依赖moudle模块,并且能正常运行。
在这里插入图片描述
2.在library下的build.gradle文件添加如下代码

//打jar包
task makeJar(type: Copy) {
    //这行表示要打包的文件的路径,根据下面的内容,其实是该路径下的classes.jar
    //这里注意下,网上很多人都说在intermediates/bundles目录下,但是比较新版本的AS该目录下intermediates/packaged-classes替换intermediates/bundles了,本人AS4.0
    from('build/intermediates/packaged-classes/release/')
    //这行表示打包完毕后包的生成路径,也就是生成的包存在哪
    into('build/libs/')  
    //看到这行,如果你对分包有了解的话,你就可以看出来这行它只是将一些类打包了
    include('classes.jar')  
    //重命名为mySdk.jar
    rename ('classes.jar', 'mySdk.jar')
}
makeJar.dependsOn(clearJar, build)
//在终端执行生成JAR包
// gradlew makeJar

3.生成的jar,如图所示
在这里插入图片描述
4.使用jar包
新创建一个app工程,将新打好的mySdk.jar文件放入到libs目录下,点击运行
在这里插入图片描述
5.app崩溃,查看下日志提示缺失so文件,这个libface_api.so是moudle中lib目录下的so文件,这说明mySdk.jar并不会存在so文件,需要额外自己放入到项目中去,放进去后成功运行。
在这里插入图片描述
在这里插入图片描述
6.能运行不代表没有问题,仔细查看日志,发现mySdk.jar中的一个Service并没有成功开启。原因是因为mySdk.jar文件里不存在清单文件,需要宿主app自己去清单文件里注册,注册成功后才是真正大功告成。
在这里插入图片描述

二、导出aar

相比第一种方式打jar包来讲,第二种方式要简单很多,点击下assembleRelease命令即可,会在build/outputs/aar目录下生成aar的release文件。
在这里插入图片描述
直接在新创建的app项目中使用即可,引入aar文件记得要在app build,gradle文件里加如下代码

repositories {
   flatDir {
     dirs 'libs'
   }
}

在这里插入图片描述
注意事项
如果sdk里存在第三方依赖库,如果不做处理,默认无论是jar包还是aar文件都不会存在第三方依赖库的代码,所以需要宿主app自己去依赖相关sdk。其实也可以将moudle所依赖的jar包打入到新的jar包里,这里不做讨论。

三、分别解压jar和aar

将两个文件后缀改成zip,然后解压,发现jar里只有class文件,并且不包含其他第三方jar的class文件,而aar文件包含了jar包,以及清单文件,资源文件,so文件等。

jar文件解压后
在这里插入图片描述
aar文件解压后
在这里插入图片描述

四、总结

1.jar包里不存在清单文件,资源文件,so文件,只包含了class文件,而aar文件几乎包含了上述所有。
2.如果sdk里存在第三方依赖库,如果不做处理,默认无论是jar包还是aar文件都不会存在第三方依赖库的代码。

五、参考文章

1.https://www.jianshu.com/p/0a2572a63ed5
2.https://www.jianshu.com/p/1589be7962cd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值