栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于android studio导出jar包和aar包

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于android studio导出jar包和aar包

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

一、导出jar

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

2.在library下的build.gradle文件添加如下代码

//打jar包
task makeJar(type: Copy) {
    //这行表示要打包的文件的路径,根据下面的内容,其实是该路径下的classes.jar
    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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727713.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号