前几天看一哥们写的“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的生命周期
  • 打包
    • 在项目上右键某个菜单上就可以生成appx包。没屁事不要生成AnyCPU模式(WP手机现在只有高通的ARM平台),被反编译了不要说没提醒你。
    • 注册开发者账号(19刀1年),具体细节就不表了,最好有一个招行能够全球通用的信用卡。
    • 发布应用

Windows Phone 开发进阶

  • 关于磁贴(tile)
    • 这是一个倍受争议的东西,喜欢的人喜欢的不行,讨厌的人讨厌的不行。
    • 它有N种尺寸
    • 它有N种模板
  • 后台进程
    • 普通WP应用只能创建有限运行时间和功能的后台进程(与苹果类似)。
    • Windows Phone 8.1的后台任何可以由某个条件触发启动。
  • 进程间通信
  • 多媒体
    • 图片处理。可以使用原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文章,以充裕本文中的一些空缺链接和段落。

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

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

Windows Phone 8.1 学习之路的更多相关文章

  1. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

  2. [精品书单] C#/.NET 学习之路——从入门到放弃

    C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...

  3. ReactNative新手学习之路01-创建项目开始

    新手学习之路01-创建项目开始 小菜鸟准备学习RN开发,决定写下自己的学习历程,方便其他也想要学习RN的人,后期会持续更新写下自己所有学习经历,一步步从菜鸟成长成业内高手.开发环境准备,本文默认环境已 ...

  4. Linux内核学习之路

    每当学习到一定阶段自己觉得还行时,就会搜一些别人的文章. 这篇文章是原作者14年3月写的.转过来与自己共勉.学习累了就换着学也挺好 原文: 现在回首看看,接触Linux已经很长时间了. 在大三的时候开 ...

  5. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  6. jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com) - Web前端学习之路

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  7. Git学习之路(2)-安装GIt和创建版本库

    ▓▓▓▓▓▓ 大致介绍 前面一片博客介绍了Git到底是什么东西,如果有不明白的可以移步 Git学习之路(1)-Git简介 ,这篇博客主要讲解在Windows上安装Git和创建一个版本库 ▓▓▓▓▓▓ ...

  8. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  9. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

随机推荐

  1. Firefox浏览器 页面滑动卡帧问题

    在设置里关闭"平滑滚动"选项即可,猎豹似乎没有,遭黑

  2. jade在命令行实时编译

    jade文件: doctype html html head title jade study body h1 imoock jade study 在jade文件夹下,终端输入 jade index. ...

  3. 【转载】刘昕明:送给和我一样曾经浮躁过的PHP程序员

    刘昕明:送给和我一样曾经浮躁过的PHP程序员 来源:刘昕明博客 作者:刘昕明         2012年偶决定开始写博客了,不为别的,就希望可以通过博客记录我的成长历程同时也希望可以帮助一些刚毕业,刚 ...

  4. elsevier期刊要求翻译

    百度文库 http://wenku.baidu.com/view/e20a27e84afe04a1b071de4e.html 官网文档 http://www.elsevier.com/journals ...

  5. HTTP head meta

    HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应.就整个网络资源传 ...

  6. IE 兼容模式 设置 Meta Compatible 和 Iframe 子页面的关系

    背景 因为历史原因,之前很多的系统都会是 顶级页面+Iframe来加载子级页面的这种模式构件系统,而且系统都只能运行在IE6或者IE 高版本兼容模式下(IE 7模式). 随着现在的审美原来越高,脚本能 ...

  7. 顺序语句:GOTO和NULL语句

    一 标号和GOTO 1 语法: PL/SQL中GOTO语句是无条件跳转到指定的标号去的意思.语法如下: GOTO label;......<<label>> /*标号是用< ...

  8. SQL基础语句汇总

    连接数据库 1 mysql -h10.20.66.32 -uroot -p123456 -h后面是mysqlServer所在地址,-u后面是用户名,-p后面是密码 查看数据库 1 show datab ...

  9. ElasticSearch High Level REST API【7】聚合

    获取平均值聚合示例,最大值.最小值.求和类似 public void aggregation(){ RestHighLevelClient client = elasticClient.getRest ...

  10. Struts2基础入门

    Struts2基础入门 创建一个web工程 0)导包并且创建一个核心配置文件 <?xml version="1.0" encoding="UTF-8"?& ...