Meizu M8 SDK 开发之准备前记

Meizu M8 SDK 开发之准备前记
2010年10月06日
  Meizu M8 SDK 开发之准备前记:
    本系列面向读者对象为有一定开发基础的开发者,对M8开发的全局概览性描述,故在某些细节问题上可能会简要带过,建议其它有时间的开发者针对C、C++及WinCEAPI的细节问题发布一些教程,帮助初学者入门提高:)
  开发环境:
    软件 Vistual Studio 2005 SP1以上 + M8SDK0.9.3
  (居然不支持Visual Studio Express版本,没办法,Express不支持嵌入式开发,老比尔靠这个赚企业级用户的米呢,所以别骂Meizu,使用了WinCE的方案,从硬件到软件到开发平台全受限了哈,如果是基于Linux的,肯定能自己定制免费的开发环境,但可能就不是Meizu的软件工程师能应付的了,现在的M8SDK是基于WinCE SDK的厂家定制模板,如果是基于Linux,就更难发布SDK更难移植软件更没开发人员参与更不适合国情了哈――省去N多字~~~)
    硬件 最好是“主流”配置机型,VSS占资源的特点摆那呢,分辨率要至少1280x800的,毕竟M8是720x480的分辨率,再加上模拟器皮肤,占用巨大的屏幕空间,而且占用资源暴大,下面有解决方法;
  知识要求:
    C、C++,最好开发过VC6 MFC或WIN32API应用或其它嵌入式平台――反正不是拖控件写程序的RDE环境^_^,也就是说,MZFC提供的一个类似MFC的开发库,没法让你快速拖控件来快速开发,界面的所有****显示你都得自己算坐标,所有的控件事件你都得自己重载MZFC基类虚函数去接管处理――至于WINCE的.net库,虽然可用,而且M8的空闲内存也达到100多M之“巨”,但由于无法应用M8的原生界面,除非是写全屏程序,如游戏或全部用图片替代标准UI的程序,否则建议直接用MZFC的UI库,保证效率、稳定及界面的统一性;
    至于另外一点,就是WIN 32的基本API和常用数据结构要了解,比如字符串特别是Unicode字符串的处理(CE不同与WINDOWS,所有字符都是Unicode化了),文件,Socket,XML之类的,COM会调用Meizu提供的COM接口就可以了,不用深究(个人不喜欢Windows的COM实现),MZFC提供的UI库的使用类似MFC并且更简单,而高级接口都是基于COM调用的,知道COM接口的查询、执行和返回值处理流程就差不多了(已经有位M8开发者放出了系列教程里,描述了COM的简单使用方法,说的也比较明白了值得参考);
  开始Hello M8程序:
    安装完成M8SDK后可以看到有一个Samples目录,里面有主要的示例,第一个就是类似HelloM8的程序,直接打开工程文件即可,如能成功编译,则表示环境已经搭建成功,否则就要检查开发环境的安装配置了,正常情况下不会有异常,直接可用;
    浏览代码,可以看到,主要代码是继承MZFC的程序APP基类(负责初始化和销毁应用和窗体的全局管理)和窗体WND基类(负责窗体的显示和事件接收处理),重载窗体的事件处理虚函数,完成控件操作事件的实际处理工作和其它控件窗体的创建、管理和销毁即完成了,相比当年的VC6 MFC开发,MZFC提供的界面UI控件的使用和消息处理还是比较简单的了,关键代码摘要:
  class CSample1MainWnd: public CMzWndEx
  m_btn.SetButtonType(MZC_BUTTON_GREEN);
  m_btn.SetPos(100,250,280,100);
  m_btn.SetID(MZ_IDC_TESTBTN1);
  m_btn.SetText(L"Hello MZFC!");
  m_btn.SetTextColor(RGB(255,255,255));
  AddUiWin(&m_btn);
  virtual void OnMzCommand(WPARAM wParam, LPARAM lParam)
  {
  UINT_PTR id = LOWORD(wParam);
  switch(id)
  {
  case MZ_IDC_TESTBTN1:
  {
  if(1 == MzMessageBoxEx(m_hWnd, L"You have pressed Exit button, Really want exit?", L"Exit", MB_YESNO, false))
  PostQuitMessage(0);
  }
  break;
  }
  }
  class CSample1App: public CMzApp
  {
  public:
  CSample1MainWnd m_MainWnd;
  RECT rcWork = MzGetWorkArea();
  m_MainWnd.Create(rcWork.left,rcWork.top,RECT_WIDTH(rcWork),RECT_HEIGHT(rcWork), 0, 0, 0);
  m_MainWnd.Show();
  运行和调试:
    直接F5编译执行示例工程1,会打开模拟器来执行,如果你能全屏显示模拟器并感觉非常快速,恭喜你,你的电脑很“先进”,呵呵,一般情况下,我们需要进模拟器的配置中,启用视频模式而不是皮肤模式,这样可能能全屏显示全部M8模拟器的操作界面了(但按键没了,不过大多数时候都尽量是触摸控制的,按键倒也不常用除非是一引起系统级的工具软件哈),不然,你可以还要旋转一下界面,才能正常显示,不过接下来你要歪着头调试了^_^~~
    如果你用的是上网本或古老的小分辨率的显示屏,或者模拟器的速度让你抓狂,你最好还是直接用M8真机来调试吧,还是那句,别骂Meizu,这个SDK和模拟器是基于WinCE解决方案的,不是Meizu能控制的:)
    要启用VSS与M8真机的联机调试,需要M8已经与本机建立同步关系(来宾方式不行,一定要是同步成功连接),M8的项目工程的调试目标设备有两种,一个是M8SDK Emulator,一个是M8SDK ARMV4I Device,其中后一个已默认配置好使用ActiveSync连接进行真机进行调试,只需要注意选中这个目标并点击后面的连接到设备按钮即可,提示成功连接后,可以在M8上打开程序管理器看到edm.exe守护进程,这就是WinCE的远程调试连接器,不要关了它,然后选择编译为Release或Debug即可运行调试了(如果连接失败,还是会转用模拟器调试运行)――这里特意试了下在Debug断点模式时打电话进来,还好,没有犯笨错误,Debug不会锁死手机,呵呵,但尽量还是建议在飞行模式或电话不繁忙时调试吧,以免误事;
    实际测试下来,无论是模拟器还是真机,速度都很好(模拟器只是占用内存多启动慢,进入调试时还可以),单步跟踪也流畅,这倒算是WinCE嵌入式平台开发的一惯优势,比嵌入式Linux没有一个统一的远程调试方案要好很多,这种真机调试情况下,普通上网本倒是应该也可以正常开发调试了,不过屏幕还分辨率还是个问题哈,小心保护眼睛~~
    注意:虽然是调试,但在M8上按M键还是会直接终止掉程序的,所以调试时最好解锁设备并不要随便按M键,特别是Debug模式时,以免机子异常哈~~
  学习进阶:
    首先当然是要通读官方的文档(大概了解一下,具体的使用时再详细看),其中:
    Meizu M8 MZFC Documentation (CHS).chm是MZFC描述,主要是界面控件元素的定义和使用方法,包括简单示例的代码,为了保证所有应用的界面一致性,建议开发者尽量使用该库提供的界面元素;
    Meizu M8 COM Documentation (CHS).chm则是COM接口描述,主要是提供第三方应用程序使用现有的Meizu内置功能的接口,比如文件浏览器照片读取显示等,简化开发者工作,当然,你如果认为官方的功能不好用,比如图片读取要支持更复杂的格式文件浏览选取界面要更酷些,你可以自行开发你自己的原生库,跳过官方的COM库哈;
    最后一个Meizu M8 PlatformAPI Documentation (CHS).chm则是平台API,简单的说就是官方封装的主要与系统软硬件资源直接交互的接口,比如马达,重力感应器等,当然,如果你比较牛也可以直接汇编控制硬件哈~~~
    其次就是动手把官方示例都调试一遍并按MZFC文档的描述多试验几个示例里没用到的控件,熟练了即可,以后可以随用随查;
    期间也可以参考M8现有优秀程序的开源代码,这里只公布几个采用SVN管理源码的(具体SVN怎么用Baidu,Google一下吧),分别是desktopM:http://svn.w18.net/svn/desktopm【需要到该源码管理平台注册账号才能检出源码】和飞鸽:http://m8ipmsg.googlecode.com/svn/trunk【Google的源码管理平台,可以匿名检出代码】,这两个应用基本覆盖了常用的界面,文件,网络,注册表等开发知识,非常好的入门参考材料,再次感谢原作者^_^
    
    然后,就是收集分析软件需求,开始你的第一个M8软件开发吧,祝M8开发之旅愉快
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值