mac环境下node.js和phonegap/cordova创建ios和android应用

mac环境下node.js和phonegap/cordova创建ios和android应用

分享到:QQ空间新浪微博腾讯微博人人网微信

引用百度百科的一段描述:PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,WP8,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以调用. 查看更多


使用前提:

已经安装xcode

已经安装python 2.7 (3.0一下版本)

已经安装node 0.10.*(本环境是 0.10.28)

上面的安装方法你可以在本博客搜索


cordova和phonegap是什么关系?

PhoneGap的代码已经贡献给了Apache软件基金会(ASF),并且改名为 Apache Cordova.

这个名字来源于温哥华的科尔多瓦街(Cordova Street),它是创建PhoneGap时Nitobi公司的所在地.


所以上面这2个东西其实是一个东西.下面就全部统一成 cordova


安装 cordova 环境

sudo npm install -g cordova

经过几分钟的下载编译,成功了.....


这时你就可以创建app相关项目了,命令如下:

$ cordova create sansiyueapp
$ cd sansiyueapp

一个app相关的空项目就算建好了.接着我们来创建 ios 和 android 相关应用.


ios版:

$ cordova platform add ios

非常顺利,你可以在Finder中看到 sansiyueapp 目录 platforms文件夹下看到 ios 文件夹,已经创建成功,你可以用xcode开发这个项目.


android版:(稍微做一点心理准备,也许你也会碰到下面的坑)

$ phonegap run android
或者
$ cordova platform add android

上面的2种命令方式是一致的,选择其中一种运行即可

上面的错误大致是在生产安卓应用的时候,没有找到android_home 环境变量的支持.因为我的环境已经安装了jdk ,如果你发现和上面的错误不一样,请按照下面的几个步骤排查


需要如下环境支持:

JDK、Android SDK、Apache Ant

对应下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

http://developer.android.com/sdk/index.html

http://ant.apache.org/bindownload.cgi

因为我的环境之前安装了jdk,所以这里忽略了.....


apache_ant安装:

根据上面提供的地址进入下载页,中间靠下的位置可以看到下面列出的3个压缩包,你可以下载任意一个,我是用的中间这个压缩文件.

我把解压出来的文件夹拷贝的 /usr/local/ 目录下, (如果你Finder 中找不到此文字,在终端用命令拷贝)

$ cp -rf ~/Download/apache-ant-1.9.4 /usr/local/

这里注意一下,为了让你当前登录帐号在未来的日子里有足够权限访问此文件夹,需要你用命令给此文件夹赋权限.

首先要知道你的 用户名和所在的用户组,如何知道? 系统偏好设置 --> 用户与用户组

第一步解锁, 接着第二步在当前账号 右键高级选项 ,见下图:

红框处的用户名和群组需要你记下来,然后执行下面命令赋权限

chown zhangzhi:staff apache-ant-1.9.4

接着运行下面命令

ln -s apache-ant-1.9.4 ant

这时你/usr/local/目录下会多出来一个 ant的文件快捷方式

接着写一个 apache_ant 应用的全局变量:

$ nano /etc/bashrc

红框处的内容写到文件中,保存退出.

export ANT_HOME=/usr/local/ant

export PATH=${PATH}:${ANT_HOME}/bin


这样你的 apache_ant  环境变量就配置好了.终端看下:

$ ant -version

看到版本是 1.9.4,说明环境变量生效了.



Android SDK 安装配置

还是上面贴出的官网地址: http://developer.android.com/sdk/index.html  (或许你需要翻墙,如果你还没有vpn,请点击查看此博文)

我直接下载了 android-studio-ide-1641136.dmg 这个是google官方推出的IDE开发环境,集成了SDK,当然你可以不安装IDE,只安装SDK也可以,但是后面生成的app毕竟要编译,虚拟机部署,所以你值的拥有此IDE


安装很简单,双击,把应用拖到Application 应用列表即可.

注意: cordova 生成 android应用的时候需要 android_sdk 环境变量,但是安装 android-studio 并不会自动写入 sdk的环境变量,需要手动设置.

你查找 sdk所在目录是  ~/Library/Android/sdk 但是这个相对路径是你当前登录帐号映射的目录,环境变量需要绝对路径(也就是说root帐号也必须能找到此路径)

所以环境变量需要切换root帐号查看  /Users/zhangzhi/Library/Android/sdk

$ nano ~/.bash_profile

写入 环境变量  export ANDROID_HOME="/Users/zhangzhi/Library/Android/sdk"


生成 android 应用所需要的前提条件到此都齐了,万事俱备只欠东风!

进入 sansiyueapp 目录

zhangzhi@moke:~$ cd sansiyueapp
zhangzhi@moke:~/sansiyueapp$ cordova platform add android
Creating android project...
Creating Cordova project for the Android platform:Path: platforms/androidPackage: com.phonegap.helloworldName: Hello WorldAndroid target: android-19
Copying template files...
Project successfully created.
cp: no such file or directory: /Users/zhangzhi/sansiyueapp/icon.png

OK,android应用生成也成功了.从Finder中查看目录

xcode 打开ios项目,编译运行模拟器如下:

android 应用模拟器截图回头补上.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中多线程 - 多线程中的基本方法

介绍一下线程中基本的方法使用 线程睡眠sleep() Thread.sleep(毫秒);我们可以通过sleep方法设置让线程睡眠。可以看到sleep是个静态方法 public static native void sleep(long var0) throws InterruptedException; try {System.out.println(new Date().getSeconds());Thread.s…

nodejs匿名函数

https://www.cnblogs.com/sharpest/p/8056232.html

Deployment descriptor

Deployment descriptor 是指一种配置文件用于工件部署到一些container/engine。 在Java Platform,Enterprise Edition中,部署描述符描述了应如何部署组件,模块或应用程序(如Web应用程序或企业应用程序)。它指示部署工具…

cordova 一个将web应用程序封装成app的框架

cordova 一个将web应用程序封装成app的框架 cordova的详细介绍请参考这个链接:http://www.zhoujingen.cn/blog/7034.html 我接下来主要将如何搭建。 1.首先你需要下载几样东西 1.jdk. 2.android_SDK. 2.安装这两个,并配置环境变量 这里jdk的环境变量配置…

windows linux 子系统折腾记

最近买了部新电脑,海尔n4105的一体机,好像叫s7。 放在房间里面,看看资料。因为性能孱弱,所以不敢安装太强大的软件,然后又有一颗折腾的心。所以尝试了win10自带的linux子系统。然后在应用商店搜索linux推荐debian 系统…

nodejs闭包

一、什么是闭包? 官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 相信很少有人能直接看懂这句话,因为他描述的太学术。其实这…

《深入理解Java虚拟机》读书笔记八

第九章 类加载及执行子系统的案例与实战 Q:如果有10个WEB应用程序都是用Spring来进行组织管理的话,可以把Spring放到Common或Shared目录下(Tomcat5.0)让这些程序共享。Spring要对用户程序的类进行管理,自然要能访问到用…

一些非常有用的链接和工具

微信公众平台SDK Senparc.Weixin for C#,支持.NET Framework及.NET Core : https://github.com/JeffreySu/WeiXinMPSDK layui开发文档地址:https://www.layui.com/doc/ .Net Core GitHub社区 : https://github.com/dotnetcore EF…

Activity Intent相关FLAG介绍

先首先简单介绍下Task和Activity的关系 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity)则会在最上面。从Task中取出东西…

js的原型和原型链

构造函数创建对象: function Person() {} var person new Person(); person.name Kevin; console.log(person.name) // KevinPerson 就是一个构造函数,我们使用 new 创建了一个实例对象 person prototype 每个函数都有一个 prototype 属性 每一个Ja…

二维数组

要求:求一个二维数组的最大子数组和 思路:对于这个题,我会最简单的读取,虽然在网上查到了代码,但是查找最大子数组的循环我真的看不懂,也不是特别懂思路,所以在这不会写思路 package 二维数组; …

资源

资源链接: 内存池TinySTLminiSTLcghSTL1. lishuhuakai 2. 转载于:https://www.cnblogs.com/sunbines/p/9707483.html

Android判断应用或Activity是否存在

一、根据包名判断应用是否存在public boolean checkApplication(String packageName) { if (packageName null || "".equals(packageName)){ return false; } try { ApplicationInfo info getPackageManager().getApplicationInfo(packageName, PackageManager.GET…

vue ref

https://www.jianshu.com/p/623c8b009a85

033 Url中特殊字符的处理

在url跳转页面的时候,参数值中的#不见了,一直没有处理,今天有空看了一下,后来发现后台的过滤器之类的都没有处理,就比较奇怪了,原来是特殊字符的问题。 一:Url中的特殊字符 1.说明 这里还是需要…

Effective Java(1)-创建和销毁对象

Effective Java(1)-创建和销毁对象 转载于:https://www.cnblogs.com/Johar/p/10556218.html

什么是Affinity

什么是Affinity 在某些情况下,Android需要知道一个Activity属于哪个Task,即使它没有被启动到一个具体的Task里。这是通过任务共用性(Affinities)完成的。任务共用性(Affinities)为这个运行一个或多…

vue this

https://blog.csdn.net/cddcj/article/details/80866902

课外书——自控力(斯坦福大学最受欢迎的心理学课程)

01我要做,我不要,我想要:什么是意志力?为什么意志力?为什么意志力至关重要? 核心思想: 意志力实际上是“我要做”、“我不要”和“我想要”这三种力量。它们协同努力,让我们变成更好…

Docker运行GUI软件的方法

转自 https://www.csdn.net/article/2015-07-30/2825340 简介: Docker通过namespace将容器与主机上的网络和运行环境进行了隔离,默认情况下,在容器中运行带界面的软件在外部是看不到的。在这个分享中,将介绍通过共享X11套接字让外…