首页 > 代码库 > Windows Phone 8.1 学习之路

Windows Phone 8.1 学习之路

前几天看一哥们写的“Android学习之路”一文很不错,遂也写一篇Windows Phone的学习之路。

 

开发环境

  台式机

  • 不管是台式机还是笔记本,建议配置在I5+8G以上,I3+4G的话就别考虑用模拟器了,真机跑都挺费劲。

  • 如果用的是奔腾或AMD的CPU,并用要使用模拟器开发的话,要注意可能CPU不支持虚拟化导致基于Hyper-V的模拟器无法运行。

    手机

  • 买一台开发机还是很有必要的,如果预算紧张,可以考虑买一台最便宜的Lumia 525,甚至去淘宝或一些WP社区上找二手的htc8s或Lumia520。中高端就不在这推荐了,超出本文范围。
  • 我基本上不怎么用模拟器开发,因为模拟器上没有各种sensor(虽然可以模拟,但还是麻烦),手势操作也不方便,并且显示效果与真机也有些许差别。

   操作系统

  • 开发WP8.X最低要求是Windows 8.X专业版以上,如果要用Hyper-V的话,还需要64位。

    IDE

  • 建议直接安装Visual Studio 2013,直接内置WP8的SDK。VS2013的Update2则带有WP8.1的SDK。
  • 安装的时候注意把Blend勾选上,它是开发XAML的利器。

基础概念

Windows Phone 的手机版本

  • Windows Phone 7.x,已被微软抛弃,不能升级到Windows 8.x。故也不做过多讨论。
  • Windows Phone 8.x,向下兼容Windows Phone 7.x开发的应用。

Windows Phone 的官方资料:

  • 开发文档
  • 开发示例


Windows Phone 开发基础

  • 开发语言
    • C#,开发应用的首选,开发资料较多。
    • C++/CX,开发3D游戏的首选,以及不熟悉C#的选手也可以用它开发普通应用。
    • HTML+JS,有web开发基础的开发者首选(但是较小众,个人不推荐)
  • 开发库
    • 对于Windows Phone 8.1,可用的类库有两大块:大量为WP准备的Windows Runtime 和 少量为WP准备的.NET。
    • 在上述两个库出现相同功能的API的时候,优先使用Windows Runtime,因为在移动设备上,它才是未来(千秋万代一桶浆糊)。
    • 少数C++选手还可以使用个别的Win32 API。
  • UI技术
    • Windows Phone 8.0之前一直用的是基于Silverlight的XAML技术作为UI展现。WP8.1仍然有部分延续,但个人建议不要再追随【已死的】Silverlight。
    • Windows Phone 8.1之后开始采用基于Windows Runtime的XAML技术作为UI展现。这两种XAML大致相同,但主要控件有不少的区别。
    • Windows Phone8.0就开始支持Direct3D 11开发游戏,而从8.1之后开始支持Direct2D和DirectWrite的直绘。但是要注意:不支持OpenGL(仅支持部分的WebGL)。
  • 关于XAML
    • XAML是一种类XML方式的定义界面的技术,不仅可以定义布局和其中的控件元素,设置控件的属性,事件,还可以直接绑定数据。
    • 学习XAML可以先从布局控件开始,然后是一些简单的文本控件,按钮控件,选择控件和操作栏控件。最重要的是数据列表控件,因为涉及到性能优化、数据绑定、自定义模板,动画等。
  • 关于数据存储
    • 数据可以存储在应用内,与其他应用完全隔离。使用ApplicationData类。
    • 数据库,推荐使用SQLite,但是要注意SQLite的读共享,写独占的线程/进程特性,以及一些性能优化的Tips。
    • 也可以存储在公共区域,如图片,视频,音乐,下载等。使用KnownFolders.XXX来访问。
    • 还可以放在云端在多个设备间同步。可以使用Azure,OneDrive(一定容量的免费)或其他云存储。
  • App的生命周期
    • Windows Phone 8.0 App的生命周期
    • Windows Phone 8.1 App的生命周期
  • 打包
    • 在项目上右键某个菜单上就可以生成appx包。没屁事不要生成AnyCPU模式(WP手机现在只有高通的ARM平台),被反编译了不要说没提醒你。
    • 注册开发者账号(19刀1年),具体细节就不表了,最好有一个招行能够全球通用的信用卡。
    • 发布应用。

Windows Phone 开发进阶

  • 关于磁贴(tile)
    • 这是一个倍受争议的东西,喜欢的人喜欢的不行,讨厌的人讨厌的不行。
    • 它有N种尺寸。
    • 它有N种模板。
  • 后台进程
    • 普通WP应用只能创建有限运行时间和功能的后台进程(与苹果类似)。
    • Windows Phone 8.1的后台任何可以由某个条件触发启动。
  • 进程间通信
    • 可以关联某个文件扩展名。
    • 可以注册某个URI处理协议。
    • 也可以分享给某个应用。
    • 传统的IPC方式:比如注册表,文件,内存块,socket什么的不适合用于普通App。
  • 多媒体
    • 图片处理。可以使用原Nokia的SDK。
    • 视频处理。如果只是简单的裁剪什么的,可以使用自带的MediaClip类。要做编解码什么的还是用Media Foundation吧。
    • 音频处理。先看一下支持的格式,免得瞎许诺了实现不了被老板骂。
  • 地图
    • 推荐使用Here地图的基础地图数据服务和一些数据查询服务。
    • 还有高德。
  • 各种传感器
    • 加速计,指南针,陀螺仪,倾斜仪,光感等。
    • 可以参考施烱的一篇好文。
  • 通信
    • WiFi Direct,不用借助路由器的点对点通信。WP8.1以后支持。
    • 蓝牙4.0,低功耗,距离长,Profile多,可穿戴设备普遍采用。
    • NFC,叫了几年也没起来的东西,个人不怎么看好。
  • 前瞻
    • 如果你是新开发者,建议直接选择基于Windows Runtime的WP8.1 App模型。
    • 如果你要迁移WP8.0的应用,时间充裕的情况下,建议也直接迁移到基于Windows Runtime的WP8.1 App模型。
    • 如果你非要迁移到基于Silverlight 8.1的WP8.1,不方便与Windows 8.1共享代码不说,SL目测将不再维护。
    • WP8.X将还会有几个 GDR X,多数会是基于高通平台的硬件更新之上的更新。
    • 目测在未来的WP9上会与Windows9更好的共享代码,也许App可以直接互运行了就。

设计

分辨率

  • 总的来说,分为15:9,16:9,16:10。
  • 按绝对分辨率来说的话,从480*800,480*854(用于3个软物理键),到768*1280,720*1280,800*1280,再到1080P,后续可能还有2K和4K。(也慢慢碎片了)

我也只懂点分辨点,交互设计和视觉设计完全不懂,提供几个链接吧

  • 设计guide line,这个要么好好的理解,要么就随便看一下就行了,否则半瓶水的功夫只能设计出让人感觉都是“大色块”的应用。
  • 交互模式
  • 视觉参考
  • 可用资源
  • 从Longlistselector到SemanticZoom的变化
  • 从Panorama到Hub的变化

其他

  • WP 开发者生存现状
    • 个人开发者:大部分入不敷出,为了养家糊口加点广告,还要被骂。
    • 一线互联网App开发者:版本更新缓慢,升职加薪无望,跳槽机会少。
    • 二三线互联网App开发者:没有话语权,迷茫,面临转平台的威胁和诱惑。
    • WP手机厂商App开发者:原Nokia北京的应用部门几乎被微软一锅端。
  • 销往的国内WP厂商现状
    • 微软移动(原Nokia):唯一一家真诚地坚持WP的厂商,然而在近半年来一直没有新机发布。930叫了一年了到现在影子也没看到。
    • 三星:WP7时代动作很大,WP8只出过一款Ativ S,骗完了安卓的专利费就不干了。
    • HTC:8S和8X是现存仅有支持电信的WP手机,恐怕现在也只有二手了。
    • 中兴/华为:低端的W1和W2之后也再无音讯。
    • 海信:不声不响地就发布了WP8.1的机器,并且将在本月上市。暂不说质量,先赞一下其效率。
    • 联想:一直在传,却一直未发布。该说什么好呢?
    • 酷派/金立/TCL/天语:据说都将会发布自家的WP8.1手机,还是很值得期待的。
  • 呼声
    • 期望此次裁员能狠狠地鞭笞微软这头龟。最起码每半个月能发布些利好消息。
    • 从WP7坚持到现在的WP小伙伴们的耐心和信心已经快被消耗殆尽。希望在哪里?
    • 说好的在action center中直接开关3G呢?
  • About me
    • 微软平台开发者
    • WP开发者

后记:

欢迎各位向我推荐一些好的WP Blog文章,以充裕本文中的一些空缺链接和段落。

如果你觉得本文对您有用,请点赞。

欢迎转载,但请标明出处。