最近对Web App开发开始深入,老总做了个类似于Phonegap的中间件,整体上web app有了个初始的框架雏形,现在又有需求自动生成apk,将开发人员从打包工作中解脱出来(你可以想象同一个软件,只改一个去往网页的地址和apk包名,要打上百个包有多累),所以就学习Rexsee这个开源项目的一点形式,通过网站提交html页面,修改一些基本数据,自动生成apk,达到批量化的目的。所以先开始学习ant….

一,准备ant, 搭ant环境,这个没得所,谷大师会告诉你…

二,配置Android SDK环境,将tools 和platform-tools 都配置到环境变量Path中…

  三,创建一个android项目 
参数说明:
-k /--package 为命名空间(包名)-a /--name 工程名
-p /--path 项目              -t 为目标平台的版本编号(由下面步骤1列出的)

1)、列出你SDK中已有的平台版本,执行命令“ android.bat list targets”

2)、create一个Android工程,执行命令“android create project -k com.vatata.atest.ant  -a AntAndroidTest1  -p c:\test\AntAndroidTest1 -t 2”

这样工程创建完后,ant的build.xml 就自动生成了…

3) 执行“ant debug” ,这样就会编译生成apk…

四)Apk 安装

通过第三部生成的apk会出现在c:\test\AntAndroidTest1中的bin目录下,现在就可以安装了

1)--> adb device

2) -->

adb –s SH17JV805161 install c:\test\AntAndroidTest1\ bin\AntAndroidTest3-debug.apk

就行了

 

然后apk就安装到手机上,可以测试了…

 

 

那么再回到我之前的问题,一个apk 只要修改一个链接和包名,那么我们可以通过写文件的形式,修改某个字段和Manifest中的packagename,那么重新执行ant debug,这个apk又重新生成了,就是个全新的apk了,很爽吧…

转:http://toutiao.com/a6257253599509332225/

1

啃先生,移动端适配的是什么?

我们讨论的是网页适配多种尺寸屏幕,让网页效果看起来和设计师的设计稿一样。说白了就是同一套代码在不同分辨率的手机上跑时,页面元素间的间距,留白,以及图片大小会随着变化,在比例上跟设计稿一致。

举个粟子吧

产品经理学技术:移动Web怎么做屏幕适配(一)

图1. 260*400的屏幕

产品经理学技术:移动Web怎么做屏幕适配(一)

图2. 380*400的屏幕

上边的页面在不同大小屏幕上的展现,咋一看没什么问题,一般的工程师会认为已经OK了,所以前端工程师很容易忽略屏幕适配。但是对于一些精益求精的产品而言,这还达不到要求。例如有以下问题:

  • 图1的屏幕的尺寸较小,因此头像应该小些,话题左边的空白也应该小一些。
  • 图片应该保持正方形,而且两张图之间的边距应该随屏幕变化而变化

明白了,所以padding,margin,图片等的大小基本都要做适配

2

那有什么方法可以做到这种适配?

关键要找到一种长度单位,使得一样的取值,在不同尺寸的屏幕上的大小按比例缩放。

长度单位我只知道px 😂

我将在下一期的文章里推有关viewport和css像素px中的细节,这篇文章只关注如何适配,所以先只谈结论:

  • 网页在viewport中布局,viewport被分成一个个小方块,一个CSS像素占一个方块
  • 在设置了viewport宽度等于设备宽度的情况下,通过某种算法,在不同大小的屏幕上,1个CSS像素所占屏幕的物理尺寸是一样大的

既然1个CSS像素在不同屏幕上物理尺寸一样大,那px肯定不能做为适配的方法了

如上面的例子,如果加载页面的时候,使用JS根据屏幕的大小动态设置html标签的font-size,随着html标签font-size的值变化,div的1.2rem换算成px的值 也跟着变化,即实现了div随屏幕大小变化而变化,而CSS代码始终是width:1.2rem。以此类推到页面所有的元素。

明白了,奥秘就在于结合px的固定尺寸和rem的相对尺寸!

3

啃先生,原理我明白了,你有没有可执行的具体方案 😳?

业内比较流行的做法(参考阿里的flexible),有以下要点:

  1. 设置viewport为设备宽度(这里不一定,但目前先这样足矣)
  2. 将viewport分成10rem,并计算出1rem在当前浏览器的像素值,把它赋予html标签的font-size(分成10rem只是为了方便计算而已)
  3. 写CSS代码时,遇到要适配的地方,比如width,margin,padding等,就不要再用px了,改成用rem

JS和Html代码如下:

产品经理学技术:移动Web怎么做屏幕适配(一)

CSS代码做了类似如下的修改:

运行结果如下:边距和头像图片都随屏幕变化而变化了

产品经理学技术:移动Web怎么做屏幕适配(一) 产品经理学技术:移动Web怎么做屏幕适配(一)

4

代码量很少,就是要理解消化。有一个问题,设计师给的设计稿尺寸单位都是用px,但是刚刚说的第3步,写CSS的时候要用rem,这个怎么换算?会很麻烦

  1. 设计稿的宽度视同手机宽度,即假设有一个viewport为400px的手机
  2. 将它分成10rem,每个rem为40px;
  3. 那么图片宽度20px自然就是0.5rem;

且慢,岂不是意味着,每次写到尺寸的地方,我都要先在草稿纸上把设计师给的px换算成rem?别急,sublime text 3有一款插件可以帮助你进行这个换算,你只需要输入20px,它会自动帮你换算成 0.5rem,看以下图就秒懂了

产品经理学技术:移动Web怎么做屏幕适配(一)

参考

使用Flexible实现手淘H5页面的终端适配(https://github.com/amfe/article/issues/17)

移动端高清、多屏适配方案(http://www.html-js.com/article/Mobile-terminal-H5-mobile-terminal-HD-multi-screen-adaptation-scheme%203041) A tale of two viewports(http://www.quirksmode.org/mobile/viewports.html)

少年关注我们的官方微博@产品100和微信订阅号:chanpin100ghsd,有惊喜哦!

转自:http://blog.csdn.net/mapboo/article/details/49536297

CSDN博主Mapboo原创,感谢博主!

==============================

前言:

纵观国内的广告平台,比如多盟,万普,百度,腾讯,或者别的一些广告平台,真是应接不暇,但是具体接入那就自己判断了,经过一番折腾,最终还是选择了谷歌平台,理应是稳定,可靠,安全,收入颇高,但是登录网络有点问题,应该大家都懂吧,这里就不再赘述了,各自想办法吧;

准备工作:

1,首先你是Android开发者,或者至少会点Java编程基础;

2,熟悉使用Android Studio(以下简称:AS),即官方Android应用开发工具;

3,注册了http://www.google.cn/admob/ 应用,并且有个banner_ad_unit_id吧;

4,待加入横幅广告条的app;

5,可参考官方接入指南:https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start

开发过程:

1,创建或打开AS 工程,本示例是新建工程;

2,打开Android SDK Manager安装Google Repository;

3,关联我们的广告SDK,这里有两种方式:

A  点击Project Structure 直接选取,如下图:

com.google.android.gms:play-services:7.8.0;

B 打开build-gradle 加入一行代码,如下图:

compile 'com.google.android.gms:play-services:6.+'

4,程序会开始自动编译,然后打开AndroidManifest.xml 文件,添加如下代码:

[java] view plain copy

print?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.     package="com.mapboo.adviewdemo" >
  4.    <span style="color:#ff0000;"> <uses-permission android:name="android.permission.INTERNET" />
  5.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/></span>
  6.     <application
  7.         android:allowBackup="true"
  8.         android:icon="@mipmap/ic_launcher"
  9.         android:label="@string/app_name"
  10.         android:theme="@style/AppTheme" >
  11.        <span style="color:#ff0000;"> <meta-data android:name="com.google.android.gms.version"
  12.             android:value="@integer/google_play_services_version" /></span>
  13.         <activity
  14.             android:name=".MainActivity"
  15.             android:label="@string/app_name" >
  16.             <intent-filter>
  17.                 <action android:name="android.intent.action.MAIN" />
  18.                 <category android:name="android.intent.category.LAUNCHER" />
  19.             </intent-filter>
  20.         </activity>
  21.        <span style="color:#ff0000;"> <activity
  22.             android:name="com.google.android.gms.ads.AdActivity"
  23.             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
  24.             android:theme="@android:style/Theme.Translucent" /></span>
  25.     </application>
  26. </manifest>

 

5,打开activity_main.xml 文件,输入如下代码:

[java] view plain copy

print?

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     xmlns:ads="http://schemas.android.com/apk/res-auto"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent"
  6.     android:paddingBottom="@dimen/activity_vertical_margin"
  7.     android:paddingLeft="@dimen/activity_horizontal_margin"
  8.     android:paddingRight="@dimen/activity_horizontal_margin"
  9.     android:paddingTop="@dimen/activity_vertical_margin"
  10.     tools:context=".MainActivity"
  11.     android:gravity="center_vertical">
  12.     <TextView
  13.         android:layout_width="match_parent"
  14.         android:layout_height="wrap_content"
  15.         android:text="@string/demoName"
  16.         android:gravity="center"
  17.         android:textSize="30dp"
  18.         android:layout_marginTop="150dp"
  19.         />
  20.     <com.google.android.gms.ads.AdView
  21.         android:id="@+id/adView_bottom"
  22.         android:layout_width="match_parent"
  23.         android:layout_height="wrap_content"
  24.         android:layout_alignParentBottom="true"
  25.         android:layout_centerHorizontal="true"
  26.         android:layout_gravity="bottom"
  27.         ads:adSize="BANNER"
  28.         ads:adUnitId="@string/banner_ad_unit_id" />
  29. </RelativeLayout>

 

[java] view plain copy

print?

  1. <resources>
  2.     <string name="app_name">AdViewDemo</string>
  3.     <string name="demoName">谷歌Admob广告条示例</string>
  4.     <string name="banner_ad_unit_id">ca-app-pub-8514769117499822/6386262194</string>
  5. </resources>

 

6,打开MainActivity文件,输入如下代码:

[java] view plain copy

print?

  1. package com.mapboo.adviewdemo;
  2. import android.support.v7.app.ActionBarActivity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import com.google.android.gms.ads.AdListener;
  8. import com.google.android.gms.ads.AdRequest;
  9. import com.google.android.gms.ads.AdView;
  10. public class MainActivity extends ActionBarActivity {
  11.     @Override
  12.     protected void onCreate(Bundle savedInstanceState) {
  13.         super.onCreate(savedInstanceState);
  14.         setContentView(R.layout.activity_main);
  15.         /**
  16.          * 创建广告条对象
  17.          */
  18.         AdView mAdView = (AdView) findViewById(R.id.adView_bottom);
  19.         AdRequest adRequest = new AdRequest.Builder().build();
  20.         /**
  21.          * 创建一个监听,比如判断用户是不是已经点击了广告条,以此来给用户增加积分等操作;
  22.          */
  23.         AdListener listener = new AdListener() {
  24.             @Override
  25.             public void onAdClosed() {
  26.                 super.onAdClosed();
  27.                 Log.i("TAG""onAdClosed");
  28.             }
  29.             @Override
  30.             public void onAdFailedToLoad(int errorCode) {
  31.                 super.onAdFailedToLoad(errorCode);
  32.                 Log.i("TAG""onAdFailedToLoad");
  33.             }
  34.             @Override
  35.             public void onAdLeftApplication() {
  36.                 super.onAdLeftApplication();
  37.                 Log.i("TAG""onAdLeftApplication");
  38.             }
  39.             @Override
  40.             public void onAdLoaded() {
  41.                 super.onAdLoaded();
  42.                 Log.i("TAG""onAdLoaded");
  43.             }
  44.             @Override
  45.             public void onAdOpened() {
  46.                 super.onAdOpened();
  47.                 Log.i("TAG""onAdOpened");
  48.             }
  49.         };
  50.         /**
  51.          * 设置监听
  52.          */
  53.         mAdView.setAdListener(listener);
  54.         /**
  55.          * 开始载入广告条
  56.          */
  57.         mAdView.loadAd(adRequest);
  58.     }
  59.     /**
  60.      *
  61.      官方示例:https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start
  62.      
  63.      分享:安卓发布平台 http://blog.csdn.net/mapboo/article/details/49531043
  64.      应用汇:http://www.appchina.com/
  65.      安智市场:http://www.anzhi.com/
  66.      华为市场:http://appstore.huawei.com/
  67.      百度市场:http://app.baidu.com/pass/center
  68.      蒲公英:http://www.pgyer.com
  69.      N多网 :http://www.nduoa.com/developer
  70.      豌豆荚:http://developer.wandoujia.com/
  71.      360:http://dev.360.cn
  72.      QQ:http://op.open.qq.com
  73.      FIR:http://fir.im
  74.      Android中国开发者 交流QQ群:361871827 欢迎加入一起讨论技术...
  75.      */
  76. }

 

编译运行:

运行代码,就会出现Admob广告条,只要替换自己的banner_ad_unit_id就能开始赚钱了;

效果图:

本实例源代码下载地址:http://pan.baidu.com/s/1pJ3UEcr

Android中国开发者 QQ群:361871827 欢迎一起讨论技术..

原文:http://ask.android-studio.org/?/article/21

 

本篇教程中使用到的Android Studio版本为1.0, Eclipse ADT版本23.0.4。请尝试更新到该版本。

Android Studio默认使用 Gradle 构建项目, Eclipse 默认使用Ant构建项目。建议Android Studio导入项目时,使用Gradle 构建项目。

导入 Eclipse 项目

本例中,使用到的 Eclipse 项目结构如图:

e-demo 为主项目, appcompat_v7 为 library 项目。

导入 Generate Gradle build files 项目

Google官方建议是通过本方法进行Android Studio导入 Eclipse 项目。

这种方式有一个好处就是兼容 Eclipse 的文件目录结构,通过版本控制中的文件过滤,可以在一个项目组中,同时使用 Eclipse 和Android Studio。

讲解1

File --> Export

讲解2

选择导出类型。选择 Android --> Generate Gradle build files 。

点击 Next 。

讲解3

很长一段英语(完全看不懂是什么意思)。

点击 Next 。

讲解4

选择要导出的项目。

因为我的 e-demo 项目依赖了 appcompat_v7 项目,所以我将 e-demo 和 appcompat_v7 都选择了导出。

点击 Next 。

讲解5

最终确认要导出的项目。

Force overriding of existing files 表示覆盖导出文件。使用 Generate Gradle build files 的方式导出项目,会在项目目录中生成一些文件。这里的覆盖文件指的就是覆盖这些可能已经生成过的文件。如果你之前有使用这种方式导出过项目,建议勾选。

点击 Finish 。

讲解6

这一步没有什么好说的,直接点击 Finish 。

讲解7

营销代有手段出,各领风骚数百天。要说现在哪些营销方式最能传播,屡屡刷爆朋友圈的H5页面肯定就是首当其冲的,提到H5页面,就立马想到“围住神经猫”,上线微信朋友圈3天的时间便创造了用户500万,访问量超1亿的神话。

H5如此势头,不得不让营销人对H5页面的未来充满了期待,越来越多的人开始在营销中运用H5页面。其实在移动端各个领域,H5页面的叫法很多,也会称为翻翻看、手机微杂志、广告页、场景应用、海报\画报(动态海报、指尖海报、掌中海报、动画海报、微画报、微海报)等等,经常能见到的就是滑动翻页。

然而大企业大公司的土豪都在利用自己强大资源和技术比拼H5场景页面,一些小企业或普通独立营销者就只能眼巴巴看着吗?NO,实力差点技术差点效果差点,但是我们也能做。下面木木就给大家推荐一些H5场景页面免费制作神器来,排名不分先后!

搜狐快海报

快海报是搜狐快站平台上全新推出的免费H5页面制作工具,操作也极为简便易学,完全没有技术要求。采用拖拽式操作,属性式设置的模式。一拖一拽,简单配置,所见即所得,一分钟即可学会,三分钟便能完成。还有海量模板即将上线,替换内容即可生成。快海报还支持同一组件的多重动画设置,让画面更丰富更炫酷。和其他一样,搜狐快站海报也是适用于包括活动推广、企业宣传、产品展示、会议组织、预约报名、节日祝福等不同的场景。

体验地址:http://www.kuaizhan.com

初页

初页作为手机端制作动态海报的APP,门槛还是比较低的,容易上手,可以直接在手机上编辑,制作极为便利,图文混排的模板也很丰富。可免费下载安卓版和苹果版初页App,或通过电脑在线创建、编辑,轻松创作优雅、炫酷,利于微信传播的H5海报。

体验地址:http://chuye.cloud7.com.cn/

MaKa

MAKA这个平台制作起来非常简单,静态模板和动态模板都有,模板样式丰富,浏览体验不错。有多种动态效果以及交互效果可供选择,除收费版外提供免费版,不过免费版不提供自定义动效、支付、导航、预约等服务,也不能添加外链。

体验地址:http://www.maka.im/home/index.html

点点客海报

点点客是微信第三方开发服务商,大家都知道,不仅推出了微信营销服务,也有排版和免费的点点客海报,无需注册,扫码登录即可编辑动态海报,多种效果、翻页动画、背景音乐、可统计浏览量,也提供定制。

体验地址:http://www.dodoca.com/index

口袋通微杂志

口袋通是一个免费的微商平台,其场景海报也是为了其电商功能服务,不过免费得版提供的交互较为简单,没有多样的模板。

体验地址:http://youzan.com/

秀米秀制作

秀米在公众平台的图文排版上可是名声远扬。和秀米的图文神器一样,秀制作目前也是免费的,提供多种模板,傻瓜式操作,可以外链,可与秀米图文排版双剑合璧。

体验地址:http://xiumi.us/

易传单

编辑器界面比较友好,设计灵活方便,数据统计与表单上也是亮点所在。除了模板较少之外其他的都是相当好。

体验地址:http://www.echuandan.com/

epub360意派

这不是奇虎360的,意派的交互功能极为强大,可以说更适合专业的设计师打造的交互设计,动画效果出色,虽然简单傻瓜式的模板不多,但自由度相对较高。不过如果只是制作简单的单页,上手也并不是很复杂。只是免费版作品数量限制为10个,导出有logo。

体验地址:http://www.epub360.com/

易企秀

易企秀也是免费,有多种动态模板,能实现文本和图片带有滑动、隐现、放大缩小等动态效果。同时有ios移动客户端,在手机上也可创建场景应用,以及数据统计功能。大体上和maka差不多,但是表单和统计是免费也可用。

体验地址:http://eqxiu.com/#/home

Liveapp场景应用/云来

云来Liveapp是面向企业方的移动场景APP云服务平台,许多企业都在使用,需购买场景应用。不过,现在云来场景应用正式免费开放,所有“认证企业”都可以申请获取。免费体验长达31天,体验结束后,也会永久保存并持续展示你的场景应用。

体验地址:http://www.yunlai.cn/

Vxplo

Vxplo也是专注在线交互设计,功能强大,同epub360一样适合专业设计师,可以零代码制作轻应用。使用上相对较为复杂,不过其甚至也可以用来制作响应式网站,有时间可以试试。

体验地址:http://www.vxplo.cn/

最酷网

最酷网也是一个免费H5场景应用制作和发布平台。不用懂设计、不用会编程,1分钟上手制作,平台针对不同的应用场景和内容展现形式,提供海量的模板、丰富的控件、灵活的动画特效。用户可以简单快速的通过图片替换、内容编辑,就可以创建属于自己的、炫酷的云场景应用。

体验地址:http://www.zuiku.com/

FormFollowsFunction

严格来说,FormFollowsFunction不属于H5制作平台,而是一个预览平台。H5页面到底能实现什么样的动画效果?这一个网站几乎能看到所有H5能够实现的动画效果,引爆你的灵感,并且让你心中有数。

体验地址:http://fff.cmiscm.com/#!/main

Weebly

Weebly和Wix也是一款HTML5拖放式智能创建器,支持中文,拥有多种优秀网页模板和交互效果,并且有IOS和Android客户端可以管理自己的网页、随时随地跟踪。

体验地址:http://www.weebly.com/about/index.php?lang=zh

Wix

Wix基于H5技术,向用户提供多种网页模板,操作简单无需代码,智能拖拽即可实现网页建设。Wix每个类目下有上百的HTML5模板可供使用,响应式设计,在手机端也有很好的展示。

体验地址:http://www.wix.com/

Ceilfire

Ceilfire是一个创建H5游戏并分享的平台,点击进入你就会看到很多的H5页面游戏。用户可以直接在浏览器中创建游戏、参与游戏、分享游戏,对于想做简单的H5游戏的朋友可以用这种方式试试手。就算不做也可以看看已有的H5游戏来找找感觉。

体验地址:http://ceilfire.com/browse/most-played

做一些H5特效的动态页面,以前需要专业技术团队和设计师才能制作。现在通过这些简单的平台,你几分钟就能免费创作自己的H5页面。甚至有的你需要做的只是仅仅换上几张图,敲几个字,选自己喜欢的音乐\视频…一个不错的H5页面就出来了。

那么,工具地址都给大家了,接下来就是轮到你动手的时候了,找一个自己喜欢的平台,开始吧!

来源:木木博客

原文链接:http://mt.sohu.com/20150326/n410379051.shtml

作为互联网从业者尤其是开发者,如果不懂得善用「工具」,那将很容易导致事倍功半,从而一步慢步步慢、再到遭遇淘汰。「开发这样一款 APP 需要多长时间?」这个问题,使用 APICloud 平台可以大大缩短开发周期,节约开发成本。

APICloud 产品为移动开发者从「云」和「端」两个方向提供 API,简化移动应用开发技术,将 1 个月的工作量降低至 1 个周,大幅提升移动应用开发和管理的效率。APICloud 由「云 API」和「端 API」两部分组成,可以帮助开发者快速实现移动应用的开发、测试、发布、管理和运营的全生命周期管理。

现在,通过 APICloud 开发出的 APP 已超过 30 万款,目前已经与中科创达、中兴通讯、泸州老窖、神州数码等知名公司展开合作。

使用 APICloud 开发产品如同「搭积木」,将你需要的模块按需搭建就能完成一个原生 APP 的生成。除了基础的 APP 模块如列表、选择器、网络通信、多媒体等外,APICloud 的模块 store 不断在引入第三方服务商丰富模块功能如人脸识别身份验证工具、IM 即时通讯、客服系统、广告系统、支付通道等。第三方服务提供商包括「洋葱」、「Ping++」、「有米」、「智齿客服」、「广点通」、「融云」等专业团队开发的产品。

目前,模块 store 里的第三方服务绝大部分都可以免费使用。

APICloud 联合创始人邹达先生表示:「APICloud 在技术这条线上就是希望能使得 APP 运行的更流畅更安全,从商业上期望搭建一个 APP 开发的生态圈。」

与很多互联网产品一样,APICloud 的商业模式也是经过发展、尝试、摸索出来的。据邹达介绍,除了收取基础流量、存储费用外,APICloud 可提供的增值服务包括专家团队辅导、开发者培训和私有云服务。另外,平台在一年的发展中已经积累了优质开发者 20 万 +,对于 APICloud 来说搭建众包平台也是水到渠成的事情。

再往前两三年的时间里,一大波「APP 创业」造成了大家都在做 APP 的风潮,之后微信的崛起让很多创业公司开始从一个「微信公众号」开始运营,那么 APP 开发的风口是不是在变小?

邹达认为:「所有围绕 APP 开发的团队都会关心这个问题。我们也会做调查,2013 年的数据报告显示,世界范围内人们使用移动端产品所花费的时间中有 80% 花费在独立的 APP 中,到 2014 年的数据就达到了 85%。今年 6 月份的数据显示人们花在移动端 APP 上的时间还是不断增长的。APP 开发确实有成本,但是根据这些用户习惯,移动互联网创业者如果不做个 APP,而只有微信公号、一个 web 页面是无法真的验证产品和商业模式的,因为这些方式是不能给你准确数据的。」另一方面,邹达表示,APICloud 最大的特点就是「快」,可以把你的想法快速的落实、快速的出一个产品去运营,这个特性降低了 APP 开发成本也有助于创业者去做快速的验证。

本文由 TECH2IPO / 创见(tech2ipo.com)编辑 @Judy 撰写,转载或使用本文素材进行二次创作请参阅 版权信息 。

转:http://tech2ipo.com/10026470.html?site=toutiao

目前主流应用程序大体分为三类:Web App、Hybrid App、 Native App。

一、Web App、Hybrid App、Native App 纵向对比

首先,我们来看看什么是 Web App、Hybrid App、 Native App。

1. Web APP

Web App 指采用Html5语言写出的App,不需要下载安装。类似于现在所说的轻应用。生存在浏览器中的应用,基本上可以说是触屏版的网页应用。

优点

(1)开发成本低,

(2)更新快,

(3)更新无需通知用户,不需要手动升级

(4)能够跨多个平台和终端。

缺点:

(1)临时性的入口

(2)无法获取系统级别的通知,提醒,动效等等

(3)用户留存率低

(4)设计受限制诸多

(5)体验较差

2. Hybrid App

Hybrid APP指的是半原生半Web的混合类App。需要下载安装,看上去类似Native App,但只有很少的UI Web View,访问的内容是 Web 。

例如Store里的新闻类APP,视频类APP普遍采取的是Native的框架,Web的内容。

Hybrid App 极力去打造类似于Native App 的体验,但仍受限于技术,网速,等等很多因素。尚不完美。

3. Native App

Native APP 指的是原生程序,一般依托于操作系统,有很强的交互,是一个完整的App,可拓展性强。需要用户下载安装使用。

优点:

(1)打造完美的用户体验

(2)性能稳定

(3)操作速度快,上手流畅

(4)访问本地资源(通讯录,相册)

(5)设计出色的动效,转场,

(6)拥有系统级别的贴心通知或提醒

(7)用户留存率高

缺点:

(1)分发成本高(不同平台有不同的开发语言和界面适配)

(2)维护成本高(例如一款App已更新至V5版本,但仍有用户在使用V2, V3, V4版本,需要更多的开发人员维护之前的版本)

(3)更新缓慢,根据不同平台,提交–审核–上线 等等不同的流程,需要经过的流程较复杂

二、Web App、Hybrid App、Native App 技术特性

由上图可见,Web APP 的开发基于Html5语言。而Html5语言本身又有着不可避免的局限性。正是这些局限性的存在,使得Web App在体验中要逊于Native App。

三、Web App受限制因素及设计要点

相比Native App,Web App体验中受限于以上5个因素:网络环境,渲染性能,平台特性,受限于浏览器,系统限制。

1. 网络环境,渲染性能

Web APP对网络环境的依赖性较大,因为Web APP中的H5页面,当用户使用时,去服务器请求显示页面。如果此时用户恰巧遇到网速慢,网络不稳定等其他环境时,用户请求页面的效率大打折扣,在用户使 用中会出现不流畅,断断续续的不良感受。同时,H5技术自身渲染性能较弱:对复杂的图形样式,多样的动效,自定义字体等的支持性不强。

因此,基于网络环境和渲染性能的影响,在设计H5页面时,应注意以下几点:

  • 简化不重要的动画/动效
  • 简化复杂的图形文字样式
  • 减少页面渲染的频率和次数

从下图移动Web版 jing.fm和Native版jing对比后可以看出:Web APP首页去除冗余的功能,回溯本源,只给用户提供了jing.fm最初的本质需求——电台。既符合H5精简功能又达到了突出核心功能的设计原则。无疑给用户眼前一亮的气息。

正如书中《瞬间之美》的一个核心观点:重要的并不是我们提供的信息量有多大,而是我们能否给他们提供真正需要的信息。


再如:百度最新推出的直达号,以良子健身为例:

从Native App和Web App(百度直达号)的对比中,我们可以看出Native良子以九宫格的形式展现,且属于双重导航,功能入口太多;弊端是用户不知道聚焦在哪里,分散用户 的注意力。而Web版良子整合并减少了导航的入口,增强用户的专注度;界面清爽,整洁,很好地传达了良子本身的寓意——轻松、愉悦、休闲、舒适。

2. 受限于浏览器

通常Web App生存于浏览器里,宿主是浏览器。不同的浏览器自身的属性不尽相同,如:浏览器自带的手势,页面切换方式,链接跳转方式,版本兼容问题等等。

例如下图:UC 浏览器和百度浏览器自身支持手势切换页面。手指从左侧滑动页面,返回至上一级。百度手机助手H5页面,顶部Banner支持手势左右滑动切换。这一操作与浏览器自身手势是冲突的。

再如,基于浏览器的Web APP在打开新的模块中的页面时,大多会新开窗口来展现。例如用户在使用购物类APP时,浏览每日精选模块时,每当打开新的商品时,默认新开一个窗口。这 样的优劣势显而易见:优势是能够记录用户浏览过的痕迹,浏览过的商品,以便后续横向对比;劣势是过多的页面容易使用户迷失在页面中。

正如Google开发手册里描述:当用户打开一个Web App的时候,他们期待这个应用就像是一个单个应用,而不是一系列网页的结合。然而,什么情况下需要跳转页面,什么情况下在当前页面展示则需要设计师细致考量。

因此,Web App基于浏览器的特性,从设计角度应该遵循以下了两点:

少用手势,避免与浏览器手势冲突。

减少页面跳转次数,尽量在当前页面显示。

3. 系统限制,平台特性

由于Html5语言的技术特性,无法调用系统级别的权限。例如,系统级别的弹窗,系统级别的通知,地理信息,通讯录,语音等等。且与系统的兼容性也会存在一些问题。以上限制通常导致APP的拓展性不强,体验相对较差。例如百度地图:

Web版地图基于浏览器展现,因此,不能全屏显示地图,给用户的眼界带来局限感;相反,Native 版地图以全屏展现的形式,很好的拓展了用户的视野。整个界面干净简洁,首页去除冗余功能。

在制定路线的体验中,如图:

Web 版地图耗费的流量大于Native版,且不能预先缓存离线地图。对于地理位置的判断也是基于宿主浏览器,而非Web地图本身。获取路线后,对于更换到达方式,相对来说是不便利的。

相反,Native 版地图,能够直接访问用户的地理位置,能够很清晰的为用户展现App规划的路线,并能轻松的查看多种路线方案,以便做出符合自己的最佳方案。对于切换公交,走路,自驾等路线方式也是只需一键操作。

Native 版地图相对于 Web版地图增加更多情感化,易用的功能,如:能够记录用户的生活轨迹,记录用户的点滴足迹,能够享受躲避拥堵方案等。而Web版地图基于技术框架,很难实现以上功能,从用户体验角度来看,弱于Native版地图。

四、小结

综述所述,在设计Web APP时,应当遵循以下几点:

1. 简化

  • 简化不重要的动画/动效
  • 简化复杂的图形文字样式

2. 少用

  • 少用手势,避免与浏览器手势冲突
  • 少用弹窗

3. 减少

  • 减少页面内容
  • 减少控件数量
  • 减少页面跳转次数,尽量在当前页面显示

4. 增强

  • 增强Loading时的趣味性
  • 增强页面主次关系
  • 增强控件复用性

 

原文地址:mux.baidu

作者:guowenwe

从2013年4月份开始至今,就有传闻称小米一直在秘密研发的mios系统。果不其然,mios真的来了。近日,有消息称,小米与联芯合作开发的399元超廉价新机将会在今年12月底发布,这将是首部采用mios系统的小米手机。

那这到底是怎么回事呢,为什么小米要研发MIOS系统呢?小米为什么要推出399元的超廉价新机呢?别急,且听ROM基地小编慢慢道来。看完本文,你也许就能找到答案。

一、安卓系统正在逐步走向封闭

在谈到这个问题之前,我们先来说说另一件事。很多人可能不知道的是,谷歌正在收紧最Android的控制权,并开始逐步封闭root权限。如果你的手机是Android 4.4以上系统,你想要获取root的权限可是异常的艰难,这一点相信不用我说很多人也是深有体会的。

细心的朋友可能还会发现,你的手机在开机的时候屏幕下方会出现“Powered by Android”字样,这也是谷歌强制要求的。另外,全球除了包括中国在内的少数几个国家,只要是安卓手机,就必须预装Google Play套件等20个谷歌自家的软件,如果厂商敢不这么做,将被永久取消安卓系统的授权使用权利。为什么中国的手机不需要预装谷歌的软件,因为就算给我们装了我们用不了,其中的原因我不细说,聪明人都懂。

魅族已经想到了解决办法,现在你买到的魅族MX4全部都是YunOS版的,它有效的逃脱了谷歌的控制。值得一提的是,在UI界面还是使用体验上都和基于Android的Flyme一模一样,唯一不同的是开机动画,从“Flyme powered byAndroid”改成了“Flyme powered byYunOS”。虽然只是一个单词的改动,魅族和阿里的工程师都付出了巨大的努力。

面对野心勃勃的谷歌,小米也不能坐吃等死啊。等到安卓系统铺满了整个手机行业,如果哪一天谷歌的安卓要收大额的专利费呢?到时候后悔就晚了。所以小米一直都在秘密的研发新系统,避免将来发展壮大后受到谷歌方面的控制。

二、MIOS的的本质到底是什么呢?

小米为了自家mios系统,还特地收购了mios.cn和mios.com.cn两个域名。那mios系统到底是什么呢?其实他的前身就是FirefoxOS,中文名称为火狐系统,也可以叫火狐OS。通俗点讲,mios是只是基于火狐OS开发对UI进行了大幅度的改造,并进行深度优化,这有点类似于基于Android深度定制的MIUI系统。说的难听点,就是为火狐OS做了一层皮肤,话虽然难听但却是是事实。

全新的mios基于火狐OS深度定制的,但是经过小米的高度优化后,使用起来和目前的MIUI体验相差无几。火狐OS与安卓类似,采用Linux核心,应用于智能手机。火狐OS的所有应用都基于网页技术,运行的app,你可以称它为webapp。

一直以来,很多人有个误区,这个系统是不是要时时刻刻联网才能用呢?胡扯,根本就不是你想的那样。网页不同于网络的,是已经从云端下载下来了的页面。火狐OS的webapp只需要第一次联网后,以后使用就不需要耗费多少流量,也不需要时时刻刻联网。目前的兼容Android系统的YunOS 3.0在主屏往左滑动的那些卡片APP就是类似于webapp的应用,这一点和火狐OS类似。

不服气的朋友,我再举个例子,就算是我们目前使用的安卓应用,在下载了APK软件后,其实内容也是从云端抓取的,包括淘宝/微博/今日头条这样的APP提供的只是一个基本内容和API接口的框架,其实大部分内容都是从云端的服务器推送给你的,包括今日头条在内的这些APP还会智能分析用户的兴趣爱好,精准的推送你喜欢的内容。

三、安卓APP开发已经陷入困境

众所周知,安卓设备由于硬件不同,所以碎片化严重。光是CPU的就有ARM/X86/MIPS等多种架构,屏幕分辨率和设备的尺寸更是种类繁多,所以开发者的适配工作非常麻烦。

有时候为了满足一个软件能同样很多机型,不得不适配很多dpi大小的框架和图片。这也就是为什么ROM基地曾报道过,曾有一位Android开发者狂买600多款不同的Android设备,而且他还抱怨还有很多设备买不到,因为他必须反复测试APP的的兼容性。

为了满足日益增长的手机屏幕大小和超高分辨率的需求,现在安卓的的APP也是越做越大,APP越做越大对手机的硬件需求就越来越大了,仅仅以QQ为例,三年时间,从最早的2M的体积么猛增至20多M的体积。从最早128M内存的手机都能流畅运行QQ,到现在就算是1G内存的手机只要开了QQ后再用其他软件都可能卡成狗。

四、火狐OS的优势体现在哪?

既然现在目前所有APP的内容都是云端推送,那么火狐OS为何不像安卓一样也搞个框架呢?其实这才是火狐OS的优越之处。安卓系统和众多操作系统一样,都是应用先下载再运行,需要考虑到硬件的兼容性问题,而火狐OS完全就不用考虑这个问题。

火狐OS是一个完全基于HTML5的系统,没有所谓的“原生应用”。无论是打电话、发短信、玩游戏,使用的都是HTML 5技术。这倒不是说这些应用都需要时刻联网才能用,而是他们的结构采用了目前国家通用的HTML 5架构,你可以这么理解,这些APP都是一个个已经下载好的网页。

而火狐OS的应用webapp正是一个个网页,你首次联网后,这个app就会像网页一样被下载并缓存到本地,因为目前的HTML 5都是响应式的网页,也就是自适应网页。

火狐OS下载的webapp会根据你手机的屏幕尺寸自适应大小,避免了安卓app想一个apk通吃所以安卓设备面临困境。所以火狐OS与其他系统相比,它的webapp对硬件配置的要求非常低,单核512M内存的手机运行一大堆软件后依然非常流畅。

由于产品定位的关系,火狐OS从来都不和高端市场进行竞争,因为就算是竞争也打不过人家。所以它选择的目标是低价的入门级别手机,第一个国家选择巴西,随后是印度等东南亚国家,一直火狐OS都刻意的避开了手机系统争夺战很激烈的的确,包括美国、中国等国家。

五、为什么小米要做MIOS?

小米公司到目前位置,已经涉及到了包括手机、智能穿戴、智能家居、新能源汽车、包括小米公寓在内的所以能触及到的领域。之所以一开始选择做手机,是因为手机是获取用户群最快最直接的工具。

单单从和国内手机的竞争来看,小米的老对手可以通过自家海思芯片主打高端市场,并获得自主研发的好评。所以小米也不甘示弱,小米与联芯合作推出联芯1860方案的399廉价手机,是为了更低端手机进军,抢占低端市场。目前推广一台火狐OS可以得到4美元的补贴,也就是25块钱人民币,补贴到399元的廉价新机上也是一笔不少的钱。

从国际市场来看,小米试图进入国际市场,专利方面的缺乏绝对是小米的一块心病。硬件方面,小米选择之所以选择和大唐电信旗下的联芯合作是为了解决专利难题,因为大唐电信拥有一大批与电子通讯有关的专利,在小米海外扩张后,可以让小米规避专利风险等问题。

软件方面,小米可以通过和火狐OS合作,推出自家的mios以逃脱和被谷歌控制的厄运。俗话说,要防范于未然,这有点类似于微软在中国推广Office一样,微软当初放任Office盗版后火速占领中国市场,把老牌的WPS打的元气大伤。现在很多朋友看到WPS都会误以为WPS是模仿Office,其实WPS才真的是办公软件的祖师爷,比微软的Office早了十几年。

现在谷歌发布了免费的Android系统就有点类似于当年的微软一样,像是在撒网,等谷歌真动起手来收网的时候,众多手机厂商就像网中的鱼一样要任由宰割了。

目前唯一不能确定的是,尽管mios在界面上和设计交互上可以和miui一样,但小米的mios系统能否像魅族的“Flyme powered byYunOS”一样兼容安卓应用。小米研发团队的工程师可要加油了,加入mios要是也能兼容安卓应用,那绝对会有一大批发烧友买单的。