1. 1phonegap: 专注于webapp调用native的功能。
    2ionic 专注于webapp的前端ui技术,需要与phonegap(准确的说是和Cordova配合使用)。ionic是一个专注于用WEB开发技术,基于HTML5创建类似于手机平台原生应用的一个开发框架。目前绑定的与angularJSSASS。这个框架的目的是从web的角度开发手机应用,基于PhoneGap的编译平台,可以实现编译成各个平台的应用程序。开始学ionic的时候就嫌弃ionic做不了与手机硬件紧密结合的APP,今天无意中看到了另外一个项目ngCordova,福音啊。神马拍照啊,文件 上传啊,地理位置啊,借助ngCordova插件都可以实现。ngCordova是结合cordovaangular包装了许多插件,诸如访问文件,摄 像头,GPS等等,这些插件只需要简单配置就可以在ionic中使用。
    3react-native: 速度快。
  1. web app实际就是安卓壳加传统web的方式,native app是调用安卓sdk实现的,web appB/S结构native appC/S结构,壳程序其实就是调用的Webview,来加载页面,phonegap是个开源的框架,实现了壳的功能,并提供了很多对安卓native控件的调用方法.
  2.  
  3. https://github.com/quangtn/ionic-demo
    https://github.com/diegonetto/generator-ionic
    https://github.com/cfjedimaster/Cordova-Examples
    https://github.com/driftyco/ionic-preview-app
    https://github.com/antbrothers/ionic-demo
    Android PhoneGap 就是这个壳,你大可以不用它而自己做一个自己的壳,前提是你自己去用本地js实现你所需要的本地调用再用webview来实现页面渲染。但无论如何尽量使用PhoneGap
    PhoneGap后来被Adobe收购,然后又贡献给了开源社区,现在由Apache管理,改名cordova
  4.  
  5. phoneGap使用是需要注意的(也即phoneGap的缺点):(特别是在发布版本前手动对HTML进行加密,很重要)
  1. 不同平台需要搭建不同开发环境

框架没有UI,需要使用第三方UI插件

框架仅提供基本API,扩展功能需要使用第三方插件

框架不支持自动加密,需要手动对HTML加密

框架未对UI进行优化,应用加载及UI相应时较慢

由于第三方开发人员水平不同,插件质量参差不齐

一个相当好的开源ui框架,presentation from PhoneGap Day 2013:    https://github.com/kwallis/PhoneGapDay2013

sublime:   一个很好的js及html代码编辑工具。

phonegap 传递中文汉字 出现乱码的情况 ;

解决办法:  在html中head里面, 添加如下代码即可

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

整个工程统一编码  用utf-8

The complete guide to running PhoneGap on Ubuntu

http://www.levibotelho.com/development/the-complete-guide-to-running-phonegap-on-ubuntu

PhoneGap is a great technology that’s a lot of fun to use, but getting started with it can be daunting. Here I outline the entire process, beginning to end, of getting a basic PhoneGap setup running on Ubuntu, complete with an Android emulator.

Installation

1. Install Git

  1. $ sudo apt-get install git

2. Install NodeJS

  1. $ sudo apt-get install nodejs

While that’s all you need to do to install node, there is a small detail that you need to take care of. When ubuntu installs the package, it names the NodeJS executable nodejs. The problem is that many applications, including PhoneGap, expect the executable to be named node. To fix this inconsistency, simply create a symlink named node that points to nodejs as follows.

  1. $ sudo ln -s /usr/bin/nodejs /usr/bin/node

3. Install PhoneGap

  1. $ sudo apt-get install npm
  1. $ npm install -g phonegap

4. Install Ant

  1. $ sudo apt-get install ant

5. Get the Android SDK

You can find it here. Extract the package to /usr/local/android-sdk-linux.

6. Get Java (JRE & JDK)

  1. $ sudo apt-get install openjdk-7-jre
  2. $ sudo apt-get install openjdk-7-jdk

7. Update your PATH

Open .profile for editing using the following command.

  1. $ gedit ~/.profile

Append the following lines to the end of the file. Do not put these inside any of the IF blocks.

  1. export ANDROID_HOME="/usr/local/android-sdk-linux/tools"
  2. export ANDROID_PLATFORM_TOOLS="/usr/local/android-sdk-linux/platform-tools"
  3. export PATH="$PATH:$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS"

Save the file, log out, and log back in to apply the changes.

8. Install the necessary Android packages

Execute android from the shell. This is a good first test to make sure you’ve done everything right up to here. If you get an error, rerun through the above steps and make sure that you’ve installed all the requirements and added your environment variables correctly.

If you haven’t made any mistakes, you’ll see that executing android opens up a kind of package manager that you can use to install different Android components. By default, a certain number of these will be pre-selected for installation. Leave them as-is, and in addition tick the box next to the entry named “API 4.4.2 (API 19)”. Once you’ve done that, download and install everything.

9. Update C/C++

Install the following packages

  1. $ sudo apt-get install lib32stdc++6
  2. $ sudo apt-get install lib32z1

Apparently this is only needed on 64-bit systems, but I can’t confirm that because I haven’t tried this on 32-bit Ubuntu.

Executing a sample project

If you’ve gotten this far, good job! You now should have everything you need in place to emulate an Android device with Cordova/PhoneGap. If you want to test your installation, try creating and emulating a demo project. Here’s how you can do that.

1. Create the project

Go to the directory where you do all your development work and execute the following command

$ sudo npm install -g cordova

  1. $ cordova create

This will create the equivalent a “hello world” project in your dev directory.

2. Create an emulation device

Execute the following.

  1. $ android avd

This will open the Android Virtual Device Manager, which allows you to manage the virtual devices on which your apps will be emulated. By default, no virtual devices are created. To create one, click “Add” and fill in a name and the specifications for the device.

A couple tips if this is your first time configuring a virtual device. If you’re running on Intel, you’ll get better performance if you select the “Intel Atom (x86)” architecture for your virtual device. Another thing that you’ll want to consider is ticking the “Snapshot” checkbox down at the bottom of the dialog. The emulator takes ages to start up and runs extremely slowly–enabling snapshots will save the emulator’s state when you’re done with it so that you don’t have to start it up from scratch every time you use it.

3. Run the test app.

Navigate to your test app directory and run the following.

   $ cordova run android
OR:
  1. $ cordova emulate android

If you’ve followed all the steps up until now correctly, with a little luck the emulator will launch and after 5 minutes or so of startup time you’ll see the cordova sample app onscreen. Have fun developing!

Cordova/Phonegap应用构建环境搭建

混合(Hybrid)移动开发将Web开发与原生开发优势互补,之后应该是一个不错的方向。Phonegap是混合移动开发的一个方案, 开发者可以使用标准的Web技术进行开发,然后使用Phonegap打包成原生APP,也可以为Phonegap开发插件来扩展APP功能。 Cordova是Apache的顶级项目,起于Adobe贡献给Apache基金会的Phonegap源码,之后Phonegap官方貌似则专注于提供Phonegap应用的云构建服务。 Phonegap官网提供的文档与Apache Cordova文档是相同的,所以从技术上可以将Phonegap与Cordova视为同一个东西。

虽然Phonegap官方提供免费的开放(public)应用以及一个私有应用构建服务。但对于应用调试或插件开发来说, 使用云构建服务上传源码下载APP还是挺耗时间的,不太方便,所以搭建本地的应用构建环境是必要的。

依据Cordova文档的The Command-Line Interface 部分,针对Android应用,在Ubuntu上搭建Cordova应用构建环境的步骤如下所示:

1. 安装Node.js和git客户端

  • NodeJS官网下载Linux二进制压缩包,解压缩后将bin路径加入PATH环境变量,即可从命令行执行node、npm命令。
  • sudo apt-get install git

2. 安装Cordova:

  • sudo npm install -g cordova

3. 下载JDK:

  • sudo apt-get install default-jdk default-jre

4. 安装Android SDK:

  • 从Android官网的这里下载Android Studio或独立的SDK工具

如果下载Android Studio,解压缩后执行bin/android.sh,Android Studio启动时需要从Google的服务器上获取一些SDK相关的文件, 由于GFW的原因,无法成功获取,也就无法顺利启动。Android Studio网络代理设置的方法(参考这里):

在Android Studio首次启动后,可以在HOME目录下找到文件~/.AndroidStudio/config/options/other.xml,在该文件中,可以找到如下几行:

  1. <option name="PROXY_TYPE_IS_SOCKS" value="false" />
  2. <option name="USE_HTTP_PROXY" value="false" />
  3. <option name="USE_PROXY_PAC" value="false" />
  4. <option name="PROXY_HOST" value="" />
  5. <option name="PROXY_PORT" value="80" />
  6. <option name="PROXY_AUTHENTICATION" value="false" />
  7. <option name="PROXY_LOGIN" value="" />
  8. <option name="PROXY_PASSWORD_CRYPT" value="" />
  9. <option name="KEEP_PROXY_PASSWORD" value="false" />

如果使用HTTP协议的代理,则将“USE_HTTP_PROXY”一项的value改为“true”,“PROXY_HOST”、“PROXY_PORT”的value分别设置为代理的域名和端口, 如果代理需要身份认证,则将“PROXY_AUTHENTICATION”的value改为“true”,并设置“PROXY_LOGIN”、“PROXY_PASSWORD_CRYPT”两项。

重启Android Studio即可。


如果下载独立的SDK工具,假设解压缩后的路径为~/Android,则添加环境变量ANDROID_HOME=~/Android,并将子目录tools加入PATH环境变量。

执行命令android打开Android SDK管理器,与Android Studio一样,也需要设置网络代理:

  • 打开菜单项“Tools -> Options”,填入“HTTP Proxy Server”、“HTTP Proxy Port”两项的值,重新启动Android SDK管理器即可。

由于当前Cordora构建Android应用依赖于Android API 19,即Android 4.4.2,所以需要在“Android Studio”或“Android SDK管理器” 下载“Android API 19”相关的依赖包。

注:下载速度很慢,请耐心等待...

5. 安装ant

当前Cordora构建Android应用也依赖于ant。从Apache Ant官网下载二进制包, 解压缩后,将子目录bin加入PATH环境变量。

6. 测试

依次执行以下命令:

  • cordova create hello com.example.hello HelloWorld,该命令会在当前目录下创建hello子目录;
  • cd hello,进入该示例工程目录;
  • cordova platform add android,为该工程添加Android平台支持;
  • cordova build android,将该工程构建成原生Android应用;
  • cordova run android 或者 cordova emulate android,打开Android模拟器运行示例应用;
  • cordova run android --device=SH25PW103163           通过 adb devices获得device列表;

模拟器启动后如下图所示:


最终生成的apk文件在hello/platforms/android/ant-build/路径下,默认名为“CordovaApp-debug.apk”。

对于Cordora项目来说,源码目录即项目的www子目录。

Cordova 打包 Android release app 过程详解

Android app 的打包分为 debug 和 release 两种,后者是用来发布到应用商店的版本。这篇文章会告诉你 Cordova 如何打包 Android release 版本,也会让你了解 Android app 的打包流程。

创建一个 demo app

为了演示,首先我们需要创建一个 Cordova 项目的基本步骤。如果你已经对此很熟悉,可以跳过这一步。

先全局安装 Cordova CLI :

  1. npm install -g cordova

cordova-demo 目录创建一个项目,ID 为 com.example.cordovaDemo ,项目名为 cordovaDemo

  1. cordova create cordova-demo com.example.cordovaDemo cordovaDemo

加上 Android 平台,这会下载一个 Android 项目的框架,并把版本信息保存到 config.xml 。你可以去 platforms/android 目录下查看它。

  1. cordova platform add android --save

你可以检查下平台需求是否满足。基本上 Cordova 需要你把 Java SDK, Android SDK 和 Gradle 都配置好。

  1. cordova requirements android

现在一个 Cordova 项目就已经准备好了。你可以尝试构建一个版本。一切顺利的话,你会在 platforms/android/build/outputs/apk 目录下看到 APK 文件。这个目录后面会经常用到,为了方便我们建立一个符号链接 android-apk

  1. # 构建 apk
  2. cordova build android
  3. # 建立符号链接 android-apk
  4. ln -s platforms/android/build/outputs/apk android-apk
  5. # 查看一下这个目录,你应该会看到 android-debug-unsigned.apk
  6. ls android-apk

搞定!但这个构建的 APK 是 debug 版本的。要构建 release 版本,我们需要先了解一下 Android 手动打包的流程。

Android APK 手动打包流程

Android app 的打包流程大致分为 build , sign , align 三部分。

build是构建 APK 的过程,分为 debug 和 release 两种。release 是发布到应用商店的版本。

sign是为 APK 签名。不管是哪一种 APK 都必须经过数字签名后才能安装到设备上,签名需要对应的证书(keystore),大部分情况下 APK 都采用的自签名证书,就是自己生成证书然后给应用签名。

align是压缩和优化的步骤,优化后会减少 app 运行时的内存开销。

debug 版本的的打包过程一般由开发工具(比如 Android Studio)自动完成的。开发工具在构建时会自动生成证书然后签名,不需要我们操心。而 release 版本则需要开发者自己生成证书文件。Cordova 作为 hybrid app 的框架不像纯 Android 开发那么自动化,所以第一次打 release 包我们需要了解一下手动打包的过程。

Build

首先,我们生成一个 release APK 。这点在 cordova build 命令后加一个 --release 参数局可以。如果成功,你可以在 android-apk 目录下看到一个 android-release-unsigned.apk 文件。

  1. cordova build android --release

Sign

我们需要先生成一个数字签名文件(keystore)。这个文件只需要生成一次。以后每次 sign 都用它。

  1. keytool -genkey -v -keystore release-key.keystore -alias cordova-demo -keyalg RSA -keysize 2048 -validity 10000

上面的命令意思是,生成一个 release-key.keystore 的文件,别名(alias)为 cordova-demo 。

过程中会要求设置 keystore 的密码和 key 的密码。我们分别设置为 testingtesting2 。这四个属性要记牢,下一步有用。

然后我们就可以用下面的命令对 APK 签名了:

  1. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore release-key.keystore android-apk/android-release-unsigned.apk cordova-demo

这个命令中需要传入证书名 release-key.keystore ,要签名的 APK android-release-unsigned.apk ,和别名 cordova-demo 。签名过程中需要先后输入 keystore 和 key 的密码。命令运行完后,这个 APK 就已经改变了。注意这个过程没有生成新文件。

Align

最后我们要用 zipalign 压缩和优化 APK :

  1. zipalign -v 4 android-apk/android-release-unsigned.apk android-apk/cordova-demo.apk

这一步会生成最终的 APK,我们把它命名为 cordova-demo.apk 。它就是可以直接上传到应用商店的版本。

自动打包

一旦有了 keystore 文件,下次打包就可以很快了。你可以在 cordova build 中指定所有参数来快速打包。这会直接生成一个 android-release.apk 给你。

  1. cordova build android --release -- --keystore="release-key.keystore" --alias=cordova-demo --storePassword=testing --password=testing2

但每次输入命令行参数是很重复的,Cordova 允许我们建立一个 build.json 配置文件来简化操作。文件内容如下:

  1. {
  2. "android": {
  3. "release": {
  4. "keystore": "release-key.keystore",
  5. "alias": "cordova-demo",
  6. "storePassword": "testing",
  7. "password": "testing2"
  8. }
  9. }
  10. }

下次就可以直接用 cordova build --release 了。

为了安全性考虑,建议不要把密码放在在配置文件或者命令行中,而是手动输入。你可以把密码相关的配置去掉,下次 build 过程中会弹出一个 Java 小窗口,提示你输入密码。

用 Gradle 配置自动打包

另一种配置方法是使用 Gradle ,一个 Android 的自动化构建工具。 cordova build android 的过程其实就是使用它。你要在 platforms/android 目录下建立 release-signing.properties 文件,内容类似下面这样:

  1. storeFile=relative/path/to/keystore
  2. storePassword=SECRET1
  3. keyAlias=ALIAS_NAME
  4. keyPassword=SECRET2

这个文件的名称和位置也是可以通过 Gradle 的配置 cdvReleaseSigningPropertiesFile 修改的。我觉得一般情况使用 build.json 就足够了。有兴趣的可以看这个 Cordova 官方教程

参考资料

 
 
cordova + crosswalk解决android 4.4以下的版本运行慢的问题:

首先呢, crosswalk 只是针对安卓平台的。那么我们为什么要使用 crosswalk 呢.因为低于android 4.4 的webview 是一个蹩脚的Android WebKit浏览器内核(android版本越低性能就越差,android 4.4以上已经使用了Chromium ),所以英特尔公司发布了 Crosswalk引擎,可以让 Android 4.0-4.3 的手机上的应用打包 Chromium 引擎而不是 Android WebKit。虽说未来 Android 4.4 会占据更多市场份额,但目前主流的 Android 手机的系统版本毕竟还是 4.1、4.2(4以下的就不说了...)。

cordova 和 crosswalk 的一些差异

  1. 安装包的大小,【cordova,一个纯html5的 apk 仅有1.5M左右(不涉及原生功能),涉及到一些原生功能,比如相机、文件系统、推送等因为需要加入插件,一般 apk 在 5M 左右】,而【crosswalk,一个纯html的 apk 就达到了19M左右,如果需要加入杂七杂八的插件,那就是奔着25M去了】,天朝流量还是很贵的....(用户一看app这么大,算了不下了...)
  2. 开发的简便性, 【我是一个专职 cordova 开发者,所以cordova已经用习惯,这一条可能不够客观,仅供参考】.首先【cordova 3.0+ 的版本开发起来都很方便了,命令行命令行你的应用就搞定了 - -! 】,而【crosswalk集成比较麻烦,也许是我没找到门道.....手动集成导入包什么的总觉得好麻烦啊.....然后我默默的去下载了一个 intelxdk ,因为他能直接打包基于 crosswalk 的应用,但是点了打包之后,发了一个邮件给你让你去下载,这...这....这......我总觉得云打包需要上传代码是不是不太合适啊....】
  3. 插件生态圈, crosswalk 虽然能兼容 cordova plugin 但并不是完全一致的,而且并不是所有的cordova plugin 都能用在crosswalk 上
  4. 流畅度(大家最关心的应该在这里了...首先我说一下我是用的 App Framework 这个前端框架的,这个现在也是intel的 - -),我测试的手机是 华为 g510 android 4.1.1 的手机,性能并不强,在滚动流畅度和整理流畅度上 crosswalk 不得不承认确实有明显提升,但是个人觉得cordova在安卓上的流畅度也在可以接受的范围之内。【其实说白了,cordova性能确实差一些,但是可以通过一些手段优化来提升性能,或者牺牲一下用户体验,关闭一些没必要的切换动画什么的来提升】

暂时只想到这么多

最后说一下用cordova不就是为了跨平台, 而 crosswalk 是只针对安卓平台的,所以如果你的应用主打ios平台的话,用不用就随意了(我只是这么一说,安卓端的客户还是不能丢的)...
题外话,在 ios 平台上 cordova 已经表现的很完美了(除了万恶的 position:fixed ),跟原生应用并没有太大的差别(也可能是因为我现在做的都不是很复杂的应用...没体现出跟原生的差异性...)。

安卓app开发方式之webApp的更多相关文章

  1. webapp检测安卓app是否安装并launch

    1. cordova插件 1)查看所有已安装的安卓app https://www.npmjs.com/package/cordova-plugin-packagemanager A simple pl ...

  2. 当前主流的安卓APP开发IDE

    什么是主流的开发安卓APP的方式? 我是去年4月份接触的Android开发,因此特别有感触,可以明显的感受到安卓APP主流开发方式的改变. 去年,2015年年初,各大安卓开发群大部分大牛在用Eclip ...

  3. 安卓app和苹果app共用一个二维码

    应项目要求,现在安卓app和苹果app共用一个二维码,对外提供下载: <html> <head> <meta http-equiv="Content-Type& ...

  4. html+css+js+Hbuilder开发一款安卓APP,根本不用学Android开发!

    我们知道,要做一款安卓APP,咱们得先学安卓开发语言,例如java,前端后端.那么没有这些开发语言基础,咱们怎么做呢?其实现在有比较好的开发方案就是做webAPP,咱们可以用web前端知识构建安卓客户 ...

  5. 关于安卓APP的启动界面

    刚学安卓App开发的朋友们,可能会遇到一个问题,就是人家的App刚进入会有一个页面出现一会儿后消失,   这个页面可以用来打广告,也可以声明App的主题,所以说这个启动页面至关重要,接下来,我把我的代 ...

  6. 安卓APP测试验证点总结

    最近较懒,加之闺女出生后记忆没完全恢复,总是忘东忘西,关于安卓APP测试的验证点还是总结一下,方便设计测试用例时查阅,也给各位博友参考! 1.除APP的正常功能点外,还有以下验证点: 安装/卸载(考虑 ...

  7. 【转载】安卓APP架构

    注:本篇博文转载于 http://my.oschina.net/mengshuai/blog/541314?fromerr=z8tDxWUH 本文介绍了文章作者从事了几年android应用的开发,经历 ...

  8. 安卓app设计规范整理和Android APP设计篇(转)

    随着安卓智能手机不停的更新换代.安卓手机系统越来越完美,屏幕尺寸也越来越大啦!比如最近小米的miui 6的发布和魅族手机系统的更新等等. 以小米MIUI6的安卓手机来说,MIUI6进行了全新设计,坚持 ...

  9. 安卓APP测试之使用Burp Suite实现HTTPS抓包方法

    APP的测试重点小部分在APP本身,大部分还是在网络通信上(单机版除外).所以在安卓APP测试过程中,网络抓包非常重要,一般来说,app开发会采用HTTP协议.Websocket.socket协议,一 ...

随机推荐

  1. 一个zip压缩类,欢迎吐槽

    package com.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import j ...

  2. OpenCV码源笔记——RandomTrees (二)(Forest)

    源码细节: ● 训练函数 bool CvRTrees::train( const CvMat* _train_data, int _tflag,                        cons ...

  3. DoG 、Laplacian、图像金字塔详解

    DoG(Difference of Gaussian) DoG (Difference of Gaussian)是灰度图像增强和角点检测的方法,其做法较简单,证明较复杂,具体讲解如下: Differe ...

  4. LRU缓存算法

    http://blog.csdn.net/beiyeqingteng/article/details/7010411 http://blog.csdn.net/wzy_1988/article/det ...

  5. hdu 4968 Improving the GPA (水 暴力枚举)

    题目链接 题意:给平均成绩和科目数,求可能的最大学分和最小学分. 分析: 枚举一下,可以达到复杂度可以达到10^4,我下面的代码是10^5,可以把最后一个循环撤掉. 刚开始以为枚举档次的话是5^10, ...

  6. poj 1054 The Troublesome Frog (暴力搜索 + 剪枝优化)

    题目链接 看到分类里是dp,结果想了半天,也没想出来,搜了一下题解,全是暴力! 不过剪枝很重要,下面我的代码 266ms. 题意: 在一个矩阵方格里面,青蛙在里面跳,但是青蛙每一步都是等长的跳, 从一 ...

  7. Jqgrid入门-操作表格的数据(二)

    上一篇中,Jqgrid已经可以从服务端获得数据,并显示在Grid表格中了.下面说一下,如何操作表格及其数据.           jqGrid有很多方法函数,用来操作数据或者操作Grid表格本身.jq ...

  8. BZOJ2111: [ZJOI2010]Perm 排列计数

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2111 题意:一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2< ...

  9. for,foreach,iterator的用法和区别

    for,foreach,iterator的用法和区别 相同点:   三个都可以用来遍历数组和集合不同点:1.形式差别 for的形式是for(int i=0;i<arr.size();i++){. ...

  10. Ubuntu解决Sublime Text 2安装GBK Encoding Support插件仍然乱码

    Ubuntu 12.04 32位下,为Sublime Text 2安装Package Control: 1. 用Ctrl+~打开控制台,输入 import urllib2,os; pf='Packag ...