Oxpecker: 牛椋鸟        Rhino: 犀牛        Pecking: 啃食
牛椋鸟,犀牛身体的清洁工,啃食犀牛身上的寄生虫。同时还与犀牛搭建信息系统,当有危险来临是第一时间通知犀牛。

下面我说一下Android系开发框架的发展
1. Android开发的同学们都知道,Android的布局文件必须是编译前生成的,也就是说你没有办法像Html一样从网络拉取一份文件后生成组件给用户使用,那么随后国内就出现了大量的插件化开发框架如:DroidPlugin、RePlugin。 后来出现的各种热修复框架如:Sophix、微信的Tinker、美团的Robust、饿了么的Amigo、美丽说蘑菇街的Aceso 等等。目的就是能够在线上升级低版本存在的漏洞或者UI更新的发布,无需下载整个庞大的apk文件,只需要升级部分文件即可,也不再需要让用户等待那个该死而有漫长的安装过程。

2. 插件化和热修复的优缺点
世间没有完美的事物,既然有优点那么肯定有缺点,这是必然的。

插件化的优点:只需下载和更新插件,不用下载整个庞大的apk文件无需安装,无需重新编译,下载成功后加载插件立即运行。
插件化的缺点:(1) 一个插件就是一个apk文件,冗余下载太多。(2) 由于Java ClassLoader的机制限制,当类被加载过后是不能被重新加载的,所以容易出现的问题是同名类无法更新,必须杀进程或维护大量的ClassLoader对象!

热修复的优点:通过高低版本apk文件的比较制作升级文件,下载升级文件后经过dex编译成最新的修复后apk跟新的apk一模一样。
热修复的缺点:必须要经过一个编译过程,这个过程无法避免,像QQ每次有升级都会用进度条方式拦截用户的交互事件。

3. 最后大部分的Android团队选择回到Html5的开发,或者是最近比较流行的RN(React-Native Hybrid式混合开发 当然RN的更大优势在于它的跨平台解决方案)。目的是什么?依然是解决版本升级问题。Html的天然优势在于它可以随时更新到最新的资源并展示给用户。对于用户来说不管你是用那种方式,我不关心你的后台如何搭建,更不会关心你在我本地存放了多少的插件。只要操作流畅体验好类似Native(原生)UI组件交互就是最完美的解决方案。

4. Oxpecker
Oxpecker 像极了Html,但 Oxpecker是Android Native
Oxpecker用Hjson风格写布局,结构清晰,完胜Xml

下面比较一下两者之间的差异:
Xml布局
<?xml version="1.0" encoding="utf-8"?>
android:orientation="vertical"
android:layout_width="match_parent" android:layout_height="match_parent">

android:text="Text - 1"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

android:text="Text - 2"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

android:text="Text - 3"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

android:text="Text - 4"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

android:text="Text - 5"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />



Hjson布局
{
    // 重复使用的组件可以先申明后使用
    head: {
        define: {
            ### 申明重复使用的文本组件
            text: {
                tag: {{text-view}}
                attrs: {
                    textSize: 20sp
                    textColor: "#ffffff"
                    width: auto
                    height: auto
                    centerH: true
                }
            }
        }
    }

    body: {
        {{linear-layout}}: {
            orien: v
    
            text: {text: "Text - 1"}
            text: {text: "Text - 2"}
            text: {text: "Text - 3"}
            text: {text: "Text - 4"}
            text: {text: "Text - 5"}
            
        }
    }
}

跟Android Native使用非常相似。



Oxpecker 还有更方便的AdapterWapper,{{list-view}} 和 {{grid-view}} 不需要再写Adapter,通过模板的自动适配数据。
Oxpecker {{linear-layout}} 就是 {{relative-layout}}
Oxpecker Weight(权重分配法){{relative-layout}} 和 {{linear-layout}} 都能使用,也无需关心orientation(方向)
Oxpecker 能够让Java与JavaScript无缝交互。

详细请关注
https://github.com/xuehuiniaoyu/oxpecker

更多相关文章

  1. 吐血整理:推荐几款顶级好用的IDEA插件
  2. 一款常用的 Squid 日志分析工具
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. Android支持多种设备的方法及资源文件的使用
  7. 图像识别:Android中使用OpenCV
  8. Android开发笔记:图标尺寸的约定
  9. AssetManager读取assets下多张图片资源输出到ImageView动画

随机推荐

  1. 关于“Android SDK manager中不出现完整A
  2. Android分包MultiDex原理详解
  3. Android开发规范FML
  4. App开发那些事--iOS VS android
  5. Android View源码解读:浅谈DecorView与Vie
  6. 移动开发宝典:Android(安卓)Studio使用教
  7. 制作一个透明的Activity
  8. Android客户端判断服务器是否开启 HttpHo
  9. Android学习系列(1)--为App签名(为apk签
  10. Android应用程序签名过期导致项目编译失