• 制作包含依赖库的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位置: uildintermediatesclasses-proguard eleaseclasses.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文件一起打包给发布,即可。

  • 相关阅读:
    内排序小结
    HTML初体验
    android动画介绍之 自己定义Animation动画实现qq抖一抖效果
    iOS 把数据库文件打包到mainbundle中,查找不到路径的解决的方法;以及在删除bundle中文件的可行性
    随着ScrollView的滑动,渐渐的运行动画View
    MFC Month Calendar Control 控件使用
    Codeforces Round #148 (Div. 1)
    Codeforces 486E LIS of Sequence(线段树+LIS)
    2014年百度之星资格赛第四题Labyrinth
    UVA10519
  • 原文地址:https://www.cnblogs.com/tonny-li/p/5627906.html
Copyright © 2020-2023  润新知