APP开发技术简介
1.APP的打包与发布方式来分类,APP分为三类:
    •    需要安装的APPNative AppHybird AppReact App都属于这一类,发布时需要将App打包成可执行程序,然后挂到市场或者网站上,让用户下载安装后才能运行,其功能受限于平台API与权限,但也可以通过一些技巧越过平台API与权限限制,比如Hook技术。
    •    不需要安装的APPWeb App,其实本质上就是个网站,只是做成了和手机APP相仿的样子,发布方式与网站发布相同,用户可以通过浏览器或者之类的工具去加载这个网站,其功能相对于手机,受限于浏览器引擎提供对手机本地服务(文件、相机等等)访问的JS接口,通常功能非常少,所以限制较大。
    •    需要用户已经安装某个第三方APP,然后跑在第三方APP上的APP,这类技术安卓上较多(典型的Python程序可以跑在PythonOnAndroid APP上,或者Ruby解释器可以跑Ruby程序),而iOS由于有对这类行为做出过明确限制,上架审核规则里有明确指出,不准APP可以下载源代码从而扩展功能,所以iOS上过去并不存在这样的APP
2.针对需要安装的APPAPP开发技术有如下分类
    •    基于官方推荐与支持的语言与框架开发的App,安卓目前官方推荐的是JavaKotlinC/C++进行开发,iOS目前官方推荐的是Objective-CSwiftC/C++
    •    基于一些第三方支持的语言和框架开发的App,这类大多是由一些互联网巨头与开源组织维护的,典型的技术有:
    •    Qt(知名的跨平台GUI框架,基于C++,现在随诺基亚倒台被Digia收购与商业化),可以用来开发安卓和iOS,但问题是我有了JavaOC,为啥还要去用Qt C++,是因为太闲或者觉得BUG不够多吗。。。
    •    Mono,微软.NET框架的开源山寨版,与.NET兼容程度很高,一般使用C#开发,可以用来开发安卓和iOS,性能不佳,C#的开发效率也没比JavaOC高到哪去,还要面对没有官方支持的一堆坑,用他得靠信仰
    •    Node.js,可以使用JS开发然后编译成Native程序,可以用来开发安卓和iOS,但和大部分JS的东西一样,你懂的,JS是一种宗教
    •    GoGoogle的高并发系统级语言,原目标是用来替换C,但似乎并不是很美,新的语法似乎还不如老的C,看个人喜好吧,目前有一些第三方写的Android框架,iOS不清楚,没官方支持
    •    ErlangRubyPython,只要能编译二进制程序的框架理论上都能支持安卓和iOS,当然大多不靠谱,有病的可以试一下。
3.Hybird应用
        前面我们说到了,浏览器为WebApp提供的可以用来访问的本地服务非常有限,访问一个相册和相机都是困难重重,而且还得运行在浏览器上,一看就没有高大上的感觉,而只会JS的前端工程师水平又不愿学JavaOCSwift这些无聊的东西,所以就有了Hybird应用这个概念,其本质上就是给浏览器组件套个APP的壳,然后浏览器上跑Web页面,如果python能在手机上运行吗Web页面需要访问一些系统服务,则可以在App的壳子里预先写好一些服务,然后提供接口注入到Web页面中调用,这样的框架有很多,而且也很好写,事实上目前大部分APP都是Hybird应用,因为可以利用Web页面实现动态页面。
以上信息来自网络