1、首先是选型:Cordova+Ionic Framework,调试测试环境是Ripple Emulator.开发环境其实可以随便选,我个人选择了Eclipse,当然Android SDK+ADT也是必须的.

2、安装:在这个js横行的时代,Cordova、IonicFramework、Ripple这三者都可以通过Node.js中的npm安装,非常方便。android SDK和ADT的安装都比较大众,不过Cordova除了npm install还要做一些设置完整文档见其官方文档,Cordova搞定,Ionic就方便了。

3、新建项目:用ionic的指令新建项目,用Cordova添加platform,然后用ripple就可以模拟终端调试,这种方式相对比较方便,不像真正的AVD,那个光启动就要老命了。可以界面整体搞定以后,在启用AVD Emulator测试,这样启动的次数减少,节省时间。

4、说说Ripple的作用,其实hybrid App 的WebApp部分主要是本地页面+远程Restful Json数据,由于普通浏览器有跨域限制,于是乎本地页面无法访问远程服务,于是Ripple先是架一个localhost服务,开放本地文件,其次它把那部分远程需求通过中间代理的方式转发给真正远程服务。之前好像也有一套DNS之类的方法解决这个问题,不过没有工具这么简便易用。

5、补充库,在PCWeb上,一般jQuery可以和AngularJS一起用,不过在ionic前提下,jquery好像和ionic有一定不兼容,而angular.elementopen的jqlite函数也很有限,比如典型的post config用到的$.param(),这个时候就可以用zepto.js取代,轻量级jQ语法兼容库,专为移动打造,且和ionic不会冲突。

6、关于CSRF的问题,由于本地HTML不可能有服务器动态标签,所以使用Ajax请求的CSRF Token传递方法,也就是说通过header传递,这方面angularjs $http的Config提供对应的支持,意味着你不需要每次post的时候还要去读Cookie,这些AngularJS都替你提供横向支持。不过这种支持方法因跨域原因无法在hybridApp中使用,你得用直接的请求来得到csrftoken,然后用angularjs拦截器注入到每个POST请求里面,因为这实际上是异步跨请求的数据依赖,这种依赖很难保证肯定达成,所以最好不要用CRSF机制,这样比较干净一点,毕竟是hybridApp,界面简化以后,可能很少用到用户输入的富文本。

7、关于跨域的Cookie问题,hybrid app的本地脚本和远程服务不在同一个域,意味着无法跨域访问。远程服务的Cookie只能用来它自己从Request数据里面读,本地代码是无法读,当然这个问题,可以通过一些跨域设置来解决,不过那个可能会存在安全问题,之前本地需要读的Cookie数据,可以直接放在返回JSON数据里面,这样就可以实现之前的数据传递了。

8、本地数据缓存问题,hybrid App要达到原生App的体验,则必须有一个SQLite级的东西来用,这就是localStorage或者sessionStorage,Storage目前只能存放字符串,不过比Cookie的解析序列化要方便多了。当然还有写WebDB级的东西来用,我个人觉得其操作没有直接JS数据操作方便。

9、ionic的项目,AVD测试必须用ionic的bulid命令构建、Run命令测试。在Eclipse里面run as是不行的,我估计主要是build的原因。

10、发布前的处理,ionic官方文档GuideBook部分有这个内容,其中少了一条,就是要修改Package Name,这个东西是发布后APK的一个标识性的东西,要改成自己的,其实很简单,新建一个自己产品的com.xxx.xxx的包,把原先的那个移到这个包里面,改一下config就Ok了。

 
 

Android hybrid App项目构建和部分基本开发问题的更多相关文章

  1. 【Gradle】Android Gradle 多项目构建

    Android Gradle 多项目构建 Android 项目区别 Android项目一般分为库项目,应用项目,测试项目,Android Gradle 根据这些项目分别对应3种插件:com.andro ...

  2. Android Hybrid App自动化测试实战讲解(基于python)

    1.Hybrid App自动化测试概要 什么是Hybrid App? Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App ...

  3. android 多模块项目构建一

    项目构建之项目文件搭建: 1.在android studio中new project,如:mydemo,如在D盘下. 2.创建几个module,选择为Library. 3.项目中用到多模块,最好使用动 ...

  4. 《Gradle权威指南》--Android Gradle多项目构建

    No1: Android多项目设置 目录结构: MyProject/ setting.gradle app/ build.gradle libraries/ lib1/ build.gradle li ...

  5. 包括后台的Android美食APP项目开源代码

    项目简介 小食光定位为一款集美食,社交,LBS服务于一体的美食推荐APP.为你发现周边美食的同时提供一个吃货分享的平台. APP截图     功能模块 美食推荐 :提供基础的美食信息查询: 商家推荐  ...

  6. 9个完整android开源app项目

    一.photoup 介绍: photoup 是一款开源的相册类app,主要功能是将本地图片提交到facebook上去,虽然他的功能和facebook的远程服务相关,但是本身是可以被当作一款 相册应用的 ...

  7. Android NDK(一) ndk-build构建工具进行NDK开发

    本文目录 一.androidstudio环境 二.快捷键配置 三.新建项目 四.NDK开发 五.so文件编译 一. androidstudio的环境 在SDK Tools中安装NDK开发环境(File ...

  8. Android NDK(二) CMake构建工具进行NDK开发

    本文目录 一Androidstudio中需要的插件 二项目配置 ①build.gardle配置 ②CMakeLists.txt ③Android和Cpp的代码 ④so文件生成 ⑤so文件的位置 一.A ...

  9. 优化Recorder H5录音:可边录边转码上传服务器,支持微信提供Android IOS Hybrid App源码

    Recorder H5 GitHub开源库随着支持功能的增多,音频转码处理效率渐渐的跟不上需求了,近期抽时间对音频转码部分进行了升级优化,以支持更多实用的功能. 另外IOS的Hybrid App也完成 ...

随机推荐

  1. java设计模式---访问者模式

      Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自 己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广 泛,遵循一定的编程模式,才能使自 ...

  2. Android屏幕适配-android学习之旅(五十九)

    android屏幕适配

  3. Android开发技巧——实现底部图标文字的导航栏(已更新)

    本文章的导航栏代码参考了viewpagerindicator的实现.本文叙述的是之前版本的qq或微信中,底部的图标加文字的导航栏的实现. 2014-09-14 13:59:42更新:library的代 ...

  4. Chapter 3 Protecting the Data(1):理解权限

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39548665,专题目录:http://blog.csdn.net/dba_huangzj ...

  5. Linux C 下的大文件操作

    这里说的大文件指大小超过4G的文件. 在32位环境下,linux默认打开.读.写超过4G的文件会返回错误.定义如下宏可以突破这个限制,对read/write和fread/fwrite同时有效. 注意它 ...

  6. 【一天一道LeetCode】#68. Text Justification

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  7. Leetcode_19_Remove Nth Node From End of List

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41778305 Given a linked list, r ...

  8. Unity UGUI图文混排源码(一)

    Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...

  9. Web服务中延时对QoE(体验质量)的影响

    S. Egger等人在论文<WAITING TIMES IN QUALITY OF EXPERIENCE FOR WEB BASED SERVICES>中,研究了Web服务中延时对主观感受 ...

  10. 《java入门第一季》之面向对象(private关键字与封装概念的初探)

    /* 定义一个学生类: 成员变量:name,age 成员方法:show()方法 在使用这个案例的过程中,发现了一个问题: 通过对象去给成员变量赋值,可以赋值一些非法的数据.例如:name你赋值了一个3 ...