Android Studio打包apk,aar,jar包_android build apks出来的arr是bug还是release-程序员宅基地

1 jar vs aar   

文本我们将讲解android studio打包apk,aar,jar包的相关知识。apk包就是android系统的安装包,这里没什么好说的,aar包是android中独有的类库包,而jar包是java中特有的类库包,在具体的介绍打包之前,我们先来aar包和jar包的区别。


jar包与aar包的区别


  • jar是java字节码文件(class文件)的归档文件,其不包含android中的资源文件等信息;

  • aar是android中特有的归档文件,既包含字节码文件也包含android的资源文件等;


区别:大家都知道jar文件把,如果你有一个Android Library项目,可以很容易的导出jar文件,然后在其他项目中很方便的引用。


aar和jar类似,区别就是一个Android Library项目导出的jar文件不能包含资源文件,比如一些drawable文件、xml资源文件之类的,所以这就有很大的限制,在gradle之前我们要引用带资源文件的Android Library必须要把整个library导入进来进行引用,但是有了gradle之后,Android Library项目可以直接导出成aar,然后其他项目像引用jar的方式直接方便的引用。


具体可参看下图:


  • aar包解压之后的结构: 



  • jar包解压之后的目录结构: 



怎么样?jar包和aar包的区别很明显吧。


2 打包apk文件   

在android studio中打包apk文件有两种方式:


  • 通过gradle配置输出apk文件

  • 执行Generate singed apk操作获得apk文件


下面我们将分别介绍一下这两种方式的具体步骤,首先我们先看一下如何通过gradle配置的方式,输出apk文件。


2.1 gradle配置打包脚本


  • 配置打包类型



可以发现这里的buildType中配置了release包和debug包,以及各自的签名信息:

singingConfig singingConfigs.release

更加具体的签名信息配置在singingCongis中,下面我们来看一下其实如何设置的


  • 配置签名信息



这样我们就配置好了apk打包的签名信息,然后我们可以打开Build Variants操作框了…


  • 配置Build Variants


这里可以看到我们在mobile module中定义了两个buildType,其中debug和release Type,并且其打包时默认使用的签名信息就是我们刚刚配置的各自的签名信息。


这里需要说明的是android studio中module默认都会有debug和release两个buildType,就算你什么都不配置的话,这里也会存在这两个buildType,而且,除了这两个之外你还可以配置额外的定制化的buildType,比如你想打一个信息的debug01包,使用另外的一套签名信息:


  • 在buildType节点下添加




  • 添加新的签名信息

debug01 {
    storeFile file("bbb.keystore")
    storePassword "222222222"
    keyAlias "bbb.keystore"
    keyPassword "222222222"
}
  • 配置Build Variants



可以发现这时候Build Variant中mobile module多了一个buildType:debug01,其就是我们刚刚配置的debug01 buildType,并且使用的是另外的一套签名信息,若我们选中debug01,则android studio默认run或者是build apk的时候就会编译debug01版本的apk了。


  • 执行run app或者是Build apk操作



这样我们最终就能够输出一个apk格式的安装包了。


2.2 执行Generate singned apk操作


除了上面的通过gradle配置的方式生成apk文件,我们还可以执行Generate singned apk操作,通过这样的操作,我们也可以获得一个apk的输出文件,具体步骤如下:


  • 执行Build –> Generate singed apk操作

  • 填写相应的签名信息 



  • 选择打包的类型 



好吧,上面就是我们所要介绍的打包apk的两种方式。下面我们在讲解一下如何通过android studio打包aar和jar。


3 打Jar包   

目前通过android studio打包jar,基本有两种方式:


1.创建module,然后编译完成之后 module中自动的创建了相关的jar文件



这里的classes.jar就是module相关的jar包,我们可以将其更改名称之后拷贝到app下的lib目录中;


2.另一种方式其实跟第一种方式是一样的,只不过其是通过gradle脚本实现的


app为我们的主工程,librarydemo是我们要将其生成jar包的model. 
在librarydemo中加入如下代码:


task makeJar(type: Copy) {
    delete 'build/libs/mysdk.jar'
    from('build/intermediates/bundles/release/')
    into('build/libs/')
    include('classes.jar')
    rename ('classes.jar', 'mysdk.jar')
}

makeJar.dependsOn(build)
//在终端执行生成JAR包
// gradlew makeJar

在Terminal中键入 gradlew makeJar 回车看到如下所示就OK了: 



4 打aar包   

其实打aar包和jar包类似,只不过是其目录变化了而已:



可以看到同样需要其作为library,而且其生成的目录为:/build/output/aar/

好了,以上就是如何通过androd studio打包apk,aar和jar的相关内容了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LM_ZP/article/details/52514296

智能推荐

PyTorch-LSTM时间序列预测中如何预测真正的未来值_lstm训练好的模型怎么预测-程序员宅基地

文章浏览阅读1.2w次,点赞28次,收藏142次。PyTorch-LSTM时间序列预测中如何预测真正的未来值_lstm训练好的模型怎么预测

同城到家预约上门服务v3.9.1 家政 维修_探花泡家政-程序员宅基地

文章浏览阅读306次。修复了几处BUG。_探花泡家政

机器学习笔试面试题——day2_影响聚类算法结果的主要因素-程序员宅基地

文章浏览阅读4k次。选择题1、以下不属于影响聚类算法结果的主要因素有()A 已知类别的样本质量B 分类准则C 特征选取D 模式相似性测度聚类不知道类别2、模式识别中,不属于马式距离较之于欧式距离的优点的是( )A 平移不变性B 尺度不变性C 考虑了模式的分布缺点1)马氏距离的计算是建立在总体样本的基础上的,即同样的样本在不同的总体中距离是不一样的2)要求协方差逆矩阵必须存在(总体样..._影响聚类算法结果的主要因素

centos7降低内核版本rpm_kernel-3.10.0-1160.el7.x86_64 回退到kernel-3.10.0-327-程序员宅基地

文章浏览阅读2.3k次。centos7降低内核版本rpm_kernel-3.10.0-1160.el7.x86_64 回退到kernel-3.10.0-327

静态库与DLL-程序员宅基地

文章浏览阅读103次。静态库与DLL的不同之处可执行文件的生成(Link期):前者很慢(因为要将库中的所有符号定义Link到EXE文件中),而后者很快(因为后者被Link的引入库文件无符号定义)可执行文件的大小:前者很大,后者很小(加上DLL的大小就和前者差不多了)可执行文件的运行速度:前者快(直接在EXE模块的内存中查找符号),后者慢(需要在DLL模块的内存中查找,在另一个模块的内存中查找自然较慢)可共享性:前者..._为什么选静态库生成的是dll

nvl函数不生效(bug记录)_nvl函数没用-程序员宅基地

文章浏览阅读197次。nvl(表达式A,表达式B)_nvl函数没用

随便推点

python自动生成ppt报告_把时间还给洞察,且看PPT调研报告自动生成攻略-程序员宅基地

文章浏览阅读179次。文/JSong @2017.02.28在数据分析里面有一句话是说,80%的时间要用于数据清洗和整理,而我觉得理想的状态应该是把更多的把时间花在数据背后的洞察当中。去年11月在简书占了个坑,说要自己写一个工具来解决,今天我来填坑了。1、解决方案概述项目地址:github,欢迎star 或者folk软件依赖:python3(兼容python2,但中文部分需要手动修改一个第三方包的2行代码)数据需求:..._根据问卷答案 自动生成ppt报告

Matlab与单片机的串口通信_matlab和单片机进行串口通信-程序员宅基地

文章浏览阅读438次。在本文中,我们将探讨如何使用Matlab与单片机进行串口通信。Matlab是一种功能强大的数值计算和数据分析工具,它提供了丰富的串口通信功能,使我们能够轻松地与单片机进行数据交互。通过配置串口参数、打开串口连接、发送和接收数据,我们可以轻松地与单片机进行数据交互。首先,我们需要将USB串口转换器连接到计算机的USB接口上,并将串口转换器的串口连接到单片机开发板上的串口引脚(通常是TX和RX引脚)。这样,我们就成功地完成了Matlab与单片机的串口通信。请根据你的实际情况修改代码中的串口端口号和参数。_matlab和单片机进行串口通信

Java 转换EXCEL Duble格式时间为指定格式日期字符串_java excel 日期double-程序员宅基地

文章浏览阅读1k次。不需要依赖其他工具,实现Excel数字日期转换为指定格式的日期字符串_java excel 日期double

Zookeeper和Redis实现分布式锁,附我的可靠性分析_redis集群分布式锁-程序员宅基地

文章浏览阅读683次,点赞25次,收藏23次。由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档还有更多面试复习笔记分享如下《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!)]还有更多面试复习笔记分享如下[外链图片转存中…(img-VsIdPb6e-1713439894712)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!_redis集群分布式锁

mysql:列类型之float、double_mysql float-程序员宅基地

文章浏览阅读1.6w次,点赞4次,收藏20次。环境:window10vs2022.net 6mysql 8.0.25DBeaver参考:《MSDN:浮点数值类型(C# 引用)》《mysql:11.1.4 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE》1. float和double类型在mysql中,float和double都是浮点数类型:float 占4个字节,精度是6位;double 占8个字节,精度是16位;它们的性质和c#中浮点数的性质是一样_mysql float

滚动条滚动异步加载数据_contentdom.clonenode异步问题-程序员宅基地

文章浏览阅读1.3k次。<script type="text/javascript"> //获取列表中的原有内容 var content=document.getElementById("img").innerHTML; function addLi(){ var userid = document.getElementById("use").value; ..._contentdom.clonenode异步问题

推荐文章

热门文章

相关标签