关于安卓打包生成aar,jar实现(一)

关于安卓打包生成aar,jar方式

背景

在开发的过程中,主项目引入三方功能的方式有很多,主要是以下几个方面:
(1)直接引入源代码module(优点:方便修改源码,易于维护,迭代。缺点:对于新手不友好,可能会遇到依赖兼容问题,需要排除并且适配)
(2)远程依赖,目前主要是用maven依赖。(优点:几行代码即可依赖完成。缺点,库存在问题的话,修改很麻烦)
(3)直接引入jar或者aar。(module编译后的产物,优点:可增加混淆之类的规则,使代码更安全,隐蔽。缺点:本地修改会有难度,编译有一定的难度)

本文,就是讲述,如何使用androidstudio打包生成aar,jar。

环境

win10
jdk 11
jdk 8
as 4.0+
gradle 7.0+

编码

首要要搞懂,aar包和jar包有什么区别?很简单来说,aar包是在jar包上,增加了资源,例如layout,res。
如果你开发的是一个纯业务类型的库,可以打jar包。如果涉及到界面等逻辑,就需要打aar包了。

(一)生成aar包
首先,要有个androidstudio中的module。然后clean project,build project即可生成。具体目录,就是在module对于的build项目下查找,即可看到,结构如下图:
在这里插入图片描述
那么,又是如何生成release的aar包呢?
只需要点击右侧边栏的gradle->对应模块->other->assembleRelease,等待编译完成即可,编译后内容如下图:
在这里插入图片描述
上述就是一些关于model如何生成一个aar包的操作。

(二)生成jar包
对于生成一个jar包,比aar包要复杂一点。需要在模块目录的build.gradle文件,加入以下代码:

task makeJar(type: Copy) {//删除存在的delete 'build/libs/ztuiqueue.jar'//设置拷贝的文件from('build/intermediates/aar_main_jar/release/')//打进jar包后的文件目录into('output/libs/')//将classes.jar放入build/libs/目录下 //include ,exclude参数来设置过滤 //(我们只关心classes.jar这个文件)include('classes.jar')//重命名rename('classes.jar', 'ztuiqueue.jar')
}
makeJar.dependsOn(build)

其中,函数from中的路径,是随着gradle的版本不一样二变化的。需要在build目录下进行查找。
上述代码的意思,仅仅是把jar包复制出来,其实原jar包的目录是在比较深的层级的。

(三)代码混淆
对于完成了(一)(二)两步的朋友,现在已经接近尾声了。最后就是一个代码混淆的问题。如果不涉及混淆,请忽略该步骤。
对于module中的打包aar/jar代码混淆,需要在build.gradle文件中,buildTypes路径下,加入以下代码即可:

    buildTypes {release {minifyEnabled true/*模块混淆*/consumerProguardFiles 'proguard-rules-libxui-queue.pro'/*打包aar,jar混淆*/proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules-libxui-queue.pro'}debug {minifyEnabled false/*模块混淆*/consumerProguardFiles 'proguard-rules-libxui-queue.pro'/*打包aar,jar混淆*/proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules-libxui-queue.pro'}}

其中,很清晰明了的一句,就是 /打包aar,jar混淆/

            proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules-libxui-queue.pro'

而“proguard-rules-libxui-queue.pro”请替换成你开发module的具体混淆文件名字即可。
上述代码的意思就是,如果是正式包,则开启混淆,测试包则不开启。当然,主项目的混淆状态也会直接影响子module的混淆状态。

注意

混淆的过程中,需要遵循对应的混淆原则。否则会出现无法识别的情况。
还有,对外的输出的jar包,aar包,也应该附带对应的混淆规则说明。

that‘s all-------------------------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/66298.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TypeScript】TS类型守卫(六)

【TypeScript】TS类型守卫(六) 【TypeScript】TS类型守卫(六)一、什么是类型守卫二、in操作符三、typeof操作符四、instanceof操作符五、自定义类型谓词函数 一、什么是类型守卫 TypeScript类型守卫(Type Guards&…

Python实现SSA智能麻雀搜索算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出&a…

Spring Cloud构建微服务断路器介绍

什么是断路器 断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器”本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时,“断路器”能够及时的切断故障电路,防止发生过载、发热、甚至起火等严重后果…

SpringBoot 热部署

文章目录 前言一、spring-boot-devtools添加热部署框架支持settings 开启项目自动编译开启运行中热部署使用Debug启动 二、IDEA 自带 HowSwap 功能设置 Spring Boot 启动类等待项目启动完成点击热加载按钮存在的问题 三、JRebel 插件【推荐】安装插件使用插件 前言 在日常开发…

plt取消坐标轴刻度、自定义取消绘图边框(或坐标轴)、白边处理、自定义颜色图谱、设置坐标轴刻度朝向

目录 1、取消坐标轴刻度 2、自定义取消绘图边框(或坐标轴) 3、去掉图片周边白边 4、自定义颜色图谱 5、设置坐标轴刻度朝向 import matplotlib.pyplot as plt 1、取消坐标轴刻度 ax plt.subplot() ax.set_xticks([]) ax.set_yticks([]) 2、自定…

Nuxt.js快速上手

Nuxt.js快速上手 Nuxt.js快速上手1、为什么用nuxtvue-cli本身问题预渲染服务端渲染(通过SSR)项目解决seo的方案选择 2、Nuxt安装和使用Nuxt安装和使用nuxt安装和目录结构nuxt生命周期nuxt路由nuxt导航守卫nuxt Vuex状态树 3、Nuxt配置项nuxt配置之headnuxt配置之cssnuxt配置之p…

在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——聚合与搜索(三)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

PLUS操作流程、应用与实践,多源不同分辨率数据的处理、ArcGIS的应用、PLUS模型的应用、InVEST模型的应用

PLUS模型是由中国地质大学(武汉)地理与信息工程学院高性能空间计算智能实验室开发,是一个基于栅格数据的可用于斑块尺度土地利用/土地覆盖(LULC)变化模拟的元胞自动机(CA)模型。PLUS模型集成了基于土地扩张分析的规则挖掘方法和基于多类型随机…

Python爬虫IP代理池的建立和使用

写在前面 建立Python爬虫IP代理池可以提高爬虫的稳定性和效率,可以有效避免IP被封锁或限制访问等问题。 下面是建立Python爬虫IP代理池的详细步骤和代码实现: 1. 获取代理IP 我们可以从一些代理IP网站上获取免费或付费的代理IP,或者自己租…

阿里云云主机_ECS云服务器_轻量_GPU_虚拟主机详解

阿里云云主机分为云虚拟主机、云服务器ECS、轻量应用服务器、GPU云服务器、弹性裸金属服务器、专有宿主机、FPGA云服务器、高性能计算E-HPC、无影云电脑等,阿里云百科来详细说下阿里云云主机详解: 目录 阿里云云主机 云服务器ECS 轻量应用服务器 云…

Vue+ElementUI实现选择指定行导出Excel

这里记录一下,今天写项目时 的一个需求,就是通过复选框选中指定行然后导出表格中选中行的Excel表格 然后这里介绍一个工具箱(模板):vue-element-admin 将它拉取后,运行就可以看到如下界面: 这里面的很多功能都已经实现…

淘宝API接口的实时数据和缓存数据区别

电商API接口实时数据是指通过API接口获取到的与电商相关的实时数据。这些数据可以包括商品库存、订单状态、销售额、用户活跃度等信息。 通过电商API接口,可以实时获取到电商平台上的各种数据,这些数据可以帮助企业或开发者做出及时的决策和分析。例如&…