APP项目如何与插件化无缝结合(三)

目录:

APP项目如何与插件化无缝结合(一) 

APP项目如何与插件化无缝结合(二) 

APP项目如何与插件化无缝结合(三) 

搬砖码字不易,转载请注明转自:http://blog.csdn.net/u011176685/article/details/52006474

上面一篇主要介绍了Small的原理,相信大家应该现在心里有个大概的了解。好,我们接下来继续开始!


一、Small的使用

关于Small的使用,Small的使用 这里讲的很详细,关于这里提下我当时遇到的问题和解决办法。

1.Small作者应该用的是mac,推荐的是使用android studio的工程模板,上面的命令好像是不适应,至少对于我(使用windows),你得自己手动创建工程模板,就是把作者的那个模板复制到studio的工程模板配置下面,然后重启打开就可以看到。可以先谷歌下,不行的话,可以发消息和我说下。我帮忙看看。

2.如果选择自己手动创建项目的话,得留意第四步Configure UI route中,右键assets目录->New->File,新建bundle.json文件。对于Android Studio这样创建不会去解析assets目录的。应该在app模块下面的main目录,右键->New->Folder->Assets Folder,新建assets目录。就是把assets目录换个位置。还有就是自己弄的时候,有问题可以多看看里面的issue和FAQ很多问题,一般已经有人帮你踩了。

3.Small项目需要编译的时候需要使用build lib, build bundle命令,我现在还不清楚为什么我使用命令不行,可能因为那个命令是针对mac。后面也不去深究了。直接在Gradle任务导航里运行,效果一样。


二、Small的升级和更新

这个是大家很关心的一个地方,Small的Demo里面有个功能测试升级,代码的位置如图所示,里面有个checkUpgrade()方法。




如果你直接使用demo的话,会看不出升级的效果的,因为uir是small作者自己的,基本都没有更新。后面将介绍如何升级更新!

1.更换成你自己服务器的地址,如下图所示,注释的是demo的url,下面的url是我自己的。你需要在bundles.json里面配置你要更新的插件pgk名字和下载的地址。下图是我自己的。



2.build lib,build bundle之后编译程序,在手机上运行一个。然后比如我的main插件有问题,我要更改。把代码更改好之后。一定要记得更改版本号。demo里面默认的是1。需要我们再app.main下面的build.gradle把versionCode由1更换成2,name由1.0换成1.1。


然后再build lib,build bundle之后,你会看到宿主app的smallLibs下面的armeabi有很多so文件,就是我们加载的。选择main.so文件放到你的服务器上面。在上面的那个demo里面点击Check upgrade按钮,等待更新完成。然后退出后台,重启。你会发现插件更新成功了!!!



三、看看更新的代码

 主要调用checkUpgrade方法,我们看看requestUpgradeInfo



里面主要是通过http请求获取服务器bundles.json这个文件,然后去解析json.把信息存储到UpgradeInfo里面。mResponseHandler完成回调。


然后就是调用upgradeBundles方法。我们跟进去看看,这个方法具体做什么。


这个方法主要是校验服务器上bundles.json的信息,然后开始下载插件和加载插件。现在插件已经下载到你的应用储存目录了!!

四、Small的加载

原谅下好久没有使用UML画图工具了,很多概念都忘了,画了一个大概的流程图,方便直观的看。


五、Small的启动



代码我就不深入说了,感兴趣的同学,可以按照这个图一步步看看源码,Small作者写的挺不错的,很多地方值得学习和借鉴

六、支持的平台


七、插件化的问题

插件化的实施一定不是一个人的事情,这是一个团队的事情,很多东西都必须考虑好。这是查阅资料总结的几个问题。后面再继续讲解初步的方案。



欢迎关注个人微信公众号,专注于Android深度文章和移动前沿技术分享


参考资料:

1.https://github.com/wequick/Small

2.http://www.tuicool.com/articles/NB32EjY

3.http://www.tuicool.com/articles/RR3QrmV

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
在Windows下试了试用Ionic开发Android应用,试通了。记录了过程。列在下面,供参考。 1. JDK 我用的jdk8,这里下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 。我老早下载的,8u66,i586(32位的),现在是8u102: http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-wi
最近写的项目中有用到数据库,写了不少蛋疼的sql语句,每次都是好几行代码,而且每次都是重复的没有一点技术含量的代码,虽然也有不少基于sqlite的封装,不过用起来还是感觉不够面向对象! 为了不再写重复的代码,花了几天时间,基于SQLite3简单封装了下,实现了一行代码解决增删改查等常用的功能!并没有太过高深的知识,主要用了runtime和KVC: 首先我们创建个大家都熟悉的Person类,并声明两个属性,下面将以类此展开分析 @interface Person : NSObject @property (

以太网帧格式 - 2016-07-24 18:07:25

浅谈以太网帧格式                                       一、Ethernet帧格式的发展 1980 DEC,Intel,Xerox制订了Ethernet I的标准 1982 DEC,Intel,Xerox又制订了Ehternet II的标准 1982 IEEE开始研究Ethernet的国际标准802.3  1983 迫不及待的Novell基于IEEE的802.3的原始版开发了专用的Ethernet帧格式 1985 IEEE推出IEEE 802.3规范,后来为解决Eth
  谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK。而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了。只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的builder,其实就是在执行Cygwin,然后传递ndk-build作为参数,这样就能让Eclipse自动编译
文章系列 视频驱动V4L2子系统驱动架构 - 驱动框架 视频驱动V4L2子系统驱动架构 - ioctl 基于linux4.6.3,最后会附上一张ioctl调用总图,分析代码还是要用图来说明,这样更清晰一点,我就是这么分析的,不过平时分析的图很随便,而且很大,所以就不能在这里呈现,我在这里会贴出一个简略图 ioctl详解 进入ioctl都是从cdev-ops-ioctl进入的,一般的驱动cdev都是驱动自己初始化的,在v4l2架构中,cdev都已经初始化完成,不需要驱动开发者来初始化,下面是v4l2的cde
杂谈 最近在研究gradle ,插件化~自己碰到的坑很多.今天先总结一下 以下这三个都研究过,原理都是一样的,区别就在于用哪个更方便. 在这里我会讲述一下,这里面的原理和自己爬的坑,以便大家理解,还有少爬坑~~ 原理是需要懂得~ 不然,你遇到错误不会解决,并且你始终会是初级工程师~ 首先,按照顺序,介绍下目前三种热修复的方式: 1.Nuwa (基于gradle写的脚本,操作起来比较麻烦,需要拷贝和运行命令行~) https://github.com/jasonross/Nuwa 2.andfix (看过~
题记——  难过了,悄悄走一走;         伤心了,默默睡一觉;         优雅不是训练出来的,而是一种阅历;         淡然不是伪装出来的,而是一种沉淀;         时间飞逝,老去的只是我们的容颜;         时间仿佛一颗灵魂,越来越动人; 1、简述:     在多线程的世界中,是那么的神奇 与 高效以及合理; 2、创建线程池实例     官方推荐使用Executors类工厂方法来创建线程池管理,Executors类是官方提供的一个工厂类,里面封装了好多功能不一样的线程池,
书接上回,我们已经了解了一些关于适配的一些相关概念,接下来我们会了解一下,在设置布局时我们应该注意的地方。 尽量不去设定具体的尺寸值。 为了确保布局适应各种尺寸的屏幕,在保证功能实现的前提下,最好不要写死一些尺寸,这样的硬编码,我们最好使用“match_parent”,”wrap_content”,”weight”这些不用指定具体的尺寸值的参数,这样视图就会根据自身需要的空间去充填。这样就可以让布局去适应各种屏幕的尺寸,当屏幕有旋转时也不会受到影响。 这里我们重点说一下“weight”,用过 LiearL

艺术般的波浪点击反馈效果 - 2016-07-24 17:07:27

Material Design之Rippledrawable 使用与简单封装(向下兼容至selector) 前言 Android 5.0问世以来,谷歌所推崇的Material Design得到业界的一致好评,其良好的UI规范与交互确实让界面交互友好和漂亮了不少,Rippledrawable便是其中之一,本博客今天着重讲如何将它运用到我们自己的项目中,并且封装得简单易用。 我们都知道,我们在之前做按钮或者布局的反馈效果,一般都用selector来实现,分别指定按下或正常状态的两种颜色即可,我们点击的效果也本
ubuntu环境 首先确定是否安装了Git管理工具 sudo apt-get install git 我选择SSH方式,比较安全方便,只需一次配置 1- 使用ssh命令连接github.com的SSH服务,登录名为git@github.com(所有GitHub用户共享此SSH用户名)。 wangxiong @Dell :~/Public/GitHubRepository/PaPaPlayer $ ssh - T git @github .com The authenticity of host 'gith