首页 > 交互 > 关键词  > 移动端设备最新资讯  > 正文

移动端webapp开发必备知识

2012-11-28 14:17 · 稿源:isux.tencent.com

移动设备的用户越来越多,每天android手机的激活量都已经超过130万台,所以我们面向移动终端的WebAPP也开始跟进了。本文主要介绍webapp的开发与调试的相关知识和经验,以及给出几种可选的解决方案。

一、基本概念

(1) CSS pixels与device pixels

CSS pixels: 浏览器使用的抽象单位, 主要用来在网页上绘制内容。

device pixels: 显示屏幕的的最小物理单位,每个dp包含自己的颜色、亮度。

等值的 CSS pixels在手机屏幕上占多大的位置,这不是固定的,这取决于很多属性。经过分析和总结,我们可以得出这么一条公式: 1 CSS pixels = (devicePixelRatio)^2 device pixels (^2是平方的意思,至于 devicePixelRatio是什么东西,后面会讲解) 。

(2) PPI/DPI

PPI,有时也叫DPI,所表示的是每英寸所拥有的像素(pixel)数目,数值越高,即代表显示屏能够以越高的密度显示图像。(注:这里的像素,指的是device pixels。)搞清楚了PPI是什么意思,我们就能很容易理解PPI的计算方式了,我们需要首先算出手机屏幕的对角线等效像素,然后处以对角线(我们平常所说的手机屏幕尺寸就是说的手机屏幕对角线的长度),就可以得到PPI了。准确的计算公示大家可以参照下图。比较有意思的是,根据公式计算出来的iPhone 4的PPI为330,要比苹果官方公布的326要高一点点。

同理,以HTC G7为例,480*800的分辨率,3.7英寸,算出来就是252的PPI。

(3) 密度决定比例

我们计算PPI就是为了知道一部手机设备是属于哪个密度区间的,因为不同的密度区间,对应着不同的默认缩放比例,这是一个很重要的概念。

由上图可知,PPI在120-160之间的手机被归为低密度手机,160-240被归为中密度,240-320被归为高密度,320以上被归为超高密度(Apple给了它一个上流的名字——retina)。

这些密度对应着一个特定的缩放比例值,拿我们最熟悉的iphone4或4s来说,它们的PPI是326,属于超高密度的手机。当我们书写一个宽度为320px的页面放到iphone中显示,你会发现,它竟然是满宽的。这是因为,页面被默认放大了两倍,也就是640px,而iphone4或4s的宽,正是640px。

图中把高密度的一类圈起来,是因为这是android手机的统计数据,在国内安卓手机市场中,高密度的设备占了绝大多数的市场份额,这是很重要的一点,也是我们做安卓端webapp要注意的关键点。

(4) viewport的使用

viewport总共有5个属性,分别如下:

content=“

height = [ pixel_value |device-height] ,

width = [ pixel_value |device-width ] ,

initial-scale = float_value , minimum-scale = float_value , maximum-scale = float_value ,

user-scalable =[yes | no] ,

target- densitydpi = [ dpi_value | device-dpi| high-dpi | medium-dpi | low-dpi] ” />

在这些属性里面,我们重点关注target-densitydpi,这个属性可以改变设备的默认缩放。medium-dpi是target-densitydpi的默认值,如果我们显式定义target-densitydpi=device-dpi,那么设备就会按照真实的dpi来渲染页面。打个比方说,一张320*480的图片,放在iphone4里面,默认是占满屏幕的,但如果定义了target-densitydpi=device-dpi,那么图片只占屏幕的四分之一(二分之一的平方),因为iphone4的分辨率是640*960。

二、解决方案

(1) 简单粗暴

如果我们按照320px宽的设计稿去制作页面,并且不做任何的设置,页面会默认自动缩放到跟手机屏幕相等的宽度(这是由于 medium-dpi是target-densitydpi的默认值,和不同密度对应不同缩放比例所决定的,这一切都是移动设备自动完成的 )。所以这种解决方案,简单,粗暴,有效。但有一个致命的缺点,对于高密度和超高密度的手机设备,页面(特别是图片)会失真,而且密度越多,失真越厉害。

(2) 极致完美

在这种方案中,我们采用 target-densitydpi=device-dpi,这样一来,手机设备就会按照真实的像素数目来渲染,用专业的话来说,就是1 CSS pixels = 1 device pixels。比如对于 640*960的 iphone,我们就可以做出 640*960的页面,在iphone上显示也不会有滚动条。当然,对于其他设备,也需制作不同尺寸的页面,所以这种方案往往是使用媒体查询来做成响应式的页面。这种方案可以在特定的分辨率下完美呈现,但是随着要兼容的不同分辨率越多,成本就越高,因为需要为每一种分辨率书写单独的代码。下面举个简单的例子:

#header {

background:url (medium-density-image.png);

}

@media screen and (- webkit -device-pixel-ratio:1.5) {

/* CSS for high-density screens */

#header { background:url (high-density-image.png);}

}

@media screen and (- webkit -device-pixel-ratio:0.75) {

/* CSS for low-density screens */

#header { background:url (low-density-image.png);}

}

(3) 合理折中

针对安卓设备绝大多数是高密度,部分是中密度的特点,我们可以采用一个折中的方案:我们对480px宽的设计稿进行还原,但是页面制做却成320px宽(使用background-size来对图片进行缩小),然后,让页面自动按照比例缩放。这样一来,低密度的手机有滚动条(这种手机基本上已经没有人在用了),中密度的手机会浪费一点点流量,高密度的手机完美呈现,超高密度的手机轻微失真(超高密度的安卓手机很少)。这种方案的优点非常明显:只需要一套设计稿,一套代码(这里只是讨论安卓手机的情况)。

三、开发调试

(1) weinre远程实时调试

Web开发者经常使用Firefox的firebug或者Chrome的开发人员工具进行Web调试,包括针对JavaScript,DOM元素和CSS样式的调试。但是,当我们期望为移动Web站点或应用进行调试时,这些工具就很难派上用场。

weinre就是一个帮助我们在桌面来远程调试运行在移动设备浏览器内的Web页面或应用的调试工具。weinre是WEb INspector REmote的简写,现在是Apache的一个开源项目,托管在github。

下面将介绍如此在日常工作使用它。

首先,我们要下载weinre的jar包——项目官方已经找不到该jar文件,网上能够找到,这里建议搭建个独立的web服务器,jar运行后是一个本地的服务器,和web服务器差不多~~

然后通过运行dos命令来启动它(请注意在你的电脑上已经安装有JDK)。运行命令如下,需要把路径改成你的实际文件位置:

java -jar d:toolsweinre-jarweinre.jar –httpPort 8081 –boundHost -all- //(httpPort是指定服务端口,boundHost参数说明可以使用IP访问,all参数代表支持所有的host)。

访问localhost:8081,如果看到如下的页面,说明weinre已经启动成功:

输入debug client user interface地址(调试客户端UI地址)。本例中即:https://localhost:8081/client/#anonymous,其中#anonymous是默认的调试id(debug id)。如果这个weinre调试服务器只是由你一个人使用,那么你可以使用默认的debug id:anonymous。 启动的weinre调试客户端ui如下图:

在需要调试的页面加入中以下脚本: ,注意把localhost换成手机能够访问的真实IP地址。当手机访问这个页面时,weinre客户端就会检测到目标设备,然后就可以对它进行调试了。

因为手机上不方便截图,我这里就用两个浏览器窗口来展示效果,其实手机上的效果跟右边是一样的。

(2) AVD模拟器调试

静态页面并不能满足我们的需求,很多实际效果比如touch事件,滚动事件,键盘输入事件等,都需要在真实的环境下测试,这时就需要用到模拟器。就像我们测试ie6一样,AVD模拟器可以类比于PC上的虚拟机,当我们需要测试某一特定的机型时,我们可以新建一个AVD,进行一系列的测试。不过使用AVD的前提是已经部署好android的开发环境,这个需要JDK + android SDK + Eclipse + ADT,还是稍微有点繁琐。

(3)手机抓包与配host

在PC上,我们可以很方便地配host,但是手机上如何配host,这是一个问题。

这里主要使用fiddler和远程代理,实现手机配host的操作,具体操作如下:

1.首先,保证PC和移动设备在同一个局域网下;

2.PC上开启fiddler,并在设置中勾选“allow remote computers to connect”

3.手机上设置代理,代理IP为PC的IP地址,端口为8888(这是fiddler的默认端口)。通常手机上可以直接设置代理,如果没有,可以去下载一个叫ProxyDroid的APP来实现代理的设置。

4.此时你会发现,用手机上网,走的其实是PC上的fiddler,所有的请求包都会在fiddler中列出来,配合willow使用,即可实现配host,甚至是反向代理的操作。

总结

以上就是我们在实际开发中积累的一些经验和技巧,希望能够给大家一些帮助,如果你有好的方法或者工具,也请在留言中分享~~

文章来源:https://isux.tencent.com/blog

举报

  • 相关推荐
  • AI日报:GPT-5-Auto现身Mac客户端;阿里开源WebAgent项目WebShaper;腾讯推X-Omni多模态模型

    【AI日报】今日AI领域重要动态:1)阿里开源WebAgent项目WebShaper,GAIA评测超越Claude4-Sonnet;2)Moonvalley推出草图转视频功能,支持手绘生成电影级视频;3)腾讯X-Omni模型实现图文理解重大突破;4)百度搜索测试AI应用中心入口;5)Midjourney+新增个性化推荐功能;6)GPT-5或于2025年夏季发布;7)Ollama推出桌面客户端;8)OWL团队开源多智能体协作工具Eigent;9)OpenAI年收入激增至120亿美元;10)英伟达H20芯片因安全风险被约谈;11)万兴科技天幕2.0模型国内排名第四,与华为云共建AI视频实验室。

  • 美团上线美食社区产品“鸭觅”APP

    美团方面透露,团队将于8月初在上海、广州等城市启动“推荐官”招募计划,通过本地化运营加速内容生态建设。业内人士分析,美团此举旨在通过差异化策略切入美食社交赛道,依托北京市场验证产品模型后,逐步向全国重点城市复制推广模式。随着安卓版本开发推进,该产品或将在第三季度迎来功能迭代与用户规模增长的关键期。

  • 会玩App X 蜜桃猫IP梦幻联动 开启「盛夏联萌季」

    7月11日,社交平台会玩App宣布与人气萌系IP"蜜桃猫"展开联动活动,推出"盛夏联萌季"主题限时活动。活动期间,游戏内将上线蜜桃猫主题乐园场景,玩家可参与烟花派对等特色互动,获取专属表情、装扮等福利。平台还推出签到活动,每日登录可免费领取限定虚拟道具。通过完成日常任务积累积分,还能兑换联名款戒指等收藏品。此次合作将会玩App的社交玩法与蜜桃猫的萌系元素深度融合,为Z世代用户带来更具沉浸感的互动体验,展现了平台打造年轻化社交生态的领先优势。

  • 豆包App视觉推理升级 支持图片思考

    豆包App近期升级视觉推理能力,支持在思维链中运用图像思考。用户上传图片提问时,豆包能主动分析图片内容,智能放大局部细节确保不遗漏关键信息。对于复杂图片,还能智能裁剪并调用搜图功能提供更准确结果。升级后的豆包可智能调用多种工具辅助分析图片,无论是日常识物、商品查询,还是工作学习中分析图表、专业图片,都能给出更精准实用的答案。据悉,豆包是国内首个实现这一能力的产品,用户可免费体验。

  • 阿里小号今日开始停止续费!10月底正式下架App

    据阿里通信官网公告,阿里小号将于2025年08月31日起陆续停止服务,今天起开始停止续费。 将按顺序分批结束服务并下线,对应号码将回收,余额将在下线的次日起10个工作日内按照订购价完成退回。 各省市号码的下线日期如下: 1、2025年08月31日24:00结束服务并下线归属于陕西省的号码; 2、2025年09月30日24:00结束服务并下线归属于广西省的号码; 3、2025年10月31日24:00结束服

  • “生态+场景”破局低频困境,保险类APP突围呈两种解法

    文章分析了保险业从数字化向数智化转型的趋势,重点对比了中国人保和太平洋保险两款APP的运营策略。中国人保APP以"车险+健康+高频生活服务"构建生态闭环,通过加油、救援等高频场景提升用户活跃度;太平洋保险APP聚焦健康管理领域,打造专业医疗服务壁垒。两者分别面临功能冗余和场景单一的挑战,但共同验证了未来保险APP需平衡"广度连接"与"深度服务"的发展方向。

  • 蔚来高管:在公司十年 见过很多次APP卡住 第一次见销售系统被挤爆

    昨日晚间,蔚来乐道旗下旗舰SUV车型L90上市,共推出6款车型。 其中六座三款车型,整车购买售价26.58-29.98万,采用Bass租电模式17.98-21.38万,七座版三款整车购买27.18-29.98万,采用Bass租电18.58-21.38万。 在发布会之后,乐道方面虽然未公布L90的订单数量,但从17.98万元的租电价格与市场同级别车型对比来看,乐道L90大卖已是大概率事件。 蔚来上海区域公司总经理夏庆华昨日晚间�

  • 蚂蚁AQ登顶Apple医疗榜:千亿参数+苹果生态,AI私人医生真要来了?

    ​最近,蚂蚁集团旗下 AI健康应用AQ推出iOS版,上线不到24小时,火速攀升至苹果应用商店医疗榜榜首,超越小荷AI医生、京东健康等应用。 用户用下载量投票:我们要的不是聊天机器人,是更像医生的AI管家。 C端用户对AI医疗的需求正从基础交互转向专业能力,他们需要的是能提供实质性医疗健康建议和服务的AI助手。 值得关注的是,AQ的快速增长与苹果生态的深度整合同步�

  • 绝地求生pubg延迟高、跳ping问题严重怎么办?方法全解析

    本文介绍了战术竞技游戏《绝地求生》(PUBG)的网络优化方案。游戏强调团队协作和实时决策,网络稳定性直接影响射击精度和移动流畅度。针对高延迟和网络波动问题,建议:1)使用迅游加速器优化线路;2)检查本地网络环境,重启路由器或更换DNS;3)关闭后台高带宽程序;4)验证游戏文件完整性;5)更新显卡驱动和系统补丁;6)优先使用有线连接。若问题依旧,可尝试更换网络时段或联系网络服务商。建议从基础连接问题开始逐步排查,再针对性调整资源配置。

  • API攻击年增超162%,瑞数信息重磅发布《API安全趋势报告》

    瑞数信息发布的《API安全趋势报告》指出,2024年API攻击流量同比增长超162%,占所有网络攻击的78%。报告揭示三大特征:1)攻击规模化,自动化工具普及使单次扫描可覆盖数千API资产;2)AI技术加持,42%攻击采用动态变异特征绕过传统检测;3)供应链风险突出,61%攻击通过单个漏洞横向渗透。报告建议企业构建全生命周期安全框架,覆盖设计、开发到运营各环节,实施业务逻辑防护、细粒度访问控制及LLM专用防护。以某电信运营商为例,部署防护方案后三个月内显著提升安全能力。报告强调,API安全需从技术防御转向业务智能防护,成为企业数字化免疫力的核心。