Oxpecker 让Android Native插上“H5”的翅膀

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"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent" android:layout_height="match_parent">

<TextView
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" />

<TextView
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" />

<TextView
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" />

<TextView
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" />

<TextView
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" />

</LinearLayout>

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值