目前市场上,(市场也许用的不对),比较常见的技术有xamrin、RN、Flutter,确切的说flutter是后起之秀,笔者也是最近才开始学习,xamrin是微软系的技术,笔者也很早就开始学习了,RN笔者也学习了一小段时间,xamrin和RN 笔者在学习时候的最大感受就是累, 完全体会不到编程的乐趣。

先说说xamrin,我看了一阵子,官网的教程看了一遍,想实现一个复杂一点的界面,想破头皮不知道如何实现,因为xamrin.form的组件会被生成原生的组件,所以这就衍生出了一个很复杂的问题,原生的控件的特性各不一样,form控件如何匹配,很多组件特性的匹配,比如我想实现一个通讯录的右边首字母索引滑动导航功能,思考了半天不知道如何下手,提供的控件似乎不太好搭配,需要自己去渲染么,困惑了好几天,(在这里不做吐糟,也许是自己水平达不到)在网上试图搜搜案例,又搜不到,衡量了几天,还是放弃了,也许xamarin这种映射原生的控件的做法有太大的局限性。

然后就转向了RN,RN生态要比xamrin好的多,某个功能只要上网一搜索,都有很多案例,好有吸引力啊,笔者就开始踏入了学习之路,与其说是学习之路,倒不如说是踩坑之路,从搭环境开始,需要安装N多的东西,为了开发自己的一款APP,索性忍了,由于采用的是脚本,我又学习了es6,可是es6学习完后,我才发现脚本语言的特性,没有一定的积累,很难摸得十分清楚,但是毕竟也是多年的开发经验,还算hold住,于是我在想脚本有先天的不足性,但是开发者却期望他变得像java、c#这种语言那样强大,于是纷纷改造扩展,从最初的js到es6 7,typescript, 再到各种组件,插件,可以说是鸡毛乱飞啊,好生迷乱,为了开发一款自己的app,忍了,一点点熟悉,可是令我最不能忍得是,我第一天搭建的APP,第二天就运行不起来了,于是分析估计是下载了一个插件所致,分析了一整天,似乎也没找到解决办法,貌似是插件版本的问题,后来解决了,又报了另一个莫名的错误,哎正在困惑时,又看到了一个夸平台技术,flutter,搜了搜貌似还挺有吸引力,flutter直接自己实现了界面,也就是说flutter自己在安卓和ios上渲染了UI,这个太强悍了,于是又放弃了RN,转投flutter,

于是又开启了flutter入门之旅

flutter的开发语言是dart,dart是面向对象的语言,一些语法特性类似java、c#,但是要比他们轻巧的多,所以学起来很快。

环境搭建,客观的讲flutter的环境搭建要比rn省事的多,下载flutter sdk,配置环境变量就搞定了(参照官网教程),另外模拟器的安装会有一点点注意的地方。

1.模拟器安装,安装android studio,来安装sdk

  • SDK Platforms窗口中,选择Show Package Details,然后在Android 6.0 (Marshmallow)中勾选Google APIsAndroid SDK Platform 23Intel x86 Atom System ImageIntel x86 Atom_64 System Image以及Google APIs Intel x86 Atom_64 System Image
  • SDK Tools窗口中,选择Show Package Details,然后在Android SDK Build Tools中勾选Android SDK Build-Tools 23.0.1。然后还要勾选最底部的Android Support Repository.

另外sdk的安装,flutter官网提供的不详细,完全可以参照RN的教程来安装sdk https://reactnative.cn/docs/0.47/getting-started.html

2.模拟器的启动报haxm

bios里启动虚拟化技术,网上有,如果已经启用不用考虑

D:\Android\Sdk\extras\intel\Hardware_Accelerated_Execution_Manager里的intelhaxm-android.exe有没有安装?

只要做到了这两点,模拟器基本上都可以启动起来

3.启动项目持续的initialzing gradle,等待很长时间

C:\Users\Administrator\.gradle\wrapper\dists该目录下又各种版本的gradle压缩文件,可以在网上先下载下来,然后zip包直接放到对应的目录下,譬如C:\Users\Administrator\.gradle\wrapper\dists\gradle-4.10.2-all\9fahxiiecdb76a5g3aw9oi8rv不需要解压。这样时间就不会很久了。

另外要学会修改项目的gradle版本,否则版本不同就还要下载,还会等待很长时间

在这两个文件里修改,修改的跟简单,打开一看就知道了不做介绍。

4.开发工具的选择可以是android studio 或者vscode,网上都有介绍,不做介绍,笔者使用的是vscode

至此,就可以开心的开发了,多研究别人的源码,熟悉各种套路就是了。

谈谈跨平台的app开发 坚定的选择了flutter的更多相关文章

  1. 跨平台移动APP开发进阶(二)HTML5+、mui开发移动app教程

    前端开发APP,从HBuilder开始~ 序 通过 HTML5 开发移动App 时,会发现HTML5 很多能力不具备.为弥补HTML5 能力的不足,在W3C 中国的指导下成立了www.HTML5Plu ...

  2. 跨平台移动APP开发进阶(一)mui开发注意事项

    mui开发注意事项 Mui HTML5开发框架 mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细 ...

  3. 跨平台移动APP开发进阶(四)AngularJS简介

    AngularJS 是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件. 它的创新点在于,利用 数据绑定 和 依赖注入 ...

  4. 跨平台移动APP开发进阶(三)hbuilder+mui mobile app 开发心酸路

    注:请点击此处进行充电! 1.问题描述:在实现图片轮转时,若将 <script type="text/javascript"> mui("#slider&qu ...

  5. 初学者福音——10个最佳APP开发入门在线学习网站

    根据Payscale的调查显示,现在的APP开发人员的年薪达到:$66,851.这也是为什么那么多初学的开发都想跻身到APP开发这行业的主要原因之一.每当你打开App Store时候,看着琳琅满目的A ...

  6. 跨平台app开发(引擎)工具的选择【转】

    跨平台app开发(引擎)工具的选择 1.html5执行速度慢,用户体验不好 2.原生应用开发,即ios和安卓分别开发,需要两种技术人员,后期代码维护困难,很难达到统一. 3.xamarin是一款c#的 ...

  7. 跨平台移动端APP开发---简单高效的MUI框架

    MUI是dcloud(数字天堂)公司旗下的一款跨平台开发移动APP的框架产品,在学习MUI框架之前,最先接触了Hbuilder代码编辑器,它带给我的第一感觉是快,这是HBuilder的最大优势,通过完 ...

  8. 带你从零学ReactNative开发跨平台App开发(七)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  9. 带你从零学ReactNative开发跨平台App开发(四)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

随机推荐

  1. Java Web 减少网络 IO、静态资源磁盘 IO 有效的办法--响应使用 GZIP( 压缩http请求与响应gzip压缩)

    (转载http://blog.csdn.net/hylclxy/article/details/7779662) 出于节约流量考虑, 客户端在向服务端发送request的时候对post数据进行gzip ...

  2. 错误:Authentication with old password no longer supported, use 4.1 style passwords.

    今天重新装了系统,mysql connector 使用了官网的最新版本(6.8.3). 启动项目出现标题中的错误.原因大家谷歌. 解决方法,使用低版本的 connector. 我使用的是 6.5.6 ...

  3. FastAdmin 关于跨域问题解决

    FastAdmin 关于跨域问题解决 之前很久之前收集到社区的问题. https://forum.fastadmin.net/thread/277 今天又有人问到,无法打开,估计是网络问题. 以下为完 ...

  4. 简明 Python 教程--学习记录

    注意,我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符.这样做有点难看,不过确实简单有效. print # prints a blank line 注意,没有返回值 ...

  5. 使用CXF开发简单的Web Service-HelloWorld(二)

    上篇博文我们介绍了Web Service的基本概念,了解它的基本概念之后,我们这篇博文介绍一个开源的WebService框架-Apache CXF,并实现一个HelloWorld实例. 一.开始之前 ...

  6. 【备忘】windows环境下20行php代码搞定音频裁剪

    先上图,由于最近的需求需要对语音文件进行处理,所以抽空研究了下php处理音/视频文件的处理,简单的demo处理,截取一个音频文件的前20秒,并保存新的媒体文件. 操作步骤: ①在此站点下载所需的辅助程 ...

  7. FPGA常用设计思想与基本模块划分

    常用设计思想与技巧 (1)乒乓操作; (2)串并转换; (3)流水线操作; (4)异步时钟域数据同步.是指如何在两个时钟不同步的数据域之间可靠地进行数据交换的问题.数据时钟域不同步主要有两种情况: ① ...

  8. “FPGA+云"助力高性能计算

    用AI防鲨鱼.用AI学写中国书法.用AI预测人类死亡时间.用AI审判罪犯……在人工智能方兴未艾的今天,越来越廉价和普及的AI领域真的是什么都不值钱,除了想象力.那在这无所不能的AI盛世,一定没道理让算 ...

  9. TCP/IP网络编程系列之三(初级)

    TCP/IP网络编程系列之三-地址族与数据序列 分配给套接字的IP地址和端口 IP是Internet Protocol (网络协议)的简写,是为首发网络数据而分配给计算机的值.端口号并非赋予计算机值, ...

  10. Java中split的用法

    Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:java.lang.string.splitsplit 方法 ...