码迷,mamicode.com
首页 > 移动开发 > 详细

Android插件化开发之Atlas插件适配

时间:2015-08-20 13:04:27      阅读:196      评论:0      收藏:0      [点我收藏+]

标签: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进行修改即可

技术分享

源码下载
http://download.csdn.net/detail/sbsujjbcy/9027641

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android插件化开发之Atlas插件适配

标签:android   插件   openatlas   适配   provided   

原文地址:http://blog.csdn.net/sbsujjbcy/article/details/47806029

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!