混合App开发可以怎么玩?

news2024/10/5 23:27:05

随着越来越多的软件都是以saas或者云端的形式提供,因此,混合App的开发占比越来越大,大厂们纷纷都转向此类的开发。最近看到一些文章,混合App的开发,还能用计算机之父的那套理论--冯诺依曼结构来开开脑洞。

本篇文章,我们来大概介绍一下。

前置科普:哪些App能上架至应用市场?

苹果上架很多人都有误区,认为只要不是原生开发的App(哪怕一点点功能),均无法上架。

实则不然。苹果接收的软件不区分Web App、混合App还是原生App:

1、Web App:App里面webview打开远端的网站。Web App最大的缺点是:加载资源都是远端每次都要重新加载速度会变慢,俗称网站打包的APP。

2、混合App:App里面webview打开本地的H5、js、css和图片资源,不用读取远端的数据。加载的资源的减少大大加快App打开的速度,俗称混合开发的APP

3、原生App:逻辑框架和图片资源在本地,数据读取很少,在提交应用市场审核的时候,因为其均为本地打包加载,故没有很多的业务流程在App上架后能够进行改变,所以原生App不能灵活的应对市场需求,这也是为什么现在许多App,甚至是大厂需要转战混合App开发的重要因素之一。

混合App开发方式-1:webview加载网页

WebView 是一种在移动应用中嵌入网页内容的组件,用于实现Hybrid混合App开发。在Hybrid开发中,你可以将本地的原生应用代码(通常使用诸如Java(Android)或Swift/Objective-C(iOS)等语言编写)与Web技术(如HTML、CSS和JavaScript)相结合,以便同时利用原生应用和Web内容的优势。

WebView 的工作原理大致是:

1、嵌入网页内容:这是最基本的组成。开发者可以使用WebView组件来创建一个视图,以便现实制定的网页(本地或远程);

2、加载HTML、CSS和JavaScript以便创建交互性更强、动态的界面,从而增强应用的用户体验;

3、通信桥梁创建,原生功能的调用:JavaScript代码可以通过调用原生接口来使用设备的本地功能,例如访问相机、位置信息、存储等。原生代码可以将这些功能暴露给JavaScript脚本,以便在WebView中使用;

4、性能和安全: WebView虽然能够嵌入Web内容,但其性远不如完全的原生应用。此外,WebView本质上运行在应用的沙盒环境中,与应用的其余部分分离开来,安全性倒是在一定程度上可以保障。

这类App,在互联网2.0阶段之初,网页盛行的时候,其技术层一度受到开发者的青睐,但随着应用市场审核机制的完善及进步,此类App开发完成后,需要经过多次的审核方能上架,甚至永远无法通过。

于是,使用Java classload这类的混合App开发的便开始进入了App开发的主流。

混合App开发方式-2:java classload类加载机制

使用Java的类加载机制从网络流读取字节码加载类,通常被称为远程类加载(Remote Class Loading)。这种技术在特定情况下可以用于实现混合App开发,尤其是在需要动态更新应用功能或模块时。下面是其基本原理:

  1. 生成和传输字节码: 在混合App开发中,你可以将一些Java类的字节码编译成二进制形式,并通过网络传输到移动应用。这些字节码表示你要引入的一些新功能或模块,或者用于更新已有功能。

  2. 自定义类加载器: 在应用中,你需要实现一个自定义的类加载器,以便从网络流中读取字节码并加载对应的类。Java的类加载机制允许你通过扩展ClassLoader类来创建自定义的类加载器,它可以覆盖加载类的默认行为。

  3. 类加载过程: 当应用代码需要使用某个类时,首先会通过自定义的类加载器进行查找和加载。如果该类尚未加载,类加载器会从网络流中读取相应的字节码,并将其转化为Class对象。加载后的类可以在应用中被实例化和使用,就像通过常规方式加载的类一样。

  4. 安全和隔离性考虑: 远程类加载涉及到安全性和隔离性的问题。你需要确保只有受信任的字节码才能被加载,以防止恶意代码的注入。此外,你还需要注意避免类冲突和内存泄漏等问题。

  5. 动态更新和模块化: 远程类加载使得你可以在不重新发布应用的情况下,通过更新远程字节码来引入新的功能、修复bug或者修改现有功能。这在需要快速响应用户需求或者进行A/B测试时非常有用。

混合App开发方式-3:参考冯诺伊曼结构,网络传输的包既可以是数据也可以是代码

参考冯诺伊曼结构,将代码和数据存储在云端进行混合App开发,可以实现一种类似于"云端混合应用"的架构。这种架构的基本原理是将应用的核心逻辑和数据存储在云服务器上,而移动设备上的应用则主要负责展示界面、用户交互和与云端通信。

​以下是其基本原理:

  1. 分离前端和后端: 在这种架构中,移动设备上的应用主要充当前端角色,负责用户界面的展示、用户输入的响应以及与云端的通信。而应用的核心逻辑和数据存储则放在云端服务器上,充当后端角色。

  2. 云端逻辑和数据: 应用的核心逻辑、业务处理和数据存储都在云端进行。这包括应用的业务逻辑、数据库、文件存储等。移动设备上的应用通过与云服务器进行通信来获取所需的数据和执行必要的操作。

  3. 移动端界面: 移动设备上的应用主要负责展示用户界面,以及接收用户输入并将其传递给云端。移动端应用可以使用本地技术(如原生UI组件或本地的WebView)来构建用户界面,同时通过网络请求向云服务器发起请求。

  4. 云端通信: 移动设备通过网络连接与云服务器进行通信。这可以通过HTTP协议、WebSocket等方式进行。移动端应用发送请求到云端,云端根据请求执行逻辑并返回相应的数据或结果。

  5. 动态更新和维护: 在这种架构下,应用的核心逻辑和数据存储在云端,因此可以实现动态更新应用的功能、修复bug或引入新的特性,而无需用户手动更新应用。这样可以更快地响应用户需求和市场变化。

现代超级App如微信、支付宝、百度、美团等,其构建技术便是类似的理念:小程序+App壳子

相比于传统的原生应用开发技术,小程序技术具有轻量、快速开发、跨平台、无需安装、更便于用户使用等优势。小程序不需要用户下载安装即可使用,同时小程序的开发成本相对更低,开发速度更快,也更易于维护更新。小程序技术还支持跨平台运行,可以同时在多个移动设备上运行,极大地扩展了应用的覆盖范围,为企业和开发者带来更大的商业价值。市面上一些比较知名的小程序容器技术产品包括:微信、支付宝、百度、抖音小程序等,他们都是以完善大社交平台自有小程序生态的技术底座,能提供第三方进行私有化部署的有:FinClip、mPaaS等产品。据了解,FinClip自行研发的小程序容器技术,能够让企业的App能具备快速运行小程序的能力,他们家的SDK还能嵌入除App以外的职能设备终端中(如 Linux、Windows、MacOS、麒麟等操作系统上运行)。

随着移动互联网的蓬勃发展,传统的原生应用和Web应用逐渐融合,冯诺伊曼结构则为此提供了坚实的理论基础。通过将应用的核心逻辑和数据存储在云端,实现了应用的分离,不仅为开发者带来了更便捷的维护和更新方式,也为用户提供了更加轻量级的体验。小程序技术则进一步推动了这一趋势,以其低入门门槛和快速开发的特点,让开发者可以更加灵活地构建功能丰富的应用。

然而,云端混合应用的发展也面临一些挑战。网络连接的稳定性、安全性、用户隐私等问题需要仔细考虑和解决。同时,技术的发展也应该紧密结合用户需求,确保应用的性能和用户体验能够得到持续提升。云端存储、小程序技术等元素的融合,正在引领着移动应用开发的新潮流。未来,我们可以期待更多创新和突破,让移动应用的开发变得更加智能、便捷和符合用户期待。无论是开发者还是用户,都将在这个变革的浪潮中获益。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/910684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多线程——学习笔记 1

目录 多线程的了解多线程并行和并发的区别Java程序运行原理多线程程序实现的方式1.继承Thread2.实现Runnable 多线程(实现Runnable的原理)实现多线程两种方式的区别匿名内部类实现线程的两种方式获取线程名字和设置名字获取当前线程的对象——hread.currentThread()…

allegro env 文件路径

很多人说在cadence安装路径里修改env文件不生效,或者在安装目录里找不到env文件路径。 原因可能是 用户环境变量中的HOME路径修改导致的,allegro会抓取HOME变量定义的路径中的env文件。所以你如果要修改env文件,最好看看HOME路径&#xff0c…

窗口函数大揭秘!轻松计算数据累计占比,玩转数据分析的绝佳利器

上一篇文章《如何用窗口函数实现排名计算》中小编为大家介绍了窗口函数在排名计算场景中的应用,但实际上窗口函数除了可以进行单行计算,还可以在每行上打开一个指定大小的计算窗口,这个计算窗口可以由SQL中的语句具体指定,大到整个…

LTMC S/4HANA 2022 – 迁移您的数据

翻译一篇,估计很少人用过这个LTMC功能,更不用说,LTMOM了。一个还没开始用已经被弃用的事务代码: 在这篇博文中,我将解释如何在 S/4HANA 2022 版本中通过“迁移您的数据”应用程序逐步执行数据迁移。如您所知&#xff0…

UE4/5Niagara粒子特效之Niagara_Particles官方案例:2.4->3.2

之前的案例 UE4/5Niagara粒子特效之Niagara_Particles官方案例:1.1->1.4_多方通行8的博客-CSDN博客 UE4/5Niagara粒子特效之Niagara_Particles官方案例:1.5->2.3_多方通行8的博客-CSDN博客 2.4 Location Events 这次的项目和之…

VS2022解决Protobuf compiler version 23.4 doesn‘t match library version 4.23.4

在使用Visual Studio 2022MinGWCMake作为开发环境时,如果项目中使用了Protobuf,则在CMake运行时,可能会出现Protobuf compiler version 23.4 doesnt match library version 4.23.4的问题: 1> [CMake] CMake Warning at C:/Pro…

一体全栈、开箱即用!麒麟信安与灵雀云携手打造“操作系统+云平台”联合解决方案

近日麒麟信安与北京凌云雀科技有限公司(以下简称“灵雀云”)开展生态合作,共同完成了灵雀云企业级全栈云原生平台ACPV3与麒麟信安操作系统V3等系列产品的兼容性认证测试。基于双方产品兼容性良好、稳定运行、性能表现卓越,麒麟信安…

书单模板空白图怎么做?分享个简单的方法

在当今数字化时代,越来越多的人开始将书单制作成具有视觉效果的视频,以此来吸引更多的读者。本文将介绍如何制作书单模板的空白图以及一些制作书单视频的方法。 制作书单模板空白图 书单模板空白图是一种用于书单视频制作的基础模板,通过制作…

不负众望~历时4年修炼,这本册子终于成书了(文末赠书)

名字:阿玥的小东东 学习:Python、C/C 主页链接:阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 精进Spring Boot首选读物 “小册”变“大书”,彻底弄懂Spring Boot 全方位配套资源…

【实战】十一、看板页面及任务组页面开发(三) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十五)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…

Docker容器:docker数据管理、镜像的创建及dockerfile案例

文章目录 一、docker数据管理1.为何需要docker数据管理2.数据管理类型3.数据卷4.数据卷容器5.容器的互联 二.docker镜像的三种创建方法1.基于现有镜像创建1.1 启动镜像1.2 生成新镜像 2.基于本地模板创建2.1 OPENVZ 下载模板2.2 导入容器生成镜像 3.基于dockerfile创建3.1 dock…

基于Jenkins构建生产CICD环境、jenkins安装

目录 Jenkins简介 安装配置Jenkins Jenkins简介 Jenkins是一个用Java编写的开源的持续集成工具。在与Oracle发生争执后,项目从Hudson项目独立。官方网站:https://jenkins.io/。 Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中&#xff…

Web 3.0 安全风险,您需要了解这些内容

随着技术的不断发展,Web 3.0 正在逐渐成为现实,为我们带来了许多新的机遇和挑战。然而,与任何新技术一样,Web 3.0 也伴随着一系列安全风险,这些风险需要被认真对待。在这篇文章中,我们将探讨一些与Web 3.0 …

【excel密码】如何禁止移动、删除excel工作表?

想要工作表不被他人移动、删除等操作,该如何设置?今天分享如何设置才能够禁止excel工作表移动、删除。 打开excel工作表,点击工具栏中的审阅 – 保护工作簿 点击保护工作簿之后,会有弹框出现,输入想要设置的excel密码…

新的后端渲染:服务器驱动UI

通过API发送UI是一种彻底的新方法,将改变传统的UI开发。 一项正在改变我们对用户界面 (UI) 的看法的技术是通过 API 发送 UI,也称为服务器驱动UI。这种方法提供了新水平的活力和灵活性,正在改变 UI 开发的传统范例。 服务器驱动 UI 不仅仅是…

Web 事务管理

Web在执行的过程中需要保证一致性,从而需要引入事务来对SQL事件进行事务的管理。具体而言可以参考这篇博客MySQL事务(transaction)。 具体而言,我们获得一个这样的需求,删除一个部门,在删除部门的过程中需要删除部门下的所有员工…

无人机航管应答机 ping200XR

产品概述 ping200XR是一个完整的系统,旨在满足航管应答器和自动相关监视广播(ADS-B)的要求,在管制空域操作无人航空系统(UAS)。该系统完全可配置为模式A,模式C,模式S转发器和扩展ADS-B发射机的任何组合。ping200XR包括一个精度超…

几个Web自动化测试框架的比较:Cypress、Selenium和Playwright

介绍:Web自动化测试框架对于确保Web应用程序的质量和可靠性至关重要。它们帮助开发人员和测试人员自动执行重复性任务,跨多个浏览器和平台执行测试,并在开发早期发现问题。 以下仅代表作者观点: 本文探讨来3种流行的Web自动化测…

怎么把视频转换成mp4格式?分享几种视频格式转换方法

将视频格式转换成MP4格式的好处包括:更广泛的兼容性,因为MP4是一种通用格式,大多数设备和平台都支持;更小的文件大小,因为MP4使用高效的压缩算法,可以将视频文件压缩到更小的大小;更好的视频质量…

Linux常用命令——diff3命令

在线Linux命令查询工具 diff3 比较3个文件不同的地方 补充说明 diff3命令用于比较3个文件,将3个文件的不同的地方显示到标准输出。 语法 diff3(选项)(参数)选项 -a:把所有的文件都当做文本文件按照行为单位进行比较,即给定的文件不是文…