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"?>
android:layout_width="match_parent" android:layout_height="match_parent">
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
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
更多相关文章
- 吐血整理:推荐几款顶级好用的IDEA插件
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- Android支持多种设备的方法及资源文件的使用
- 图像识别:Android中使用OpenCV
- Android开发笔记:图标尺寸的约定
- AssetManager读取assets下多张图片资源输出到ImageView动画