马宁的嵌入式开发研究

Windows Phone, XNA, Windows Embedded, Windows Mobile
posts - 80, comments - 676, trackbacks - 17, articles - 0

作者:马宁

俗话说,物极必反,Windows Phone就像中国足球队一样,在所有人对他失去信心的时候,突然灵魂附体、RP爆发,干掉了韩国队。当然,就像东亚四强赛说明不了问题一样,MIX 2010上炫目的Demos只是过眼烟云,真正考验实力的还是几个月后世界杯的战场。

不过MIX 2010上的Demos的确给了曾经的Windows Mobile开发者们带来了一丝希望,最近一年,满世界都是iPhone和Android,咱不是不想说话,实在是没话可说啊。MIX 2010 Keynote视频:

http://www.microsoft.com/presspass/events/mix/videoGallery.aspx

Windows Phone开发工具也可以在MSDN上下载了,下载地址:

http://www.microsoft.com/downloads/details.aspx?FamilyID=2338b5d1-79d8-46af-b828-380b0f854203&displaylang=en

这里边已经包含了Visual Studio 2010 Express for Windows Phone, Windows Phone模拟器, Silverlight for Windows Phone和XNA 4.0 Game Studio。只要安装这一个文件就可以了,不用满世界乱找了,不过是在线安装,网络不快的同志们要淡定。

Windows Phone开发工具只能和VS 2010 RC版本一起使用,我安装了Visual Studio 2010 Premium版本,能够正确创建Windows Phone工程。

MSDN上关于Windows Phone开发的章节:

http://msdn.microsoft.com/en-us/library/ff402535(VS.92).aspx

打开VS 2010后,我的感觉喜忧参半,喜的是Windows Phone提供了两种不同的开发平台:Silverlight for Windows Phone和XNA 4.0,忧的是,以前Windows Mobile的C++和.NET Compact Framework都用不上了。所以,以前的Windows Mobile程序员也要经历一个痛苦的转型过程。

接下来,我们就看看Windows Phone带来的双重惊喜吧!

Silverlight for Windows Phone

Silverlight for Windows Phone险些沦为一个笑话,Windows Mobile程序员在抱怨,Symbian上的Silverlight都出来了,Windows Mobile上的Silverlight在哪里?这次,Silverlight for Windows Phone来了,而且所有Windows Phone上的应用必须用Silverlight来写。

在程序菜单的XNA Game Studio 4.0下打开VS 2010,创建一个新工程,在Visual C#下找到三个模板,选择”Windows Phone Application”。

silverlight1

不知道Phone List Application是啥,看起来Windows Phone的界面会以List为主了。点击OK后,会直接进入IDE的主界面:

silverligh2

似曾相识,左边是工具栏,可以拖拽控件到UI设计器上,与XAML界面对应。我拖拽了一个Button和一个TextBox上去。双击Button,进入了代码编辑器。

namespace WindowsPhoneApplication1
{
    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();

            SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
             MessageBox.Show("Hello, Windows Phone," + textBox1.Text);
        }
    }
}

请原谅我的没创意,Hello World灵魂附体!必须承认,Windows Phone开发工具的设计者用最大的诚意保留了.NET CF WinForm开发的痕迹,至少让我们用起来不是那么别扭。

编辑完成后,直接按F5,Windows Phone Emulator会被启动。整个过程没有任何拖泥带水,这是我感觉最好的一件事。当初配Android模拟器时那一大堆选项,让我实在有些不爽。

我的程序运行起来就是下面这个样子。MessageBox弹出来后,会有一个大大的Error标题,看起来MessageBox在Windows Phone里主要是用来显示错误的。另外就是输入法,带有明显iPhone的痕迹,不过对电容屏的支持看来不是问题了。

我还没有仔细看Windows Phone Emulator的实现机制,不过从启动速度来看,绝对不是把整个Windows Phone放在模拟器里执行了。原来Windows Device Emulator那个基于三星2410的小身板估计也跑不起来。反正也是Managed Code,估计又是JIT编译那套。恍惚间,仿佛回到了Pocket PC 2002的年代。

wphone

Windows Phone新界面

既然把Windows Phone Emulator起来了,我们就顺便参观下Windows Phone的新界面吧。点左边的Back键,会将应用程序的Debugger断掉,不知道程序是否退出了。点中间的Win Button,会回到主界面。不过主界面上只有IE一个图标。

旁边一位同事看了后,脱口而出:“这不是Zune吗?”嗯……

clip_image008 clip_image010 clip_image012

 

IE的用户体验非常好,一开始新手发蒙,没找到地址栏,后边就非常顺利了。无论是页面缩放时的平滑动画,还是输入时切换到适当大小的设计,都非常顺手。特别是Multi-Tab的设计,感觉非常舒服。特意试了Google Map,显示一切正常。

哦,还有一点,我在Windows Phone Emulator里没有做任何配置,就可以上网了。

XNA 4.0

可能移动开发者不熟悉XNA的名字,但是在游戏开发界,Xbox 360上的XNA则是大名鼎鼎。如今,Windows Phone一上来支持的就是XNA 4.0,与Zune HD上的XNA 3.1有啥区别?支持3D游戏!

目前我们看到的这个XNA 4.0预览版只支持Windows Phone开发,不支持Windows和Xbox 360的游戏开发(根本没Zune HD什么事……始乱终弃?)。

不那么多废话了,创建个XNA 4.0的新工程吧!

xna1

选择Windows Phone Game就好了。IDE环境下没有界面编辑器,需要程序员通过代码来实现UI,在这里我就不写代码了。默认程序运行起来是一个空白的窗体。就让它空着吧。未来,我们还要在这里写很多东西……

clip_image016

写在最后

趁着中午的功夫,匆忙地试了一下Windows Phone 开发工具,匆匆写下此文。心中最多的还是感慨,我们不应该将Windows Phone视作Windows Mobile的升级了,这是一个全新的手机操作系统。Windows Phone的功能可能没有Windows Mobile丰富,但是他赢得喝彩,靠的只有四个字——用户体验。

凤凰涅磐,Windows Phone的路还很长,但是我们这些紧紧追随的开发者们,要得不就是对未来的一丝憧憬吗。

Feedback

#1楼  回复 引用 查看   

2010-03-16 13:30 by 麦舒      
不支持多任务,不爽呀。

#2楼  回复 引用 查看   

2010-03-16 13:42 by Phinecos(洞庭散人)      
android,chrome,google现在是对着微软全面开火啦,疲于招架。。。

#3楼  回复 引用 查看   

2010-03-16 13:45 by egmkang      
额...怎么不支持C++了
我看WP7的主页上面不是写着XAML C++ API么
这哥们就装了c#

#5楼  回复 引用 查看   

2010-03-16 13:59 by AlexLiu      
有store了么?
开发了程序怎么卖啊。
这个操作系统还有很长的路要走啊。

#6楼[楼主]  回复 引用 查看   

2010-03-16 14:19 by 马宁      
有Marketplace了,但是注册里没有中国大陆,只有香港和台湾。

我装了VS 2010的C++,至少目前这个版本,确实没有Windows Phone的C++支持。

#7楼  回复 引用 查看   

2010-03-16 14:21 by egmkang      
WP7提供的是Managed平台,不晓得Native的程序员以后要干啥,难道都要去学C#???

#8楼  回复 引用 查看   

2010-03-16 14:31 by Angel Lucifer      
老实说,俺非常喜欢 WP7 。老激动了,呵呵。

#9楼  回复 引用 查看   

2010-03-16 14:33 by egmkang      
http://forum.xda-developers.com/showthread.php?p=5893033
差不多要失败鸟
居然连Native Coding都不支持

#10楼  回复 引用 查看   

2010-03-16 14:48 by 时永安      
希望MS这次能成功。

#11楼  回复 引用 查看   

2010-03-16 14:55 by 渠宏伟      
只注重界面绚丽,不照顾旧版本兼容性
恐怕和Vista一样的命运
但还是支持WP7

#12楼  回复 引用 查看   

2010-03-16 15:02 by yyww      
C#/WPF/ Silverlight程序员一大堆为啥要支持开发速度慢的C++.

#13楼  回复 引用 查看   

2010-03-16 15:05 by BenBen789      
鄙人目前做WinCE/WM下开发,但不会C++,只会用C#,所以只做最上层的应用。
另外,熟悉开发Silverlight,不知道将来能不能转到Windows Phone上来。
听说Windows Phone支持A-GPS,有点小兴奋。

#14楼  回复 引用 查看   

2010-03-16 15:06 by yyww      
引用渠宏伟:
只注重界面绚丽,不照顾旧版本兼容性
恐怕和Vista一样的命运
但还是支持WP7


考虑到当前的Windows Mobile市场占有率,以及趋势,MS做出了正确的决定,抛弃过去的包袱,革命性的前进。

#15楼  回复 引用 查看   

2010-03-16 15:25 by zisehudie      
我觉得 既然要改革就干脆抛掉包袱好了
如果一定要兼容老版本
估计就会是一个四不像了~~

#16楼  回复 引用 查看   

2010-03-16 15:31 by yyww      
Scott 昨天也说了“It is not silverlight different, it is not Silverlight Lite, It is Silverlight". 所以Windows Phone支持的真正的Silverlight, 不过有点可惜的是目前只支持Silverlight 3+手机特性。

#17楼  回复 引用 查看   

2010-03-16 15:34 by 水果阿生      
老马,我英语不好,听了一下,但是好多都不明白,你看看我的理解是不是有问题?
1、没有真正的多任务
2、只能通过软件商店安装应用
3、不能插存储卡
4、无法访问文件系统(软件只能访问他们自己专属的目录)
5、没有USB大容量存储模式
6、无法设置默认程序(例如你可以安装Opera,但是无法成为默认浏览器)
7、没有第三方界面
8、无法编写本地代码(拜托!webos都悔悟了!)
9、没有手机直接联机玩的游戏(都要服务器)

#18楼  回复 引用 查看   

2010-03-16 15:42 by egmkang      
@水果阿生
http://forum.xda-developers.com/showthread.php?t=647239

#19楼[楼主]  回复 引用 查看   

2010-03-16 15:58 by 马宁      
兼容老版本的结果就是Windows Mobile 6.5.3
个人感觉,不一定对,Windows Phone肯定是去和iPhone拼命的,所以要求的是软件与硬件的高度统一,估计以后每家出来的Windows Phone应该不会有太大差别,至少从用户体验上来说。
而高端手机之下,还有很大的市场空间,恐怕要用另外的系统来弥补,增加OEM的可定制性,保持与原有程序的兼容性等。
@egmkang
有意思 也不知道j2me 现在生命力多强
几乎可以确认 sl要当m$版本的j2me了 不知以后支持多少平台呢

#22楼  回复 引用 查看   

2010-03-16 16:18 by 水果阿生      
@韦恩卑鄙 v-zhewg @waynebaby
我觉得sl要想走的远,还是要培养用户适应自己的使用习惯。
而现在sl还没有固定一套使用习惯。比如它到底的各种操作是drag&drop为主,还是原来那种点击点击为主。
另外就是开发工具和版本的稳定性很重要,其实用户关心的特性,我认为到SL4已经基本上都差不多了。

#23楼  回复 引用 查看   

2010-03-16 17:03 by hoodlum1980      
如果不能用C++就太悲剧了。~.~
@水果阿生
我悄悄地嘀咕:咱去山寨iphone的使用习惯吧 灭哈哈

#25楼  回复 引用 查看   

2010-03-16 19:20 by airwolf2026      
@马宁
俺也插嘴下.俺同意你的统一起来哈.包括硬件,iPhone能成功,我觉得就在于统一硬件平台,统一软件sdk什么的.
android搞的有点symbian的感觉了....
引用一文章"关于iPhone平台开发生态我的看法"
http://tiny4.org/blog/2010/03/iphone-developer/comment-page-1/#comment-354

#26楼  回复 引用 查看   

2010-03-16 19:56 by 侯伯薇      
我觉得现在评论Windows Phone是否能够成功为时尚早,时间会说明一切的。
但是,感觉现在的开发更接近于传统的Windows开发,这样必定会有更多的人来开发Windows Phone的程序,而不是像之前那样曲高和寡,这可能也正是微软想要的效果。

#27楼  回复 引用 查看   

2010-03-16 20:55 by 施炯      
就让Windows Phone灵魂附体一次吧。
对于开发者来说,看样子不得不接受痛苦的转型过程了。

#28楼  回复 引用 查看   

2010-03-16 21:52 by SnakeWind      
咱的旧DX9显卡还不能用T_T

#29楼[楼主]  回复 引用 查看   

2010-03-16 23:33 by 马宁      
说点不好的,我觉得Windows Phone潜在的软肋可能在下面几个方面:
1,性能,目前看到的配置基本都是1G CPU,256M内存,支持图像硬件加速。与性能对应的就是资源的消耗,HTC要配1800mAh的电池,不知道能撑多长时间,肯定不是超长待机。
2,Silverlight和Managed code都是消耗内存的大户,内存就意味着电池的消耗;
3,OEM厂商,如此强大的硬件,没有几家可以提供,势必造成一批中小OEM厂商的出局。除了HTC等大型OEM外,OEM的利益恐怕无法得到保证;
4,Marketplace,一切的服务都是Online Service,这是未来的趋势,但是现实的局面是,每个国家的运营商都有准入限制,能否提供全球统一的服务,还不知道。谁敢说中移动不会说,你如果不内置飞信,我就不让你入网……

#30楼  回复 引用 查看   

2010-03-16 23:49 by ethos_秦朝      
Windows Phone 7 是项庄舞剑,意在沛公。我觉得微软会免费提供win phone 7,这里是我的分析, 大家评评看:http://blog.csdn.net/ethostech/archive/2010/03/16/5387132.aspx

#31楼[楼主]  回复 引用 查看   

2010-03-17 01:14 by 马宁      
@ ethos_秦朝
大作已拜读。
首先,很多WM7核心的架构师和项目经理来自Windows 7, XBox 和Zune开发团队,这是事实。
IE团队发睡袋的事情肯定不会发生在Microsoft,这个桥段,倒很像国内某家公司的风格(当年和他们合作时,他们还是瑜伽垫)……这么大的项目靠加班是加不出来的。
其次,Windows Phone不会免费,更不会开源。智能手机产业链与PC产业链完全不同,IE不收费是因为Windows和Office挣钱,而Windows Phone对于手机产业链来说,是目前唯一的获利方式。
通过Service和广告收费的模式的确很好,是未来的模式,我同意。但是光靠广告能够支撑一个操作系统的研发吗?至少目前还不行。况且,互联网服务受政策和运营商影响太大,Google不也想通过Android来推广自己的服务吗?
可是,你的服务,如果通过运营商那一关?Google Map够好了吧?中移动定制的Android手机上有吗?
所以,在今后一段时期内,操作系统免费,唯一的结果就是:替他人做嫁衣。至少Windows Phone 7是不会免费的。

#32楼  回复 引用 查看   

2010-03-17 08:51 by 阿水      
XP不能安装吗???

#33楼[楼主]  回复 引用 查看   

2010-03-17 10:04 by 马宁      
不能,只支持Win7和Vista SP2以后。总比iPone开发让你买台iMac强。

#34楼  回复 引用 查看   

2010-03-17 11:18 by dino623      
http://msdn.microsoft.com/en-us/library/ff402526(VS.92).aspx
Creating Your First Silverlight Application for Windows Phone

这个几乎完全是常用的Silverlight,也就是说Silverlight程序员几乎完全不需要学习就能编写WP7的应用。
另外,Silverlight在界面方面确实比较容易作出华丽的东西,开发效率也高,据说SL4执行效率也能提到200%,抛弃就有的模式支持Silverlight是个重大的决定。但是硬件能支持得起来吗?

#35楼  回复 引用 查看   

2010-03-17 13:09 by 王克伟      
哈哈,支持,居然错过了这篇文章。
这次WP7有点铤而走险了

#36楼  回复 引用 查看   

2010-03-17 14:37 by 王喆(nasa)      
还是在这里拜读马宁老师的文章好~

这里有几个版本的sl比较
http://firstfloorsoftware.com/blog/the-silverlight-definitive-diff-lists/

#37楼  回复 引用 查看   

2010-03-17 15:01 by JimLiu      
估计到头来还是会提供NDK的……

#38楼  回复 引用 查看   

2010-03-18 16:19 by 潜龙游水      
Device Application用asp.net是不是就可以编写啊?还是用其它的语言?
求助一下!

#39楼  回复 引用 查看   

2010-06-02 14:11 by 指尖的奇迹      
喜欢WP7,喜欢它的简洁而不简单。