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.pswp.cn/news/249438.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249438.shtml
英文地址,請注明出處:http://en.pswp.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套接字讓外…