制作包含依赖库的AAR包

android studio支持把一个库工程输出为aar格式,aar格式除了.class文件外,还可以包含资源文件,库文件等,这就在一定程度上弥补了jar的不足。
这样发布一个sdk就可以以aar格式发布一些带界面逻辑的功能。但由于模块化和依赖等原因,项目有时会生产许多个aar,发布多个aar文件显然不是一个好的方案,
并且还有混淆的问题。所以最好的方法是把所有的aar合并为一个,这个最终的aar保护所有的依赖的aar和so文件等。

其实aar本身就是个zip格式的文件,我们生成aar压缩文件里的所有文件,我们就可以合成最终的aar。

一 建一个空的app工程,并且grade编译版本设置为1.3
 dependencies {
        classpath ‘com.android.tools.build:gradle:1.3.0‘
    }

二 在app工作中,应用所有的aar。
2.1 将所以aar文件复制到app工程的libs目录下
2.2 引用所有lib工程
   compile(name: ‘工程名‘, ext: ‘aar‘)
2.3
     repositories {
        flatDir {
            dirs ‘libs‘
        }
    }

三  打开混淆开关,编译release版
     buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
        }
    }

四  取出编译中生产的文件,合并aar,可以自己写脚本
 jar位置: \build\intermediates\classes-proguard\release\classes.jar
 R.txt,res等文件都能在intermediates目录下找到相应的所有aar合并后的相应文件。
 
 这些文件都找到后,按aar文件的目录格式放在一起,然后把这个目录压缩为zip包, 这就是最终的合并后的aar文件。

五 这里要特殊处理下:
解析R.txt文件,把里面的所有资源类型,声明一份占位的资源文件aar_res.xml

<resources>
    <public id="0x71100110f" name="base_fragment" type="layout" />
<public id="0x71100111f" name="base_bk" type="color" />
<public id="0x71100112f" name="button" type="id" />
    </resources>
 
 如果是类型是id,还需要一个id列表声明文件ids.xml
 
 <resources>
    <item name="button" type="id" />
</resources>

六  将aar_res.xml和ids.xml 和步骤五生成的.aar文件一起打包给发布,即可。

时间: 2024-12-05 15:51:43

制作包含依赖库的AAR包的相关文章

Android Studio 创建aar包与引用

两者区别:*.jar: 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件.*.aar: 包含所有资源 ,class以及res资源文件全部包含 一.创建aar包1.创建一个android library2.获取aar包,在lib项目下build/outpus/aar/lib.aar 如图:1)创建lib module,并填写相关信息 2)在对应目录获取aar文件 二.引用关联1.导入一个aar(类似创建module步骤)2.引用aar文件 如图:1.导入一个aar 2

【Python笔记】如何源码编译依赖LAPACK和ATLAS库的NumPy包

上篇笔记介绍了不依赖lapack和atlas库的NumPy包源码编译/安装方法,但"纯净版"的NumPy会损失性能,故本篇笔记说明如何源码编译安装依赖lapack和atlas库的NumPy包. 1. GCC版本要求 使用较新版本的GCC工具集(尽量不低于v4.7)且集成有gfortran编译器. 备注1:这里大写的"GCC"是指GNU Compiler Collection,它除包含C语言编译器gcc外,还包含很多其它语言的编译器(如g++/gfortran等) 备

[整理]VS2010中如何添加“依赖&quot;,&quot;库目录&quot;,&quot;包含目录&quot;

VS2010中如何添加“依赖","库目录","包含目录" 1. 添加编译所需要(依赖)的 lib 文件[解决方案资源管理器]“项目->属性->配置属性->连接器->输入->附加依赖项”里填写“winsock.lib”,多个 lib 以空格隔开.(等同于“#pragma comment(lib, "winsock.lib") ”语句)2. 添加库(Libs)文件目录    方法 1:[解决方案资源管理器]“项

[Maven]Maven构建可执行的jar包(包含依赖jar包)

----------------------------------------------------------------- 转载请注明出处! 博主:疲惫的豆豆 链接:http://www.cnblogs.com/dzblog/p/6913809.html ----------------------------------------------------------------- 目标: 将依赖的第三方jar包打进去 方法: maven-assembly-plugin 环境: IDE

Linux系统裁减之,制作一个极度精简的Linux-用脚本实现自动拷贝命令和依赖库文件

第2章 用脚本实现自动拷贝命令和依赖库文件 这篇文章主要是对我上一篇博文http://blog.51cto.com/linuxprince/2045703加以完善的,前一篇文章中拷贝命令和依赖库文件的过程是完全手工方式的,显得特别LOW,这章把该过程完善一下,用脚本方式实现. 2.1命令具体实现方法 创建脚本文件bincp.sh输入一下内容: #!/bin/bash # DESPATH=/mnt/sysroot libcp() { LIBPATH=${1%/*} [ ! -d $LIBPATH

(转载) Android studio如何生成aar包

Android studio如何生成aar包 标签: Android studio如何生成aaAndroid studio aarAndroid 如何生成aar包 2016-12-21 14:42 1856人阅读 评论(0) 收藏 举报  分类: Android开发(116)  在Android Studio中对一个自己库进行生成操作时将会同时生成.jar与.aar文件. 分别存储位置: *.jar:库 /build/intermediates/bundles/debug(release)/cl

AS中jar包和aar包区别及导入导出

发布时间:2018-01-18 来源:网络 上传者:用户 关键字: 导出 导入 区别 包和 aar jar 发表文章 摘要:jar包和aar包区别*.jar:只包含class文件与清单文件,不包含资源文件,如图片等所有res中的文件.*.aar:包含所有资源,class以及res资源文件全部包含如果你只是一个简单的类库那么使用生成的*.jar文件即可;如果你的是一个UI库,包含一些自己写的控件布局文件以及字体等资源文件那么就只能使用*.aar文件.jar包和aar包导出1.新建库步骤:File-

ReactNative: 将自定义的ReactNative组件制作成第三方库的详细流程(制作--&gt;发布)

一.简介 在讲本篇博文之前,需要你熟知怎么自定义ReactNative组件,然后才好学习将自定义的ReactNative组件制作成第三方库.本文中的自定义的ReactNative组件LoginManager API 源自上篇文章,所以需要先看一下上篇博文.言归正传,ReactNative的确提供了一个非常便捷的方式来扩展Native模块.如果要把模块做成第三方组件的话,还有一些工作要做:首先以一个静态库工程来编译模块代码,提供JavaScript的封装,最后创建Package.json来支持no

QT--以共享的方式发布应用,QT依赖库

Building Qt as a Shared Library 因为:QT基本上都是采用动态编译的(被安装的OS中的),(如安装包往往都是默认动态编译处理好的动态库),所以我们采用动态连接的方式进行发布应用. 如果采用静态的方式发布,则需要重新通过对QT的源码进行“静态编译”后形成lib,或者obj的形式.然后安装在开发的系统中. <1>采用QTCreater继承开发环境编译,以及发布处理. 总体来说非常方便, (1)选择器以Debug或者Release形式构建 (2)先编译通过,完成bug修