用web技术写APP
_
听说会写web的人也能写APP, 抱着尝试的心态踏上路体验一番
http://www.ionic.wang/start-index.html
0x00 框架环境介绍
ionic是什么?
https://ionicframework.com/docs/
Ionic(ionicframework)一款开源的Html5移动App开发框架
是AngularJS移动端解决方案,Ionic以流行的跨平台移动app开发框架phoengap为蓝本,
让开发者可以通过命令行工具快速生成android ios移动app应用
phonegap是什么?
https://phonegap.com/
Phonegap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。
它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,WP8,Bada和Blackberry
智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动
cordova是什么?
Cordova包装你的HTML/JavaScript app到原生app容器中,可以做到一次编写到处运行各个平台(android、ios、wp、bb、firefoxos、web等)
这些功能通过统一的JavaScript API提供,让你轻松的编写一组代码运行在几乎市面上的所有手机和平板上,
并可以发布到相应的app商城中。手上只有android手机,下面针对android 来弄
通俗的讲:ionic是一款基于angularjs的html5移动app开发框架, 而 cordova / phonegap可以将代码打包成apk文件
本文使用的是 cordova 打包工具进行打包,下面开始环境部署吧
0x01 安装ionic和cordova
cordova 和 ionic 的命令行运行在Node.js 上面并且可以通过NPM安装,因此我们需要先安装一下NodeJs环境。
安装时下图四个全都选上
安装好后,进入cmd测试一下是否安装成功
C:\Users\yjc>node -v
v8.11.4 C:\Users\yjc>npm -v
5.6.0
接着使用npm安装ionic 和 cordova
npm install -g cordova ionic
0x02 创建第一个项目
$ ionic start myApp tabs
下面三个是官方给的模板
$ ionic start myApp blank #下方第一张图
$ ionic start myApp tabs #下方第二张图, 本次测试创建
$ ionic start myApp sidemenu #下方第三张图
接着,运行项目
$ cd myApp
$ ionic serve
运行成功后会打开8100端口服务,并自动弹出浏览器访问该服务
然后将代码打包成andriod平台
$ ionic build
$ ionic cordova platform add android
$ ionic cordova run android
当运行到 ionic cordova run android命令的时候,报出一个错误
(node:129252) UnhandledPromiseRejectionWarning: CordovaError: Failed to find 'ANDROID_HOME' environment variable. Try setting it manually.
Failed to find 'android' command in your 'PATH'. Try update your 'PATH' to include path to valid SDK directory.
通过字面意思是缺少一个环境变量 ANDROID_HOME, 后面去查资料发现仅仅安装 nodejs 和 ionic是不够的,还需要安装 android studio及java环境。
毕竟不管怎样最终的APP生成,都需要依赖andriod sdk以及android 编译工具
0x03 安装java环境
java环境安装的是 jdk8
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
这里也是全都选上
然后添加环境变量 JAVA_HOME, value就是jdk安装的位置
设置完成后,在命令行里测试一下,输入Java弹出用法就没错了
0x05 安装 Android Studio IDE
这货是Google出的,需要FQ,不过国内也有不少开发者做了镜像,其实关于FQ没有什么敏感不敏感的
只要不要给国家捣乱,好好学习,国家还是会支持的,Github就是一个例子。下面是andriod studio 官网
如果没办法FQ,推荐下面国内镜像站,基本里头工具很齐全。
http://www.androiddevtools.cn/
这里我下载的是第一个64位的,有一点需要说明一下, 下载的Android Studio IDE 里头是包含了以下
1. SDK Tools (有sdkmanger adb等等)
2. SDK Platform-Tools (不同安卓版本的管理工具)
3. Build-Tools (编译工具)
4. SDK (默认是8.+的版本,但是cordova 用的是8.0的,后面报错我们需要改一下版本)
5. SDK System images (模拟器镜像,虚拟机AVD创建需要用到,在PC上模拟app运行)
等等
所以说安装一个IDE就够了,其他不用装 !!! 下载完成后解压是免安装的,基本文件如下图
主程序在bin目录下面,此时还没有SDK, Gradle是一个基于Apache Ant和Apache Maven
概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,
抛弃了基于XML的各种繁琐配置。
进入bin目录下面运行 studio64.exe 首先弹出是否导入设置,默认不导入即可,点下一步IDE就会开始下载SDK
这里会弹出代理设置,点击取消不设置代理也是能够继续下载和安装的,因为我相信好好学习,国家还会帮你加速的
之后这里点击自定义custom,把sdk默认安装路径更改一下,不改的话默认使用 Appdata 目录有点烦人
选主题,夜猫子嘿嘿
下图比较关键,这里勾选AVD安卓虚拟机,当然忘记勾后面也可以在IDE里头安装,下面路径则是要安装的SDK目录
这个目录不能和Android Studio IDE 同个目录。新建一个空目录就行。
下面设置虚拟机分配内存空间大小RAM的 ,默认即可
点击确认,人品好的话,国家不会断你的网,然后可以像运维人员那样喝杯咖啡,抽个烟啥的慢慢等待
喝完咖啡回来看看,如果出现下面界面,那么恭喜你人品还不错,因为sdk全是 dl.google.com 里下载的。
接着在主界面点configure ,选择sdkmanager, 查看SDK是否ok
这里默认装的是最新的SDK,Android 8.+ Level28 的SDK
也可以到我们安装的目录里头看看
这里简单说明一下, SDK 存放在platforms里头,里面包含了你下载的所有android sdk版本
build-tools存放的是编译工具, emulator则是用来创建虚拟机的工具。而虚拟机的镜像存放于
system-images里头, skins是主题风格, platform-tools工具集里我只认识 adb 和 sqlite3,
sdk源码包存放在sources里头,最后就是tools/bin下的avdmanager.bat 工具用于创建虚拟机AVD
后面会用到
到这里做了这么多,其实就为了一个环境变量 ANDROID_HOME,现在有了SDK就可以设置该变量了
好了之后,退出终端,重新开个command prompt 执行 ionic cordova run android
0x04 深入一步
初来乍到,遇到各种各样问题是很正常的,不要怕报错,解决错误的方法也很简单,阅读错误提示信息,在查询
相关信息尝试即可, 上面配置好ANDROID_HOME之后,重新运行 ionic cordova run android 提示新的错误
(node:110872) UnhandledPromiseRejectionWarning: CordovaError: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studio
翻译一下字面意思,大概是找不到 grandle 这个东西,如果有的话需要将其加入到环境变量path里头。在上面介绍Android Studio IDE目录结构
的时候有提到Gradle,没错就是那玩意,我们在环境变量指明一下Gradle的位置即可,因为ANDROID_HOME变量只说了SDK位置,IDE的位置
信息还没上报给系统环境。我的gradle在这里,把他添加到用户环境变量中。
然后把终端关了重新运行。不重启的话,终端不会动态更新环境变量。下面Git测试一下
可以之后重新运行ionic cordova run android
结果指明了gradle给他,人家不用,自己又跑去下载低点的版本,为何不一开始就去下载。。。
之后耐心等待他把编译需要的依赖包全部下载完成。。。
下载完成后,又有一个新的错误。
File C:\Users\yjc\.android\repositories.cfg could not be loaded.
Checking the license for package Android SDK Platform 26 in F:\Android\SDK\licenses
Warning: License for package Android SDK Platform 26 not accepted. FAILURE: Build failed with an exception. * What went wrong:
A problem occurred configuring project ':CordovaLib'.
> You have not accepted the license agreements of the following SDK components:
[Android SDK Platform 26].
Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager.
Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.html * Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. * Get more help at https://help.gradle.org
重点是上图蓝字部分,想了老半天,后面才想到IDE默认安装的SDK版本是 Level 28的,
而这里Cordova需要用到 SDK Level 26的,我们还没有安装26的版本,因此报错了,
进入SDKManager安装一下 sdk level 26的版本
下面网站(need FQ)可查看安卓版本和API level等级的对应
https://developer.android.com/studio/releases/platforms
完成后重新在运行一下命令 ionic cordova run android (好像已经敲了4遍了), 不要感到心累
其实排错就像破案一样,通过线索和调查,一步一步把案情弄明白,还不错,放点背景音乐更有气氛
这话刚说完,又报了个错误,不过至少编译成功了,就是虚拟机运行不起来
BUILD SUCCESSFUL in 38s
46 actionable tasks: 46 executed
Built the following apk(s):
C:\Users\yjc\Desktop\myApp\platforms\android\app\build\outputs\apk\debug\app-debug.apk
ANDROID_HOME=F:\Android\SDK
JAVA_HOME=C:\Java
No target specified and no devices found, deploying to emulator
(node:112612) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'semver' of null
编译好的文件在蓝字路径,如果不想用电脑的虚拟机运行,可以无视这个错误,
电脑连上手机,进入apk目录下运行下面命令,就可以在手机上安装第一个demo app程序
adb install app-debug.apk
上图是手机测试结果
但是以后频繁的更改代码测试的时候,总不可能老是到手机上安装测试
要像web开发一样,改好代码,切换浏览器F5立刻显示效果。
所以虚拟机模拟器问题还是需要解决
参考这个网址,大概原因是emulator版本的问题,
这里进入sdk manager 把最新的sdk 8.+删除, 点击Apply应用一下
删除成功后重新运行一下命令.这次虽然没有报错了,但是卡在这个地方不动,提示说请定义ANDROID_STUDIO_ROOT
:app:assembleDebug UP-TO-DATE
:app:cdvBuildDebug UP-TO-DATE BUILD SUCCESSFUL in 2s
46 actionable tasks: 1 executed, 45 up-to-date
Built the following apk(s):
C:\Users\yjc\Desktop\myApp\platforms\android\app\build\outputs\apk\debug\app-debug.apk
ANDROID_HOME=F:\Android\SDK
JAVA_HOME=C:\Java
No target specified and no devices found, deploying to emulator
No emulator specified, defaulting to Nexus_5X_API_28_x86
Waiting for emulator to start...
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
下面是参考stackoverflow解决步骤操作,删除旧的AVD,并创建新的AVD
参考链接
这里选择并下载系统镜像
模拟器运行测试一下。先不要关掉,放在一边
接着在重新运行一下命令 ionic cordova run android (敲了第n遍了,这官网留下那么多坑啊),
终于看到成功的界面,并且模拟器也及时的弹出了Ionic demo app程序
web安卓之路也算是上道了,踩坑无数,苦尽甘来,后面只需要在下图的位置,编写HTML代码就可以生产APP啦,是不是很美滋滋啊
转载请指明出处:https://www.cnblogs.com/demonxian3/p/9516917.html
用web技术写APP的更多相关文章
- 用web技术开发出原生的App应用的体会(1)
本人是是个前端小白,学前端已经有半年的时间了,前几天开了个博客,希望记录自己学习历程的点滴. 今天要写的是关于用html,css,javascript等web技术开发原生的app应用. 总所周知,we ...
- 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写
基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...
- 说说Web.Config与App.Config
说到web.config和app.config大家都很熟悉,我们都叫他们配置文件,平时用的多,注意的少.两个有啥区别呢,很简单,一句话:如果是web程序,如webform项目类型和mvc项目类型就是w ...
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...
- Growth: 一个关于怎样成为优秀Web Developer 的 App
想了想还是决定在今天公布一个预览版.这样才干持续改进.Growth是一个关于怎样成为优秀的Web Developer的APP--结合技能树.成长路线图.进阶书单.Web七日谈以及一些小測验. 它是我对 ...
- web技术开发桌面应用
三款前端工程师桌面应用开发神器! http://mini.eastday.com/a/160630023107669-2.html 如果我告诉你,以后你们可以用前端语言(html5+css3+js)开 ...
- 【web开发 | 移动APP开发】 Web 移动开发指南(2017.01.05更新)
版本记录 - 版本1.0 创建文章(2016.12.30) - 版本1.1 更正了hybird相关知识:增加了参考文章(2017.01.05): + Web APP更正为响应式移动站点与页面,简称响应 ...
- 深入分析Java Web技术内幕(修订版)
阿里巴巴集团技术丛书 深入分析Java Web技术内幕(修订版)(阿里巴巴集团技术丛书.技术大牛范禹.玉伯.毕玄联合力荐!大型互联网公司开发应用实践!) 许令波 著 ISBN 978-7-121- ...
- 在Web.config或App.config中的添加自定义配置
.Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持.最近看到一些项目中还在自定义xml文件做程序的配置,所以忍 ...
随机推荐
- Linux -- Xshell ,Xftp远程连接中文乱码怎么解决?
### 这几天开始捣鼓lnmp的环境搭建,很多东西还是得自己去经历,才会印象深刻,有所体会,有所收获与成长! 但是,偶尔会遇到一些意想不到问题! Xshell ,Xftp 远程连接的时候出现中文乱码的 ...
- 【原创】大叔问题定位分享(19)spark task在executors上分布不均
最近提交一个spark应用之后发现执行非常慢,点开spark web ui之后发现卡在一个job的一个stage上,这个stage有100000个task,但是绝大部分task都分配到两个execut ...
- Java学习之Java接口回调理解
Java接口回调 在Java学习中有个比较重要的知识点,就是今天我们要讲的接口回调.接口回调的理解如果解释起来会比较抽象,我一般喜欢用一个或几个经典的例子来帮助加深理解. 举例:老板分派给员工做事,员 ...
- springboot配置文件priperties大全
flyway.baseline-description 执行基线时标记已有Schema的描述. flyway.baseline-on-migrate 在没有元数据表的情况下,针对非空Schema执行迁 ...
- java学习 之 操作符
操作符介绍 java语言操作符 1.赋值操作符 = 2.计算操作符 + .- (减.负号).*(乘)./(除) 3.递增递减 --(递减).++(递增) 4.关系操作符 ==.!= ...
- 20165328 实验四《Andriid应用开发》实验报告
一.实验一:Andriod Stuidio的安装测试: 实验要求: 参考 ...
- 你好!酷痞Coolpy 之 Linux篇
欢迎你进入酷痞的物联网世界.这里有着自由的空气和自然的气息.接下来我将告诉你如果一步步建立一个自己专属的物联网平台. 由于目前的酷痞的官方域名还没有通过备案所以现在用临时域名解说本说明. 最终酷痞的官 ...
- iOS12系统应用发送邮件中的附件
iOS12系统应用发送邮件中的附件 iOS12系统应用发送邮件中的附件,如果发送邮件的内容很多,或者包含文档.图片等,可以以附件的形式进行发送.此时需要使用addAttachmentData(_:mi ...
- PHPstorm远程连接侧边栏怎么打开,远程数据库侧边栏怎么打开
- VS2008中 VB 报错 检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
Resvr32 .net中引用控件的名称 如果注册成功,问题不在出现 但是如果是在x64位的系统中,即使控件注册成功,错误依照提示,是因为大多数第三方写的COM控件,只支持32位的系统, 在VS中找到 ...