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  [email protected]" 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的人不可理解啊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章