首页 > 其他分享 >如何高效实现混合App开发?

如何高效实现混合App开发?

时间:2023-08-21 16:25:55浏览次数:45  
标签:高效 App 混合 开发 应用 云端 加载

随着越来越多的软件都是以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应用逐渐融合,冯诺伊曼结构则为此提供了坚实的理论基础。通过将应用的核心逻辑和数据存储在云端,实现了应用的分离,不仅为开发者带来了更便捷的维护和更新方式,也为用户提供了更加轻量级的体验。小程序技术则进一步推动了这一趋势,以其低入门门槛和快速开发的特点,让开发者可以更加灵活地构建功能丰富的应用。   然而,云端混合应用的发展也面临一些挑战。网络连接的稳定性、安全性、用户隐私等问题需要仔细考虑和解决。同时,技术的发展也应该紧密结合用户需求,确保应用的性能和用户体验能够得到持续提升。云端存储、小程序技术等元素的融合,正在引领着移动应用开发的新潮流。未来,我们可以期待更多创新和突破,让移动应用的开发变得更加智能、便捷和符合用户期待。无论是开发者还是用户,都将在这个变革的浪潮中获益。

标签:高效,App,混合,开发,应用,云端,加载
From: https://www.cnblogs.com/speedoooo/p/17646335.html

相关文章

  • app直播源码,读取多行文本、读取文件分割多行文本
    app直播源码,读取多行文本、读取文件分割多行文本读取文本 publicfunctiondaoru(){/* *逐行读取TXT文件  */     $rep=str_replace("\n",',',"TD92069E76EC27CA8B66B631CB49A9C6TD5A22D898050393C2F8D5C29C854F1B");    $cont=explode(',',$re......
  • App内拉起小程序的设计方案
    热更新是指软件不通过运营商店的软件版本更新审核,直接通过应用自行下载的软件数据更新的行为。单来说,就是在用户下载安装APP之后,打开App时遇到的即时更新。热更新是一种各大手游等众多App常用的更新方式。热更新的工作原理就是动态下发代码,它可以使开发者在不发布新版本的情况......
  • app字体大小的研究
    模仿手机本身字体1.手机状态栏的中国移动,高度是16px模仿经典应用......
  • 高效试错,敏捷迭代——火山引擎AB测试帮助这个企业掌握「关键能力」
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 最近,乐刻的“百城万店”战略在行业激起了许多讨论。在传统健身馆经营承压、服务业难标准化的语境里,这家创业公司的实践值得被一再研究。乐刻创立至今已有8年,目前拥有乐刻健身、FEELINGM......
  • 哪篇论文宣布了 HTAP 数据库的诞生? StoneDB带您解读《A Common Database Approach for
    theme:condensed-night-purple开启掘金成长之旅!这是我参与「掘金日新计划·12月更文挑战」的第4天,点击查看活动详情本文是 StoneDB学术分享会专栏的第五篇,我们来分享一下HTAP学术界上比较经典的一篇论文《ACommonDatabaseApproachforOLTPandOLAPUsinganIn-M......
  • 运行 'RuoYiApplication' 时出错: 模块 'ruoyi-admin' 没有 JDK
    项目运行良好,关机重新打开项目时出现“运行'RuoYiApplication'时出错:模块'ruoyi-admin'没有JDK”导致运行失败,经检查项目中已经配置SDK解决办法:重新加载Maven,或者直接点项目右侧的刷新按钮  ......
  • 解决CondaVerificationError: setuptools appears to be corrupted
    问题描述使用Anaconda创建新环境,创建环境时或创建虚拟环境后进入到虚拟环境中安装Python,指定Python版本号小于3.7时,总是会出现如下报错:尝试使用condaclean--all并一路点y,无果而终。解决方案定位到指定包的位置,例如上图中红框展现出来的文件路径,进入到该路径下,将提示已......
  • 鑫达惠购系统APP功能架构介绍
    鑫达惠购是一款新电商模式的购物分销系统,基于分销裂变的商业价值行为,快速地分享邀请用户注册。这个系统的模式有个特别的亮点,基于全网公排的模式快速推动用户在商城上的购买活动。1000人团队讲解,根据你下单时间的先后顺序,系统自动匹配1000人给你,他们提现,你就能拿到他们提现金额的0.......
  • perlapp exe 分析
    通过script定位跟进,定位extractvoid*__fastcalldec_script_40CBB0(BFS*res_bfs,constchar*fname,constchar*a3){//[COLLAPSEDLOCALDECLARATIONS.PRESSKEYPADCTRL-"+"TOEXPAND]StackCookie=qword_4162E8;buffer=0i64;if((unsigned......
  • 解密Nginx与Elasticsearch的协同高效:深入理解反向代理与全文搜索
    在当今高度互联的网络环境中,后端技术的结合与优化对于构建高性能应用至关重要。本篇博客将聚焦于两个关键主题:Nginx反向代理和Elasticsearch全文搜索,通过深入分析实现原理和代码示例,展示它们如何协同工作以提升系统性能。Nginx反向代理的作用Nginx不仅仅是一款高性能的Web服务器,还......