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 ...
随机推荐
- Ubuntu16.04安装视觉SLAM环境(g2o)
1.首先在github上下载g2o图优化库 git clone https://github.com/RainerKuemmerle/g2o.git 2.运行安装以下依赖库 sudo apt-get ...
- C# 并发队列ConcurrentQueue
测试函数 static async Task RunProgram() { var taskQueue = new ConcurrentQueue<CustomTask>(); var c ...
- Fleury算法
关于为什么不选桥 因为选桥之后会变成两个联通分支,这时由于可能产生的新联通分支不是孤立顶点,他俩都不联通了,那么也就绝对不可能“一笔画”走下来了 关于为什么可以选除桥之外的任意一条边走 本质原因是因为 ...
- 洛谷 P4774 / loj 2721 [NOI2018] 屠龙勇士 题解【同余】【exgcd】【CRT】
推导过程存在漏洞+exCRT板子没打熟于是期望得分÷实际得分=∞? 题目描述 小 D 最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照编号 \(1\sim n\) 顺序杀掉 \(n\ ...
- 【HADR】搭建实战
Summary: 简单的HADR,只用一台虚拟机,两个实例间搭建.工作量不大,一般5分钟左右能够完成. 步骤: 1.设定归档模式 2.使用备份建立standby数据库 3.设定hadr相关的参数 4. ...
- Dalvik与JVM区别
1.Dalvik出现和SDK层面采用java为开发语言的原因 1.1 避免Native作为应用代码导致的因为设备多样化导致App生态了支离破碎,是从Nokia哪里的教训. 1.2 重新实现Dalvik ...
- [问题解决]Fresco设置圆角效果不生效问题探究
[问题解决]Fresco设置圆角效果不生效问题探究 /** * Created by diql on 2017/2/21 11:07:04. */ 问题 在View中设置: fresco:rounde ...
- Hibernate 查询语句基本用法
转发: http://459104018-qq-com.iteye.com/blog/720538
- HDU 6225 Little Boxes
Little Boxes Little boxes on the hillside. Little boxes made of ticky-tacky. Little boxes. Little ...
- 开始使用 Vuejs 2.0 ---简单总结2
Vuejs的常用指令 v-html v-show v-if v-for v-on 1 .v-html v-html 更新元素或者变量的innerHTML,按普通html解析,和v-text的区别是在变 ...




