技术标签: APP开发工具 移动应用程序 iOS Delphi Android
移动应用程序开发可以分为三种主要类型的应用程序创建。本机应用程序,基于Web的移动应用程序和混合应用程序。
描述本机应用程序,混合应用程序和Web应用程序之间差异的最简单方法是:
截至2021年3月,Android(71.9%)和iOS(27.33%)占据了市场主导地位。这意味着,如果您要创建针对Android和iOS的移动用户体验/应用程序,它将提供几乎完整的市场覆盖率(99.2%)。
通常,本机应用程序是针对其运行的每个平台编写和编译的。它们针对硬件进行了编译和优化,因此可提供最快的性能和最高的安全性。通过完全访问硬件,他们还可以从对生物特征,照相机,传感器等设备功能的完全访问中受益。由于本机应用程序使用系统UI元素,因此它们“适合”平台用户体验,从而实现了最高的采用率推出时的评分,因为它们使用起来更直观。这一事实得到了事实的支持,即本机应用程序在市场上每个应用程序商店的排行榜中占据主导地位。
尽管本机应用程序方法可提供最佳的性能,速度和可用性,但供应商工具(例如Xcode(适用于Apple的iOS)和Android Studio(适用于Android))仅针对单个平台。由于多个代码库,Q&A周期,保持更新的技能等原因,这可能会使开发周期更长,更复杂,并且最终(看似)最终的前期成本更高。这就是说,如上所述,选择此本地代码的原因很多,在用户反馈不佳的情况下,许多公司已将混合应用重新编写为本机版本。
最初安装本机应用程序(以及某些混合应用程序)可能需要更长的时间,尤其是通过应用商店进行部署时,但是,一旦设置,它们的更新速度就相对较快(但不如没有应用程序商店的网络应用程序那么快)。
市场上提供单一源码,完全编译的本机应用程序的一种选择是Delphi。自推出以来,FireMonkey(FMX)在市场上已有9年以上的历史,它已经发展成为一个高度灵活的框架,该框架建立在现代的面向对象和基于组件的编程基础之上,以实现针对移动开发的低代码RAD方法,而不仅仅是针对Android和iOS,以及macOS,Linux和Windows。
混合应用程序(例如来自Sencha,Angular Mobile,React Native,Cordova,Ionic,PhoneGap的应用程序)是使用托管在本机应用程序外壳中的Web技术(HTML5,CSS,JavaScript)构建的。本质上,它们是在微型Web服务器内的手机上本地运行的Web应用程序。
混合应用程序开发的一个好处是单一源代码库可以针对多个平台。此外,本机外壳可以允许HTML语言扩展到手机硬件的某些部分–但是,与本机应用程序可以实现的功能相比,这是有限的。还可以将混合应用程序设置为在没有实时连接的情况下脱机运行(如果以这种方式配置)。
混合应用程序的主要缺点是它们仍然可以看起来和表现得像网页。例如,控件可能会意外地在UI中获得多选。它们还因内存和处理器优化不佳而广为人知,从而使其占用大量资源。
安全也是要考虑的主要问题,因为源代码通常在应用程序捆绑包中以明文形式出现。这使得使用混合应用程序时的安全合规性更加难以掌握。恶意代码注入确实令人担忧。
在所有这些选项中,最接近本机应用程序的是React Native,它设法提供对使用某些本机控件的访问。它拥有一个良好的社区,并得到了Facebook和其他人的支持。但是,经常有人提到Facebook在某些地方仍在使用纯本机应用程序代码来解决功能限制。对于安全性非常重要的应用程序(例如金融应用程序),也不建议使用React Native 。
在许多低代码解决方案(例如Lansa,Mendix,Microsoft PowerApps和Appian)中也经常发现混合应用程序,这些方法已与其他后端系统集成。虽然这些平台对于最初的上市速度而言令人印象深刻,但仍然可以实现的目标受到限制,并且由于其附带的按用户定价,因此按较高的运行成本进行分类。
Web应用程序也是将内容传递到手机的有用方法。尽管未安装Web Apps,但确实需要建立实时数据连接,但它们确实提供了快速更改和更新用户可以看到和执行的操作的机会。Web应用程序是通过浏览器运行的,因此主要的计算功能可以远程运行,这意味着移动设备需要最少的功能和内存来运行Web应用程序。
HTML5具有一些强大的功能,包括本地数据存储,可以使有限的数据缓存成为可能,但是,这并不正是您想要存储敏感数据的地方!
Web应用程序的一个主要好处是,您可以在几乎特殊的小众移动平台上获得几乎100%的市场覆盖率。
答案实际上取决于您的要求!
在所有选项中,仅在Delphi中可以看到在单个代码库中提供最佳的本机(速度,性能和设备访问)和跨平台支持(帮助管理长期成本)。颈椎枕尽管与其他平台相比,Delphi可能被视为专业性很强的细分市场开发工具,但是开发人员(尤其是那些熟悉C#的人员)很容易掌握该框架的技能,而其运行多个开发项目和保持多种技能的成本却只是其一小部分。凭借26年以上的市场经验,以及9年以上的时间提供独特的多平台方法,可以说,它在该领域领先其他开发工具好多年。
文章浏览阅读1.4w次,点赞5次,收藏17次。因为直接使用系统vedioview,底部的MediaController布局有点不好看,尤其是进度条,不能实现办半屏与全屏的切换,自己网上看了下别人的资料,整理了下,做以笔记;初学者,勉强才实现这些功能,还有许多地方不明白。1,MediaController.java.直接复制下系统源码的MediaController,来进行修改,就两个地方,一个布局相关的修改,以及进度条Progress_自定义mediacontroller
文章浏览阅读167次。以下的文章主要介绍的是MySQL SUSE SLES11安装与配置笔记的实际操作过程,我们是在Linux下两个不同的版本MySQL安装实战(MySQL5和MySQL4)演示,以下就是文章的而具体内容描述。 Redhat9.2 安装MySQL5.0 fedora7安装MySQL (1) 下载 从MySQL官网 下载到最新的以下的文章主要介绍的是MySQL SUSE SLES11安装与配置笔记的实际操..._sles11安装
文章浏览阅读6.2k次,点赞8次,收藏65次。1、SVPWM的生成在FOC矢量控制中,Id、Iq 经过PID输出Vd、Vq。Vd、Vq经过反park变换成Vα、Vβ。再经过Vα、Vβ合成空间参考矢量Uref。那么怎么根据Vα、Vβ确定Uref所在扇区,然后确定所在扇区两个基础非零矢量的作用时间呢。1.1、传统的计算方法把Uref转换为虚数形式Uref=Va+jVβ。..._svpwmsimulink
文章浏览阅读3.9k次,点赞5次,收藏17次。E:\>color /?设置默认的控制台前景和背景颜色。COLOR [attr] attr 指定控制台输出的颜色属性颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一: 0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 A = 淡绿色 3 = 浅绿色 B = 淡浅绿色 4 = 红色 C ..._c++调用windows系统自带的文字处理程序
文章浏览阅读5k次,点赞26次,收藏24次。在使用Ubuntu的过程中,突然发现Ctrl + Alt + T无法打开terminator,但是Ubuntu本身的终端是可以打开的。我因此重启了电脑两次,重装terminator,都无效。结果原因是因为我更改了默认的Python版本,就是把/usr/bin/python连接到了Python3,但是terminator是基于Python2的。解决方案sudo gedit /usr/bin/te..._ctrl alt t打开不是terminator
文章浏览阅读2.4w次,点赞12次,收藏46次。在C#窗口程序中,如果在主线程里调用Sleep,在Sleep完成之前, 界面呈现出假死状态,不能响应任何操作! 下边实现的是非独占性延时函数,延时过时中界面仍可响应消息:public static void Delay(int milliSecond){ int start = Environment.TickCount; while (Math.Abs(Environment._c#等待10毫秒怎么写
文章浏览阅读83次。import React, { Component } from "react"import { log } from "util";export default class Form extends Component { constructor() { super() this.state = { user: {//要提交给后端的数据 起名字后端叫什么我们也叫什么 username: '', _react form.create with 2 elements with non-unique
文章浏览阅读2.8k次。首先大家先确定自己使用的是2.1.1版本的springboot,我试过其他版本的用此方法会抱各种各样的错误出来springboot pom依赖,如果版本确定没错的话,这个依赖可不加<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-b..._开启连接追踪和连接池
文章浏览阅读1k次。1.硬件方面:Armv8提供了两个寄存器用于控制“FPU虚拟化”——CPTR_EL2、CPACR_EL1。我们截取手册上关键位置。CPTR_EL2当CPTR_EL2寄存器的bit10为0时,FPU相关操作不被trapped,相反为1,则所有意欲访问FPU部件的指令(不管是EL0、EL1还是EL2)都会被trap到EL2。CPACR_EL1CPACR_EL1寄存器..._cptr_el2
文章浏览阅读1.2k次。1.检查自己的mysql-connector-java驱动包有没有导入,如果是maven项目,则检查你项目下的pom.xml文件中是否引入mysql-connector-java驱动依赖:javaweb一般项目:Maven项目的pom.xml文件: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> _com.hkd.charpter03.testmybatis2 at java.net.urlclassloader.findclass(unknow
文章浏览阅读98次。内什么,系统装好了,还要装一些软件才能吃pi哦更新 vim树莓派自带的 vim 不是很好用,比如默认不支持小键盘及方向键等,我们可以更新一下sudo apt-get install vim使用远程桌面通过 Windows 自带的远程桌面软件,可以远程访问树莓派桌面应用sudo apt-get install xrdpsshssh 服务默认已经安装完毕, ..._树莓派包含的软件
文章浏览阅读231次。AMiner平台(https://www.aminer.cn)由清华大学计算机系研发,拥有我国完全自主知识产权。平台包含了超过2.3亿学术论文/专利和1.36亿学者的科技图谱,提供学者评价、专家发现、智能指派、学术地图等科技情报专业化服务。系统2006年上线,吸引了全球220个国家/地区1000多万独立IP访问,数据下载量230万次,年度访问量超过1100万,成为学术搜索和社会网络挖掘研究的重要数据和实验平台。必读论文:https://www.aminer.cn/topic进化算法,或称“演化算法”._aminer算法