热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一个程序员说。

作者:star终于完成了自己的一个App开发作品,这是一个真正意义上通过跨平台技术完成的纯原生体验App产品。回顾一下整个过程,把我个人的学习历程分享出来,希望能对大家有所帮助。谨

作者:star

终于完成了自己的一个App开发作品,这是一个真正意义上通过跨平台技术完成的纯原生体验App产品。回顾一下整个过程,把我个人的学习历程分享出来,希望能对大家有所帮助。谨以此文,献给像我一样“在路上”创业的小伙伴们,也献给一路上帮助我成长的那个名为“And”的技术大神!

相信每个人都能感受到,这几年移动技术的高速发展和App开发的强劲需求,这些因素交织在一起造成了应用开发人才供求的严重不平。这让那些做IOS和Android的程序员工资水平,像打了鸡血一样翻倍的往上涨,相比之下也让普通Web开发者者望尘莫及。曾经很不幸,小编本人就是众多web开发程序员中的一猿,而且自认是深受传统Java的跨平台思想教育的一个资深愤青。几年来,我怀揣着“一次编码,处处运行”的梦想一路追下来,试图要另辟蹊径杀入到移动开发圈里去。从5年前学习phoneGap开始,我花了大量时间去研究和尝试,用过Xamarin, NativeScript, React Native,Appcan, Apicloud等移动开发产品,我没有放过每一个跨平台移动开发平台,不断坚持亲自去尝试和体验。对于技术上敢吃螃蟹的先行者,我难免也要为之付出一些代价:跨平台技术确实在不断改进,可伴随着发展“坑”也是越来越大。这些让人又爱又恨的产品,让我不断享受着那种“带你装b带你飞带你冲进垃圾堆”的感觉。经过痛苦的学习和实践经历之后,我不禁真心想问上几个问题:Html5技术在移动开发领域里真的能替代原生开发成为未来吗?达不到原生体验效果的跨平台技术还有和意义?“learn once write anywhere”的方式成本这么高,到底能帮程序员省下多少力气?通过反射和桥接技术,用js或c#调用ios和android原生api,有何实用价值,在真实的项目里真有人能忍受得起这么折腾吗?

当然,对技术的吐槽是没有意义的,无论产品发展过程有多么曲折,软件技术本身总是在一步步趋于成熟,没有人能阻挡这个潮流。梦想最终还是落到了现实,无意间一次接触DeviceOne移动开发平台,让我逐渐找到了感觉。算是功夫不负有心人吧,这次尝试,凭我一人之力,一款名为《纳豆》App产品终于上线发布了(包括IOS和Android两个版本)。这个真实的实践经历,让我惊喜的感受到,App跨平台开发时代的这回真的到来了!

好了,闲话少说,感激之情难以言表,还是有图有真相吧:

《一个程序员说。》

《一个程序员说。》

《一个程序员说。》

来感受一下我的App的体验效果吧,大家以扫描二维码下载体验,也可以直接到下面的地址安装:

《一个程序员说。》

古人云:“不管黑猫白猫能抓住老鼠就是好猫,不想当老师的程序员就不是好厨子”。是的,好东西就要拿出来与大家分享,接下来我来给小伙伴们详细介绍一下我学习过程。

最初我刚接触到DeviceOne时,也是抱着试试看的态度。直到在QQ技术讨论群看见群里有人展示他做出一款叫做“慧影时间流”日程管理应用,让我信心大增。我尝试着安装体验了一下这个App,结果完全出乎我的意料:两侧时间轴强大的同步能力,精准的计算和流畅体验真是让人叹服,尼玛这是中间件开发出来的应用吗,就算原生开发也很难做到呀!对于这款应用,大家还是自己来体验一下吧。

《一个程序员说。》

(作者居然说还不够完美,还要继续完善后才能上appstore。所以这个应用是企业证书签名的,打开之前需要先授权)

当然,别人做的东西再好,也不如自己亲自去做来的实在。于是我就跟着教程,一步步学习,亲自学习了一遍下面这个应用的开发。

官网上还有一些很多小的学习实例,可供大家学习参考:

http://doc.deviceone.net/web/doc/code4do.htm

简单介绍一下DeviceOne的原理,它彻底抛弃html和webview作为跨平台的核心,也不像reactnative那样使用类似html的结构,完全使用自己的一套json格式的ui描述,胆子真够大,不过还好它有可视化的IDE,可以拖拽可以“WYSWYG”的方式构造ui。最最神奇的是它们的ui能自动适配所有手机屏幕,我开发app都基本忘记了屏幕的差异性。逻辑代码可以用Javascript编写(还能用lua,我没试过),但是对js的要求不高,因为绝大部分功能都是DeviceOne提供的将近100个原生组件来实现的。

好了,我就先介绍这么多吧,时间有限,大家如果有问题还是去官网http://www.deviceone.net/ QQ技术讨论群里问技术大神吧,等我下一个应用发布后会继续分享给大家的。

小伙伴们,实践是检验真理的唯一标准,技术这东西不能靠吹牛的,是不是好东西还要自己亲自尝试过才知道。


推荐阅读
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文讨论了使用HTML5+JS开发App所需的框架和工具推荐,希望能提供真实案例作为参考。重点考虑框架和工具的文档齐全性以及是否支持二维码扫描、摇一摇等功能。同时提到了H5+框架的适用性。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文是关于C#类型系统、值类型和引用类型的概念性笔记。介绍了C#1系统类型的三个特性,静态类型的含义,显式类型和隐式类型的区别。还讨论了类、结构、数组类型、枚举、委托类型和接口类型属于哪一种类型。同时纠正了关于结构、引用类型和对象传递的错误表述。最后提到了C#4中使用动态类型的关键字。 ... [详细]
author-avatar
丰田高耗能妨功害能侠盗飞车_948
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有