标签:android 插件 openatlas 适配 provided
前三篇文章,介绍了OpenAtlas的一些基本用法以及patch的aapt的编译方法。
- Android插件化开发之Atlas初体验
- Android插件化开发之Atlas生成插件信息列表
- Android插件化开发之Atlas资源打包工具补丁aapt的编译
OpenAtlas的原则就是避免引入冗余的库。也就是宿主中提供了第三方库后,插件中就不要再引入该库,编译的时候以provided形式提供即可。最简单的例子就是v4,v7兼容库,应该避免引入。为了让我妈的插件脱离OpenAtlas也能独立运行,但是编译成插件又不用过多的修改代码,我们使用android studio的productFlavors进行适配。
在适配前,一切开发都是按照正常的程序开发流程进行。开发完毕后,我们需要修改build.gradle文件进行适配。首先我们要做的就是增加productFlavors ,其中alone就是代表能独立运行的,openatlas就代表是插件。
productFlavors {
alone{
}
openatlas {
}
}
而我们的插件, versionName后要加入0x10-0x7f之间的值进行资源分区。之前的做法是直接修改该属性,现在我们在productFlavors 中重写改属性完成资源分区,就像这样子。
productFlavors {
alone{
}
openatlas {
versionName "1.00x21"
}
}
而对应的依赖,当我们编译alone时,则要把依赖的库打包进去,但是当我们编译openatlas时,则只是编译时提供,不会打包进去,我们使用provided+Flavor达到目的,拿我们之前的扫描二维码的项目举例。
dependencies {
compile files(‘libs/ZXing-Core-3_2.jar‘)
aloneCompile ‘com.android.support:appcompat-v7:22.2.1‘
openatlasProvided files(‘libs/android-support-v4.jar‘)
openatlasProvided files(‘libs/android-support-v7-appcompat.jar‘)
}
但是这样做有一个问题,就是provided方式只支持jar,但是如果我们使用兼容包的AppCompatActivity类,难免会用到资源文件,这时候,我们编译openatlas的Flavor时,就需要将这些资源文件剔除。
至于aar中,如何提取jar,其实很简单,把aar解压了,把里面的classes.jar和lib目录中的jar提取处理就可以了。
一个最简单的例子就是主题文件。里面引用了资源文件Theme.AppCompat.Light.NoActionBar,我们要将其剔除。做法也很简单,在src目录下新建openatlas目录,并在里面新建values目录,在values下新建styles.xml文件,在里面加入,注意,插件的主题文件在宿主中要存在,最简单的做法就是宿主和插件的主题名字相同。
<resources>
<style name="AppTheme" parent="">
</style>
</resources>
我们看到我们就是简单的将父类变成空了。这样编译打包的时候就不会报错了。android studio会对我们的文件自动进行合并。其他资源问题也进行类似的处理。之后就是插件的生成。插件信息列表的生成,引入插件等等操作了。和之前的文章类似,就不再累赘了。
而插件的生成记得使用Flavor为openatlas生成,在android studio左边点击build variants进行修改即可
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:android 插件 openatlas 适配 provided
原文地址:http://blog.csdn.net/sbsujjbcy/article/details/47806029