S60v5 编程环境的搭建(2)

        以前自己也尝试过在搭建Windows XP下搭建Symbian S60v5系统的编程环境。(那一次也是花了不少气力~~~)怎么说呢,其繁琐的安装过程,缓慢的模拟器,十分不熟悉的IDE环境,都让人很不舒服。于是我很快投入了Qt的怀抱。Nokia Qt SDK的安装就相对方便很多,编译器运行也快。用Qt Creator的确是能很快上手开发出自己想要的小东西:)不过它也有美中不足的地方——不是所有安装S60v5系统的手机都配备有Qt运行库的。应该只有Symbian^3系统是自带有Qt库,别的系统都需要安装。这可麻烦了,一个Qt库十几MB,安装下去,把手机存储空间占用了不少。。。本来空间就不够。为了一个小程序这么大费周章实在是不值得。另外,由于很多手机没有内置Qt库,这就使得用Qt编写的程序的适用性很窄。(这也不能怪用户,那个库实在太庞大了)思来想去,别人都用Symbian C++都开发出那么多程序了,怎么就这么难呢!于是自己想再试试。

上一篇:S60v5 编程环境的搭建

==================================================================================================================================

上次由于下载软件时没有注意版本问题,使得模拟器出现各种问题,这次小心了。特地按照书里说的下了推荐版本的软件:

1.Active Perl 5.6.1 这个旧版本貌似不好找,不过网上还是找得到的。网上有人说高版本也可以,不怕麻烦的人就试试吧,这次我是小心了:)我下载的文件是ActivePerl-5.6.1.628-MSWin32-x86-multi-thread.msi 参考下载地址:http://download.csdn.net/download/olinwen/546673

2.Java SE 1.5 这个在oracle的网站上仔细找还找得到。我下载的是Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c),安装文件是j2sdk-1_5_0-beta-windows-i586.exe 参考下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5-419410.html

3.Symbian SDKs 既然自己的手机是S60 5th Edtion的体统,当然选S60 5th Edition的SDK。安装文件是S60_5th_Edition_SDK_v1_0_en。参考下载地址:http://www.developer.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html

4.Carbide.c++ 2.7 我用的是2.7版的,在官网上可以下得到。现在好像3.2版已经出来了。看了下官网的介绍,说是3.2版本不再支持S60 3rd Edition的开发,所以我还是选了旧版本。安装文件是Carbide_cpp_v2_7_en.exe 参考下载地址:http://www.developer.nokia.com/info/sw.nokia.com/id/dbb8841d-832c-43a6-be13-f78119a2b4cb.html


下载好后开始安装:

        注意:最好将以上4个软件装在同一盘符下,像我就全装在了G:\S60\目录下。不要问为什么全都要装在同一盘符下了,我知道有人说Active Perl和Java SE可以随便装,不过为了方便管理,省事儿,最主要的是安装过程错误少,还是全都安装在一起吧!经过我实验,在不在C:盘倒是无所谓,以后操作的时候注意点就行了。比如在运行模拟器时:由于我装在了G盘,而cmd默认情况下是C盘,因此要先输入G: 回车进入G盘,再执行epoc命令打开模拟器。

        我的目录分配方式如下:

                ActivePerl--------------------G:\S60\perl_5_6\

                Java SE JDK 1.5-----------G:\S60\java_1_5\

                S60_5th_Edition_SDK---G:\S60\devices\S60_5th_Edition_SDK_v1.0\

                CSL_Arm_Toolchain-----G:\S60\CSL_Arm_Toolchain\

                Carbide.c++-----------------G:\S60\Carbide_cpp_v2_7\

1.安装Active Prel 5.6.1

        不多说,除了设置安装路径外一路“Next”搞定。记住安装时选择自动更新环境变量。可能是我装了安全防护软件的原因,即便选了这一项,系统环境变量也没有变。无奈只有自己添加:我的电脑(右键)---属性---高级---环境变量---系统变量---编辑Path---在其中添加“G:\S60\perl_5_6\bin\”(不包括双引号)

        测试:重新运行cmd

                G:\>perl -version


                This is perl, v5.6.1 built for MSWin32-x86-multi-thread
                (with 1 registered patch, see perl -V for more detail)

                Copyright 1987-2001, Larry Wall

                Binary build 628 provided by ActiveState Tool Corp. http://www.ActiveState.com
                Built 15:41:05 Jul  4 2001
                                ……

看到以上内容证明已经设置正确。


2.安装Java SE JDK 1.5

        基本也是除了设置路径外就是一直"Next"了。当然,环境变量估计也是没有自动设置成功的,还得自己动手:

                (1)我的电脑(右键)---属性---高级---环境变量---系统变量

                (2)在系统变量中新建CLASSPATH,在其中添加".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar"(不包括双引号,且开头有个.;号。后面不再重复,各位自己细心)

                (3)在系统变量中新建JAVA_HOME,在其中添加"G:\S60\java_1_5"(根据自己的实际目录,自己修改哈)

                (4)在系统变量Path中添加"%JAVA_HOME%\bin"

        测试:重新运行cmd

                G:\>java -version


                java version "1.5.0-beta"
                Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c)
                Java HotSpot(TM) Client VM (build 1.5.0-beta-b32c, mixed mode)

                G:\>javac -version


                javac 1.5.0-beta
                javac: no source files
                Usage: javac <options> <source files>

                ……

看到以上内容证明已设置正确。


3.安装Symbian SDK S60 5th Edtion

        这个选择好目录后,小心安装。最好还是细细研究下安装下的S60 5th Edition SDK Installation Guide.pdf再安装。当然,就算研究过了,也不一定能顺利装完。。。安装过程中会提示你是否安装CSL_Arm_Toolchain,选择是。如果你安装一路都很顺,直到结束。那么恭喜,你只剩环境变量的配置环节了!

        我将要新增或编辑的变量名和其中的值列在这里(我是安装在G:\S60\devices\S60_5th_Edition_SDK_v1.0\下的)

                (1)EPOCROOT---\S60\devices\S60_5th_Edition_SDK_v1.0\

                (2)Path--------------\epoc32\tools;\epoc32\gcc\bin;G:\S60\CSL_Arm_Toolchain\bin

                (3)Path--------------C:\Program Files\Common Files\Symbian\tools(这个我忘了是在安装完Symbian SDK S60 5th Edtion出现的,还是在安装完Carbide.c++后出现的。总之如果后面的测试有问题,就把对照这些添加吧。)

        测试:

                1)找到Symbian SDK S60 5th Edtion的安装目录,进入其S60CppExamples文件夹,如G:\S60\devices\S60_5th_Edition_SDK_v1.0\S60CppExamples。将其中的helloworldbasic文件夹复制到自建的工作目录下,如G:\S60\workspace。(注意要在同一盘符下)。重新打开cmd。

G:\S60\workspace\helloworldbasic\group>devices


S60_5th_Edition_SDK_v1.0:com.nokia.s60 - default

(如果S60_5th_Edition_SDK_v1.0:com.nokia.s60不是default,用命令devices -setdefault S60_5th_Edition_SDK_v1.0:com.nokia.s60将其设为默认)

                2)

G:\S60\workspace\helloworldbasic\group>bldmake bldfiles

这时G:\S60\workspace\helloworldbasic\group中会生成一个ABLD.BAT文件,G:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\BUILD\中会新建目录结构\workspace\helloworldbasic\group里面有各种文件

                3)

G:\S60\workspace\helloworldbasic\group>abld build winscw udeb(如果系统环境没有配置好,这里可能出现"……Nothing to do"的错误提示。可以重新配置下系统变量,如果不行,重装下CSL Arm Toolchain,再重新配置。我就是这么解决"……Nothing to do"问题的。)
make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\EXPORT.make" EXPORT VERBOSE=-s
Nothing to do
make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" MAKEFILE VERBOSE=-s
 make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW MAKMAKE
perl -S makmake.pl  -D \S60\workspace\helloworldbasic\group\HELLOWORLDBASIC WINS
CW
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" LIBRARY VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW LIB
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\WINSCW\HELLOWORLDBASIC.WINSCW" LIBRARY
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" RESOURCE CFG=UDEB VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW CFG=UDEB RESOURCE
MifConv version 1.11 build (50, SVG stand-alone).
Checking: ..\gfx\qgn_menu_helloworldbasic.svg
Choosing...
Used from: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\tools\SVGTBINENCODE.exe.


Convert files...
.
Loading mif icons...
Loading file: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\BUILD\s60\icons\temp\
s36s.tmp\.._gfx_qgn_menu_helloworldbasic.svgb
Writing mif: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\WINSCW\UDEB\Z\
resource\apps\helloworldbasic_aif.mif
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\WINSCW\HELLOWORLDBASIC.WINSCW" RESOURCEUD
EB
Creating \s60\devices\s60_5th_edition_sdk_v1.0\epoc32\build\s60\workspace\hellow
orldbasic\group\helloworldbasic\winscw\udeb
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" TARGET CFG=UDEB VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW CFG=UDEB BLD
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\WINSCW\HELLOWORLDBASIC.WINSCW" UDEB
HelloWorldBasic.cpp
HelloWorldBasicApplication.cpp
HelloWorldBasicAppView.cpp
HelloWorldBasicAppUi.cpp
HelloWorldBasicDocument.cpp
HelloWorldBasicQueryDialog.cpp
HelloWorldBasic.UID.CPP
mwldsym2.exe: warning: Multiply defined symbol: ___get_MSL_init_count in
mwldsym2.exe: warning: files uc_cwhelp.obj (EEXE.LIB), startup.win32.c.obj (msl_
all_static_mse_symbian_d.lib),
mwldsym2.exe: warning: keeping definition in startup.win32.c.obj
mwldsym2.exe: warning: Multiply defined symbol: __CleanUpMSL in
mwldsym2.exe: warning: files uc_cwhelp.obj (EEXE.LIB), startup.win32.c.obj (msl_
all_static_mse_symbian_d.lib),
mwldsym2.exe: warning: keeping definition in startup.win32.c.obj
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" FINAL CFG=UDEB VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW CFG=UDEB FINAL

这时G:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\winscw\udeb中会出现文件HelloWorldBasic.exe

                4)

G:\S60\workspace\helloworldbasic\group>epoc

启动模拟器,漫长的等待。。。进入其Menu---applications---HelloWorld运行试试!如果成功了证明你已经可以编译并正常运行模拟器了。(这里再次提醒大家注意,S60v5的模拟器不支持长文件名的系统Temp,或者是因为系统默认的Temp在C盘的缘故,模拟器不支持而无法打开或开一下就关了。我将用户变量中的Temp和Tmp变量全改为G:\Temp后,模拟器终于正常打开了。这么麻烦为何一直都不更新。。。)

                5)

G:\S60\workspace\helloworldbasic\group>abld build gcce urel


make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\EXPORT.make" EXPORT VERBOSE=-s
Nothing to do
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" MAKEFILE VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE MAKMAKE
perl -S makmake.pl  -D \S60\workspace\helloworldbasic\group\HELLOWORLDBASIC GCCE


  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" LIBRARY VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE LIB
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\GCCE\HELLOWORLDBASIC.GCCE" LIBRARY
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" RESOURCE CFG=UREL VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE CFG=UREL RESOURCE
MifConv version 1.11 build (50, SVG stand-alone).
Checking: ..\gfx\qgn_menu_helloworldbasic.svg
Choosing...
Used from: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\tools\SVGTBINENCODE.exe.


Convert files...
.
Loading mif icons...
Loading file: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\BUILD\s60\icons\temp\
s174.tmp\.._gfx_qgn_menu_helloworldbasic.svgb
Writing mif: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\data\z\resource\apps\h
elloworldbasic_aif.mif
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\GCCE\HELLOWORLDBASIC.GCCE" RESOURCEUREL
Creating \s60\devices\s60_5th_edition_sdk_v1.0\epoc32\build\s60\workspace\hellow
orldbasic\group\helloworldbasic\gcce\urel
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" TARGET CFG=UREL VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE CFG=UREL BLD
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\GCCE\HELLOWORLDBASIC.GCCE" UREL
helloworldbasic.cpp
helloworldbasicapplication.cpp
helloworldbasicappview.cpp
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikme
nub.h:18,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknen
v.h:28,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknut
ils.h:40,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicappview.
cpp:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h: In member funct
ion `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const':
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h:242: warning: en
umeral mismatch in conditional expression: `TFalse' vs `TTrue'
helloworldbasicappui.cpp
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknno
tewrappers.h:27,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/AknNoteDialog.h:660:15: war
ning: no newline at end of file
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklb
x.h:39,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/AknQu
eryDialog.h:25,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknno
tewrappers.h:28,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklbed.h:256:16: warning:
no newline at end of file
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikme
nub.h:18,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknen
v.h:28,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknut
ils.h:40,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknpo
puplayout.h:26,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/AknQu
eryDialog.h:28,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknno
tewrappers.h:28,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h: In member funct
ion `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const':
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h:242: warning: en
umeral mismatch in conditional expression: `TFalse' vs `TTrue'
In file included from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:27:
/S60/workspace/helloworldbasic/inc/HelloWorldBasic.hrh:27:34: warning: no newlin
e at end of file
helloworldbasicdocument.cpp
helloworldbasicquerydialog.cpp
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklb
x.h:39,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknqu
erydialog.h:25,
                 from /S60/workspace/helloworldbasic/inc/HelloWorldBasicQueryDia
log.h:21,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicquerydia
log.cpp:19:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklbed.h:256:16: warning:
no newline at end of file
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikme
nub.h:18,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknen
v.h:28,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknut
ils.h:40,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknpo
puplayout.h:26,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknqu
erydialog.h:28,
                 from /S60/workspace/helloworldbasic/inc/HelloWorldBasicQueryDia
log.h:21,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicquerydia
log.cpp:19:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h: In member funct
ion `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const':
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h:242: warning: en
umeral mismatch in conditional expression: `TFalse' vs `TTrue'
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" FINAL CFG=UREL VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE CFG=UREL FINAL

经过一长串的编译,如果没有报错,那么程序正确。在G:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\gcce\urel下会生成又GCCE编译的Release版的exe文件HelloWorldBasic.exe

                6)

接着进入G:\S60\workspace\helloworldbasic\sis目录。在里面有一个helloworldbasic_gcce.pkg文件。打开发现里面其实是个模板,目录全都指定有问题。因此要先修改才能用。

这里给出我修改的一个版本(最好使用Unicode编码):

;Language - standard language definitions
&EN
; standard SIS file header
#{"HelloWorldBasic"},(0xA000017F),1,0,0
;Localised Vendor name
%{"Vendor"}
;Unique Vendor name
:"Vendor"
;Supports S60 5th Edition
[0x1028315F], 0, 0, 0, {"Series60ProductID"}
;Files to install
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\release\gcce\urel\HelloWorldBasic.exe"-"!:\sys\bin\HelloWorldBasic.exe"
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\data\z\resource\apps\HelloWorldBasic.rsc"-"!:\resource\apps\HelloWorldBasic.rsc"
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\data\z\private\10003a3f\apps\HelloWorldBasic_reg.rsc"-"!:\private\10003a3f\import\apps\HelloWorldBasic_reg.rsc"
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\data\z\resource\apps\HelloWorldBasic_aif.mif" -"!:\resource\apps\HelloWorldBasic_aif.mif"

执行:

G:\S60\workspace\helloworldbasic\sis>makesis helloworldbasic_gcce.pkg


Processing helloworldbasic_gcce.pkg...
Created  helloworldbasic_gcce.sis.

则在G:\S60\workspace\helloworldbasic\sis生成helloworldbasic_gcce.sis文件。

执行:

G:\S60\workspace\helloworldbasic\sis>makekeys -cert -password 123456 -len 2048 -dname "CN=myname OU=Development OR=symbian CO=GB  EM=none@none.com" mykey.key mycert.cert

Generating DSA key .................................Generated!


Created key: mykey.key
Created certificate: mycert.cert

这时会在sis目录下生成mycert.cert、mykey.key两个文件。

                7)最后一步,自签名:

G:\S60\workspace\helloworldbasic\sis>signsis helloworldbasic_gcce.sis helloworldbasic_gcce.sisx mycert.cert mykey.key 123456

这时sis目录中会出现已经被自签名的helloworldbasic.sisx文件,放入手机安装着试试吧,是不是可以用啦:)


4.安装Carbide.c++ 2.7

        这个还好,选好目录,按照提示安装就行。当然奇怪的问题再次发生。。。我点了finish之后,窗口关闭了。可任务栏中却还留着,打开进程列表,安装进程也还在。我开始以为是安装没有结束,就等啊等啊。。。等了好久它都不关。我就强行结束了程序。问题来了,当我点击程序组中的Symbian Foundation---Carbide.c++ v2.7---Configure environment for WINSCW command line进行环境配置时,系统提示"G:\S60\Carbide_cpp_v2_7\configuration\run_env_update.bat不是有效的 Win32 应用程序"。找到这个文件,果然,显示是0KB。这是什么情况?上次我装的时候就没这种问题啊。没有这个文件,就没法儿自动配置系统变量了。经过长时间的搜索(Google的,Baidu硬是没Bai出来。。。)解决办法是在run_env_update.bat中加入这么两行:

cd "G:\S60\Carbide_cpp_v2_7\x86Build\env_switch\"
env_update.exe

也就是进入安装目录,运行了其中的一个程序。各位根据自己的安装目录,自行更改就行。再点击,就可以运行啦。所有的提示,全都回答y,结束后系统环境就自动配置好了。

测试:这次我们自己新建一个工程。

第一次运行时会自动检查系统环境,建立工作目录。

进入后,File---New---Symbian OS C++ Project---S60---GUI Application---输入Project name---Builder选择SBSv1就行。SBSv1调用的是Perl,而SBSv2调用的是python。

选择工程(右键)---Build Configurations---Set Active---Emulator Debug (WINSCW),再点击工具栏里的Run就行了。模拟器会自动打开,在Applications中可以找到刚才创建的程序。

如果想创建可以在手机中安装的程序,只需将刚才的Set Active改为Phone Release (GCCE),然后右击工程---Build Project,在工程的sis目录下就会生成和sis和sisx文件。如果没有设置签名,软件会自动自签名。

===================================================================================================================================

        好啦,整过过程就是这样。有点麻烦,不过多试几次,多看注意事项,有点耐心,还是可以创建好开发环境的。现在iOS和Android系统的开发大行其道,不过我还是喜欢Symbian。呵呵,因为自己的手机是5230,用得挺顺手的,暂时还不打算换。自己开发点小程序,自己用正合适。另外我还是比较喜欢C++,Java完全没怎么学,Symbian C++比较适合自己。

        我不喜欢一味地赶潮流,Android和iOS不就是炫一点吗,Symbian也可以做到啊,而且价格便宜得多,安全性也比较好。Google的开发策略已经让Android的兼容性和安全性受到了严峻的挑战。iOS用不起,就不说啦,呵。Symbian从一开始就是专为手机设计的操作系统,开发了这么多年,优化了这么久,运行效率还是很高的,在比较低的配置下就可以流畅使运行。不知Nokia为何一定要放弃Symbian,为何一定要跟微软合作,个人觉得Symbian还很有继续开发潜力,完全可以在原来的基础上继续开发。Nokia的决定真是让我们这些使用Symbian的人不可理解啊。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值