Android 二次打包(封装)AAR实用指南
前言
上次文章Android SDK开发与使用的那些事儿说到如何在aar里集成导入的aar,也就是二次封装aar的问题,一带而过,难免不过瘾。在封装这条路上也遇到了不少坑,现在将此方法详细记录下来。
说到二次打包aar这个需求应该算小众了,谷歌一圈下来也找不到答案,Android Studio到目前也还不支持这个操作,一开始遇到这个问题的时候可以说非常蛋疼了...
原理
aar作为一个“特殊后缀”的压缩包,在导入项目中编译的时候无非就是合并,而Android Studio项目有个module的说法,他们两者都可以看做是project的library,既然Android Studio不能自动处理这个合并,那我们何不尝试一下手动解决?
Android Library形式导入AAR解压包
解压AAR文件:
aar解压图.png可以看到,aar里包括了各种各样的资源文件(解压包大致一样,略有差异),但是有的是空文件夹,现在res,jni这些文件夹我们就熟悉了吧!如果你的aar解压出来仅有so库与jar包,那就不用往下看了,直接提取出来复制到项目对应目录下编译即可!
新建一个Module
Android Library.png一路next下去,包名任选(反正也是要抛弃的...)
复制classes.jar包到新建的module(示例library名为:mylibrary)的libs目录下,如图
复制classes.jar文件到libs目录下.png展开mylibrary下的src文件夹,首先删掉文件夹内的所有东西,接着将aar解压文件夹中的assets、res、AndroidManifest.xml等文件(夹)复制进去,复制jni文件夹下的相关文件到新建的jniLibs文件夹。总之,套路就是按正常的项目结构对应来放置资源。当然,以上几个复制步骤是aar中包含该资源的情况下才需要。
src_main.png在app—build.gradle文件下将该module compile进去
引入module project.png至此,aar导入完毕,可以直接使用原arr中的方法,加入自己的业务逻辑再次打包成aar的需求也就迎刃而解了
总结
以module形式手动导入aar的方式,曲线解决了目前Android Studio不支持在aar基础上二次封装成aar这个需求。总结起来就是大胆假设小心求证,了解一些项目合并/打包的原理是很有帮助的,在这探索过程中也得到了好友的指点,在这感谢。最后希望这篇文章分享出来能有所帮助吧!
Android 二次打包(封装)AAR实用指南的更多相关文章
- Android 应用防止被二次打包指南
前言 “Android APP二次打包”则是盗版正规Android APP,破解后植入恶意代码重新打包.不管从性能.用户体验.外观它都跟正规APP一模一样但是背后它确悄悄运行着可怕的程序,它会在不知不 ...
- Android RecyclerView单击、长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类
Android RecyclerView单击.长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类 我写的附录文章2,介绍了 ...
- 《Android Studio实用指南》7.1 AndroidStudio代码检查工具概述
本文节选自<Android Studio实用指南> 作者: 毕小朋 目前本书已上传到百度阅读, 在百度中搜索[Anroid Studio实用指南]便可以找到本书. Android Stud ...
- 《Android Studio实用指南》4.27 使用演示模式
本文节选自<Android Studio实用指南> 第4章第27节 作者: 毕小朋 目前本书已上传到百度阅读, 在百度中搜索[Anroid Studio实用指南]便可以找到本书. 什么是演 ...
- Android studio 使用心得(四)—android studio 多渠道打包(二)
Android studio 使用心得(四)—android studio 多渠道打包 这篇文章讲了一种打包方式.是直接在android studio 里面可视化操作,结合配置文件.我个人觉得严格上来 ...
- WPF实用指南二:移除窗体的图标
原文:WPF实用指南二:移除窗体的图标 WPF没有提供任何功能来移除窗体上的icon图标.一般的做法是设置一个空白的图标,如下图1: 这种做法在窗体边框与标题之间仍然会保留一片空白. 比较好的做法是使 ...
- Android Studio(十二):打包多个发布渠道的apk文件
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- Android 模块打包生成aar远程坐标(sdk)
Android 模块打包生成aar远程坐标 打包成AAR到本地仓库 在模块的gradle文件中加入apply plugin: 'maven' *repository(url:"file:/ ...
- Android官方技术文档翻译——Gradle 插件用户指南(4)
最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...
随机推荐
- panda的query过滤
pandas中可以用query函数以类SQL语言执行查询.
- scp 一次拷贝多个文件
用正则表达式去匹配即可, scp *.tar root@11.11.11.12:/root/ 拷贝当前目录下的所有tar类型的文件到服务器上
- 2018青岛网络赛G - Couleur 区间上的启发式合并
题意:给出\(a[1...n]\),共\(n\)次操作,每次删除一个位置\(p_i\)(强制在线),此时区间会变为两个分离的区间,求每次操作的最大区间逆序对 首先要知道必要的工具,按权值建立的主席树可 ...
- springcloud(十)-Zuul微服务网关
为什么要使用微服务网关 前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服 ...
- c# Equals方法
很多C#的教材都会强调对象相等的概念.我们都知道,在C#的世界里存在两种等同性.一种是逻辑等同性:如果两个对象在逻辑上代表同样的值,则称他们具有逻辑等同性.另一种是引用等同性:如果两个引用指向同一个对 ...
- 何为Web App,何为Hybird App
这些概念听起来很火,当下也很流行,真正理解起来却并非易事.如果让我来全面的解释Web App和Hybird App,我觉得还有些困难. 这篇文章只是我深入了解移动领域开发过程中的不断整理和总结,其中涉 ...
- Linux网络编程服务器模型选择之循环服务器
在网络程序里面,通常都是一个服务器处理多个客户机,为了出个多个客户机的请求,服务器端的程序有不同的处理方式.本节开始介绍Linux下套接字编程的服务器模型选择,主要包括循环服务器模型.并发服务器模型. ...
- Java的枚举类型
引用并转载于:http://blog.csdn.net/ishallwin/article/details/9440251 1.什么是枚举: 在实际编程中,往往存在着这样的“数据集”,它们的数值在程序 ...
- 【c++】类中的const成员
const成员变量 举个例子 #include <iostream> using namespace std; class A { public: A(int size) : SIZE(s ...
- 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)
一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...




