以前对手机开发一无所知,现在决定好好学习一下这门最有前途的技术。

因为自己手头有一台诺基亚5530XM的智能机,所以决定学习Symbian S60v5的开发技术。

一、安装配置开发环境

1. 首先从eclipse的官网www.eclipse.org下载了最新版的eclipse pulsar。这是eclipse专门为移动开发者提供的IDE。直接解压缩到我的D:/Program/mobile下了。

2. 从诺基亚论坛http://www.forum.nokia.com/下载了最新的S60v5的SDK。全名是S60_5th_Edition_SDK_v1_0_en。

3. 花了近二十分钟才把这巨大无比的SDK安装完成,也装在了D:/Program/mobile/下。安装手册中要求路径中没有空格,这点我注意了。诺基亚的软件只能给一个字,烂!安装向导里自定义安装时所需磁盘空间始终为0。而且进度条严重不正确,过完99%才花了一两分钟,而最后的1%却花了十多分钟才装完,都不知道安装了多少.rXX文件。唉,以后磁盘碎片又超多了。

4. 安装过程中会要求指定eclipse的路径,我选择了刚安装的eclipse pulsar。不过后来后悔了,还是应该先装好Carbide C++,然后指定到Carbide C++自带的eclipse目录下的,毕竟以后主要还是想学symbian C++的开发,javame只是玩票。安装最后又会问是否安装CSL ARM ToolChain。不知道是个什么东西,看到安装手册中说编译什么什么要用到,便先装上了。

5. 装完SDK后,便去开始菜单里运行那个Emulator,好,诺基亚那帮SB们干的第一件好事被我遇上了。点击运行后,可以在任务管理器中看到epoc.exe进程启动了并在狂吃内存,但硬盘灯闪了一阵后,这个进程居然就自动退出了,而且没有任何屏幕和其他征兆。只有windows无情地弹出一个应用程序错误是否报告的对话框。

于是重装SDK,又等了N久,安装完成。因为想覆盖安装,没有先卸载,结果装完发现添加删除程序里上次的v1.0还在,又多了个v1.0_2的SDK。晕倒!又把两个版本全部卸掉。再重装一次……麻木的盯着屏幕等着装完后,再次启动Emulator。失败!

于是直接上google搜索英文资料,未果。在诺基亚论坛里翻了个底朝天,没有!

6. 最终还是在中文百度上找到了一个类似案例,帖子中说Symbian的软件对路径处理很差,如果安装SDK的目录层次太多就会出现这种情况。于是再次卸载SDK,安装到D盘根目录下,因此最终的SDK主目录为D:/S60/devices/S60_5th_Edition_SDK_v1.0/。再次启动Emulator,模拟器界面终于缓慢的出来了。

最终结论是:诺基亚的开发人员实在太不专业,因为XP系统的路径名最长为255个字符,而他们的SDK里已经有很长的路径名了,所以,如果SDK的起始路径名太长(根本就是稍微长一点都不行),就会导致程序异常退出。而且这个巨大的问题,在他们的文档中只字未提。

7. 运行模拟器很慢很慢,等N久界面还没有装载完成,而且会在windows的任务栏不停的闪啊闪。

8. 模拟器终于搞定,开始配置eclipse。配置eclipse,一定要打开帮助,从JavaME的Getting start开始,一步步照着做才行。

在preference的javame中找到devicemanager,点击manual install,将刚安装的S60v5 SDK找到。

在SDK的指定目录下,要搜很长时间才能搜出Device,大家要耐心,别等不及了就直接cancel掉进程了。找到后会有两个选项。

配置好device后,再根据帮助中描述的,把debug的suspend配置弄一下,把eclipse/configuration/config.ini里添加一行osgi.framework.extensions=org.eclipse.mtj.core.hooks。

9. eclipse的帮助文档要求把debug的timeout时间改为20秒,但S60的SDK帮助文档中要求改为60秒。可见诺基亚自己也知道自己的乌龟慢啊哈哈。

10. carbide c++还正在下载中,网速太慢,下了一天还没下完,只有几K的速度。真是奇怪,同样在nokia网站下SDK,600M的SDK又一会儿下载完了。等下完了carbide c++再来记录配置方法。

二、创建第一个MIDlet项目。

因为carbide c++还没下完,决定先尝试一下javaME。

1. 根据eclipse帮助文档,创建了一个MIDlet项目。创建好的目录结构如下:

我选择了JMunit支持和localization支持,JMunit应该是用来写testcase的,localization用来指定语言资源文件,所以目录结构中有res目录和i18n包(自己指定的)。我还选择了Splash Template,创建了一个带有欢迎屏的简单程序。

2. 编译运行这个项目。然后就遇到了第二个大问题:

点击run as emulated java me MIDlet,弹出来个对话框:

到Connect to Agent的时候就停住了,并弹出来另一个异常对话框:

于是,又开始了在google和baidu的傲游之旅。找到一个方法,说是S60_5th_Edition_SDK_v1.0/epoc32/tools/ecmt/config/下的config.properties里,需要在epdt.java.version.start=1.4.1,1.4.2,1.5,5.0后面增加一个1.6。但我的SDK里已经是1.6了。所以这个不是原因。

后来想到是不是eclipse并不能自动启动模拟器啊?于是先运行模拟器在run。结果还是到connect agent就走不下去了。最后把开始菜单里的那个device connectivity tool打开,并点击connect后再运行程序。果然,connect agent居然被pass了!

终于这个Demo程序成功的在模拟器上运行起来了。

3. 在使用模拟器过程中,总是会在手机屏幕上弹出!widgetregistry的错误提示,但又不影响使用。查了一下,据说把S60_5th_Edition_SDK_v1.0/epoc32/release/winscw/udeb/widgetregistry.exe改个名字就不会报错了,这个东东是用来开发widget,因为我们一般很少开发widget,所以可以通过改名来禁用。测试了一下,果然可以。

4. 最终的splash程序效果如下图:

未完待续,先去睡觉...

三、从头开始学习Carbide C++

Carbide C++是Nokia提供的开发Symbian程序的官方IDE。我从Nokia的官网上下载的版本是2.3.0。

1. 安装Carbide C++。 安装Carbide C++还是比较顺利的。我的安装目录是D:/Program/mobile/CarbideCpp,选择了默认安装,它提示要安装的东西我全部装上了。这里只要注意一点,就是安装路径中不能出现空格。

2. 配置Carbide C++。安装完成后,打开window->Preference->Carbide C++->SDK Preferences。可以看到已经搜索到了系统里已安装的SDK。

如果系统里安装了QT库,且需要在程序中使用QT,需要在配置QT库的目录。

3. 安装完毕后,选择New->Symbian OS C++ Project,可以看到下面对话框:

最下面有两个示例项目,可以创建一个来看看。我选择了Birthdays这个项目。选择并创建后,就生成了一个完整的项目,含有源代码、图片等所有资源。

从零开始学习塞班S60v5的开发相关推荐

  1. 新手从零开始学习微信小程序开发01

    新手从零开始学习小程序开发01 文章目录 新手从零开始学习小程序开发01 前言 一.什么是微信小程序? 二.如何着手学习微信小程序 1.开发工具下载安装 2.注册账户 前言 本章主要介绍微信小程序开发 ...

  2. 从零开始学习移动端Web开发

    背景 近年来,随着智能手机的普及,移动端开发受到了异常的关注.从传统的安卓.IOS原生手机系统应用开发,转向了移动端Web开发或者是混合开发,既然有需求,那就让我们一起来学习移动端Web开发吧.本文旨 ...

  3. 从零开始学习Windows WDF驱动程序开发

    摘要:本文通过简单的例子和精简的说明,带你快速了解和掌握基于WDF架构的Windows驱动程序的开发过程.WDF自带的文档非常详细而且冗长,读者需要一定的编程基础和英语水平,再加上一定的努力,才能看明 ...

  4. python自学免费教程-怎样自学python编程?从零开始学习python,python开发入门到精通

    我做为千万个零基础自学 Python 转行程序员的成功案例之一,在自学的过程中,踩过很多坑,整理过很多非常优质的免费资料,对于新手小白来说,这些资料一定可以为你提供参考. 如果你是小白,我给你整理了一 ...

  5. 从零开始学习小程序1-1开发一个单页面小程序

    1,在本地电脑中创建一个文件夹"test",2,打开微信开发者工具 3,新建项目文件test,按以下步骤填写完整4,初始页面是这样的5,点开app.json页面,删掉原始代码,配置 ...

  6. android编程从零开始,从零开始学习android开发

    博主最近开通了Android栏目,现在正在从零开始学习android,遇到的所有值得分享的知识点以及遇到的问题将发布在这个博客的android栏目下. 因为我有着深厚的java底子,所以学习起来得心应 ...

  7. 从零开始学习嵌入式开发(ubuntu)

    从零开始学习嵌入式开发(ubuntu) 写在前面:博主的电脑是win10+ubuntu18.04 一.安装ubuntu 1.获取下载源 国内一般使用的都是清华的镜像源,网址为:清华源ubuntu下载 ...

  8. 塞班 s60v5 开发

    首先要说的是塞班S60V5的环境不好搭建,即使搭好,拿到的demo也不能编译,原因是s60v3的,哈哈哈 下面就依次说说,环境的搭建 1.ActivePerl http://www.activesta ...

  9. python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门

    原标题:Python零基础从零开始学习Python十分钟快速入门 学习Python的,都知道Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python是一种动态解释型的 ...

最新文章

  1. UICollectionView
  2. Java基础、多线程、JVM、集合八股文自述(持续更新)
  3. Android 进程常驻(使用第三方MarsDaemon)(虽然不可用,但是还是保留下。)
  4. IPSEC ×××主模式的九个包交换
  5. 编程软件python中的if用法-python 函数式编程工具
  6. 理解oauth2.0【转载】
  7. zcmu1133(dfs+判重)
  8. IIS请求筛选模块被配置为拒绝超过请求内容长度的请求
  9. 关于jquery ajax发送以及php接受json数据的一点记录
  10. Linux7/Redhat7/Centos7 安装Oracle 12C_配置VNC远程安装数据库_03
  11. vue组件通信大总结
  12. Java高级语法笔记-异常中finally的使用
  13. Windows 7系统快捷键汇总
  14. JQuery语法 JQuery对象与原生对象互转 文档就绪函数与window.onload的区别
  15. 树莓派自动备份mysql数据表_MySQL数据备份之mysqldump使用
  16. neo4j-访问提示No authorization header supplied.
  17. java 常用的时间相关转化
  18. redis 客户端操作命令
  19. CentOS防火墙配置(资源)
  20. Word怎么删除空白页?这3种方法:适用于所有版本Word!

热门文章

  1. 第17届开源中国开源世界高峰论坛文集出版
  2. Python_matplotlib保存矢量图
  3. 神经性脚臭案例整理(五)
  4. Java - 50以内所有质数 (带标签的continue)
  5. [风一样的创作]Layui图标列表,二次封装
  6. python基础(25):StringIO和BytesIO 序列化
  7. mysql数据库中的int类型_mysql数据类型
  8. 将DataFrame中的时间转换为时间戳
  9. 鸿蒙应用开发 | 文本框(Text)和编辑框(TextField)的功能与用法
  10. 机器学习算法: 朴素贝叶斯算法