MS Visual C++ 6.0

Một phần của tài liệu TÌM HIỂU và NGHIÊN cứu kỹ THUẬTPHÁT TRIỂN ỨNG DỤNG TRÊN MÔITRƯỜNG SYMBIAN OS (Trang 66)

2 Hướng nghiên cứu và giới hạn đề tài

3.4.1MS Visual C++ 6.0

Đây là IDE phổ dụng cho phát triển ứng dụng viết bằng C++ do Microsoft phát triển trong bộ Visual Studio. Tuy nó ra đời trước Symbian nên không hỗ trợ

xây dựng dự án ứng dụng Symbian từ đầu nhưng với các công cụ phụ trợ, ta hoàn toàn có thể phát triển ứng dụng Symbian trên VC++ 6.0. Một điểm lưu ý là VC++ 6.0 phải được cài bản vá lỗi ít nhất là SP3.

H3.6 IDE VC++ 6.0

3.4.2 Borland C++ Builder 6.0 Nokia Edition và C++ BuilderX

Hai IDE này do Borland phát triển. C++ BuilderX là phiên bản phát triển của Borland C++ Builder 6.0 Nokia Edittion và hiện được dùng để phát triển ứng dụng Symbian hơn là Borland C++ Builder 6.0 Nokia Edition. C++ BuilerX được sử

KHOA CNTT –

ĐH KHTN

vậy C++ BuilderX vẫn có hỗ trợ UIQ 2.1. C++ BuilderX hỗ trợ cả quá trình xây dựng ứng dụng mới bằng việc chọn từ menu File->New.

H3.7 IDE C++ BuilderX

3.4.3 Metrowerks CodeWarrior

Metrowerks CodeWarrior là IDE được biết đến nhiều nhất cho việc phát triển

ứng dụng Symbian. Mặc dù nó mới chỉ được sử dụng từ năm 2003 (trước đó chủ

yếu sử dụng các công cụ của Microsoft là IDE VC++ 6.0) nhưng nay nó đã được sử

dụng rộng rãi trong cộng đồng phát triển Symbian. IDE này có 3 bản phân phối khác nhau:

• Personal Edition: - IDE đầy đủ.

- Công cụ biên dịch cho giả lập Emulator và điện thoại. - Kiểm lỗi (debugger) trên Emulator.

• Professional Edition:

- Tất cả các đặc tính của Personal.

- Debug trên điện thoại Symbian (không hỗ trợ cho dòng Series 60). - Hỗ trợ Symbian DevKits (mã cung cấp cho các nhóm thành viên) và tham khảo phần cứng.

KHOA CNTT –

ĐH KHTN

H3.8 IDE Metrowerks CodeWarrior

• OEM Edition:

- Tất cả các đặc tính của Professional - JTAG và Multi-ICE debugging.

- Giải lập Virtio VXPS (Intel XScale) và VPOM (TI OMP).

Thường các lập trình viên tự do chỉ cần sử dụng phiên bản Personal hoặc Professional. Các phiên bản này có thể cài đặt trên Windows NT4 hay từ Windows 2000 trở lên.

CodeWarrior hỗ trợ các bộ SDK sử dụng hệđiều hành từ phiên bản 6.1 trở về

sau, nghĩa là chúng ta không thể dùng nó để phát triển ứng dụng với bộ công cụ

Nokia 9200 Series SDK. Với các bộ công cụ khác, thường có bản phân phối hỗ trợ

riêng cho CodeWarrior như Series 60 SDK 1.2 (hay 2.0) hỗ trợ IDE Metrowerks CodeWarrior, UIQ 2.0 (chỉ sử dụng được với CodeWarrior), UIQ 2.1 hỗ trợ IDE Metrowerks CodeWarrior, Series 90 hỗ trợ IDE Metrowerks CodeWarrior. Bộ

Series 80 SDK chỉ có một bản phân phối dùng chung và không hỗ trợ IDE Metrowerks CodeWarrior. Chúng ta phải chọn đúng bản phân phối để không bị lỗi trong quá trình biên dịch .

KHOA CNTT – ĐH KHTN CHƯƠNG 4 XÂY DNG NG DNG SYMBIAN MI Ứng dụng đồ họa Phân loại Cấu trúc ứng dụng đồ họa Định danh ứng dụng File dự án File định nghĩa dự án (.mmp) File mô tả thành phần bld.inf Xây dựng dự án ứng dụng mới Công cụ

IDE

Quy ước đặt tên trong Symbian Tên lớp

Tên dữ liệu Tên hàm

Dự án mẫu HelloWorld được tạo bằng IDE CodeWarrior Xây dựng dự án ứng dụng HellWorld Cấu trúc các lớp chương trình ứng dụng HelloWorld Mã khởi tạo hoạt động ứng dụng đồ họa Lớp ứng dụng Lớp tài liệu Lớp giao tiếp ứng dụng Lớp cửa sổứng dụng

KHOA CNTT –

ĐH KHTN

4.1 Ứng dụng đồ họa

4.1.1 Phân loại

Trên Symbian, ứng dụng đồ họa được chia thành ứng dụng file (file-based application) như Word hay Contact, Agenda và ứng dụng khác không phải là ứng dụng file (non file-based application) như Calculator, các trò chơi.

• Ứng dụng file là ứng dụng phục vụ cho việc lưu trữ các thông tin, tài liệu dưới dạng các file có cấu trúc riêng. Trên Symbian, ứng dụng file lại được chia làm 2 loại khác nhau:

- Ứng dụng file tài liệu độc lập: là các ứng dụng file mà có thể nạp và lưu trữ

tài liệu dưới dạng các file độc lập như Word hay Record. Khi một file tài liệu được nạp, toàn bộ dữ liệu file sẽđược lưu và xử lý trong RAM và khi lưu file xuống lại

đĩa thì file cũ sẽ bị xóa và được thay thế bằng file mới. Đối với các ứng dụng file dạng này, dữ liệu thật xem nhưở trên RAM, các file chỉ lưu lại các phiên bản khác nhau của tài liệu ứng dụng. Các file tài liệu này có biểu tượng của ứng dụng và chúng có chứa UID của ứng dụng. Đây là cơ sở để xác định tài liệu thuộc ứng dụng nào, chúng không dựa trên phần mở rộng của tên như trên các hệ điều hành khác. Một số file tài liệu dạng này có thể cho phép nhúng một tài liệu của một ứng dụng khác, biến tài liệu tồn tại độc lập này thành một phần tài liệu của nó. Ví dụ: tài liệu hình ảnh có thể nhúng vào một tài liệu danh bạ Contact.

- Ứng dụng file cơ sở dữ liệu: là các ứng dụng file nhưng tài liệu của nó là các file cơ sở dữ liệu như trong ứng dụng Agenda. Tại mỗi thời điểm sử dụng, chúng ta chỉ nạp và lưu các mẫu tin (record) có cấu trúc trên cơ sở dữ liệu qua việc sử dụng các đầu vào tương ứng nhờ các chỉ mục. Đối với các ứng dụng file này, dữ liệu thật lại nằm trên đĩa trong các file cơ sở dữ liệu, còn trên RAM chỉ là các đoạn dữ liệu sao chép từ file cơ sở dữ liệu.

KHOA CNTT –

ĐH KHTN

H4.1 Sơđồ các file tài liệu ứng với các ứng dụng file

•Ứng dụng không phải là ứng dụng file: Các ứng dụng này có thể không hề

thao tác file nhưứng dụng máy tính Calculator hay chỉđọc file để phục vụ cho chức năng của chúng như chơi nhạc. Chúng không được xem là ứng dụng file.

4.1.2 Cấu trúc ứng dụng đồ họa

Giống như cấu trúc ứng dụng đồ họa được lập trình bằng C++ trên Windows, cấu trúc ứng dụng đồ họa Symbian cũng gồm có 4 lớp:

• Lớp ứng dụng (application): lớp ứng dụng định nghĩa các thuộc tính ứng dụng, và tạo ra các tài liệu mới cho ứng dụng. Trong trường hợp đơn giản nhất, nó chỉ bao gồm định danh ứng dụng UID.

• Lớp tài liệu (document): đại diện cho mô hình dữ liệu của ứng dụng. Nếu

ứng dụng là ứng dụng file, các ứng dụng phục vụ chính cho việc tạo các file tài liệu, lớp tài liệu này sẽđảm nhận việc nạp và lưu trữ các file tài liệu cho ứng dụng. Với các ứng dụng không phải là ứng dụng file, lớp tài liệu vẫn tồn tại với mục đích để

nạp phần giao diện ứng dụng.

• Lớp giao diện ứng dụng (AppUI – application user interface): Nhiệm vụ

chính của lớp này là cung cấp sự tương tác giữa ứng dụng với người dùng qua các

đối tượng điều khiển như thanh công cụ hay thực đơn qua hàm HandleCommandL()

đồng thời tạo các cửa sổ hiển thị (view) cho ứng dụng, phần giao tiếp chính giữa

KHOA CNTT –

ĐH KHTN

• Lớp hiển thị (app view): đây thực chất là một điều khiển, mục đích chính của nó là thể hiện các dữ liệu của ứng dụng lên màn hình và cho phép người dùng tương tác với nó. Nó cung cấp các chức năng quản lý sự kiện nhập như bàn phím (OfferKeyEventL()) và con trỏ (HandlePointerEventL()).

AppDllUid() Create- DocumentL() CExample Application Create- AppUiL() CExample Document Handle- CommandL() CExample AppUI Draw() CExample AppView

CEikApplication CEikDocument CEikAppUi CEikonEnv

CApaApplication CApaDocument CCoeAppUi CCoeControl CCoeEnv

APPARC

APPLICATION

UIKON

CONE

H4.2 Sơđồ cấu trúc ứng dụng đồ họa

Đây là cấu trúc chung cho ứng dụng đồ họa Symbian. Trong thực tế, cấu trúc một ứng dụng phức tạp hơn nhiều. Đối với các nền hệ thống khác nhau, có một tầng bổ sung nằm trung gian giữa tầng ứng dụng (application) và tầng Uikon cung cấp giao diện người dùng phù hợp với nền hệ thống đó: Series 60 sử dụng tầng trung gian là Avkon, Series 80/Series 90/Nokia 9200 Series sử dụng tầng Ckon trong khi UIQ sử dụng tầng trung gian là Qikon. Tầng trung gian này đảm trách phần giao diện riêng cho từng dòng được tích hợp trong phần ProductUI, Product LAF của các nền hệ thống. Uikon là phần giao diện chung do Symbian cung cấp (vốn trước kia có tên là Eikon, nhưng từ khi Symbian dùng Unicode thì tầng này

được gọi là Uikon). Uikon kế thừa từ 2 thành phần cơ bản trong môi trường Symbian là kiến trúc ứng dụng APPARC (application architecture) và môi trường

điều khiển CONE (control environment).

• APPARC: Đây là kiến trúc do Symbian quy định cho mô hình ứng dụng file gồm phần lõi ứng dụng và tài liệu. Nhưng đối với các ứng dụng đồ họa nói chung APPARC cũng đóng vai trò quan trong chứ không riêng gì với ứng dụng file. Khi kích hoạt ứng dụng từ khay hệ thống quản lý chương trình ứng dụng (shell), thật sự

KHOA CNTT –

ĐH KHTN

tham số. Sau đó apprun.exe mới sử dụng APPARC để nạp chương trình ứng dụng, một DLL đa hình với phần mở rộng là .app. Đầu tiên APPARC sẽ nạp DLL, sau đó kiểm tra UID thứ 2 có phải là ứng dụng đồ họa, tiếp đó thực thi hàm tạo một đối tượng ứng dụng mới kế thừa từ đối tượng CApapplication, thực hiện việc tạo tài liệu và yêu cầu tạo ra phần giao tiếp ứng dụng. Đối với việc nạp các ứng dụng để xử

lý các tài liệu nhúng APPARC sẽ nạp DLL này vào trong không gian tiến trình của

ứng dụng chính.

• CONE: là môi trường điều khiển cho các tương tác đồ họa, chạy trong tiến trình các ứng dụng đồ họa, tương tác với window server qua các hàm API cho phép các phần khác nhau của ứng dụng chia sẻ các sự kiện cửa sổ màn hình, phím và con trỏ (dùng bút với màn hình cảm ứng).

4.1.3 Định danh ứng dụng

Một trong những thuộc tính không thể thiếu trong ứng dụng đồ họa là định danh ứng dụng (Unique Identifier). Một UID là một số định danh duy nhất gồm 32 bit. UID được dùng để phân biệt và xác nhận, chọn lựa đúng các loại đối tượng khác nhau tại thời điểm nạp và thực thi, như phân biệt ứng dụng console, DLL, server, v.v...UID cũng là thành phần cơ bản để liên kết ứng dụng với tài liệu, ví dụ, tài liệu ứng với một ứng dụng sẽ yêu cầu hệ thống nạp ứng dụng khi tài liệu đó

được mở.

Trong hệ điều hành Symbian, các đối tượng thực thi được xác định bởi một

định danh phức hợp, kiểu UID, là một cấu trúc gồm 3 số UID riêng 32bit: UID1, UID2 và UID3. Các UID có giá trị hằng ứng với các tên gọi do Symbian quy định, nhưng cũng có thể sử dụng số hệ 10 hay hệ 16.

- UID1: định danh cấp hệ thống, chương trình thực thi .exe, DLL, hay file lưu trữđược phân biệt nhờ UID1: với các giá trị tương ứng KExecutableImageUid, KDynamicLibraryUid và KDirectFileStoreLayoutUid.

- UID2: định danh cấp giao tiếp, phân biệt các đối tượng cùng UID1, ví dụ

KHOA CNTT –

ĐH KHTN

.app) qua các giá trị: KSharedLibraryUid cho thư viện dùng chung và KUidApp cho một ứng dụng đồ họa .app.

- UID3: định danh cấp ứng dụng, phân biệt các đối tượng có cùng UID2, chẳng hạn các ứng dụng đồ họa khác nhau sẽ có UID3 khác nhau. Do đó, có một tổ

chức quản lý UID3 này cho toàn môi trường Symbian. Để có nó, lập trình viên phải gởi mail về uid@symbiandevnet.com để xin một số UID3 duy nhất trên môi trường Symbian.

Một đối tượng hay một file trong Symbian có thể có một, hai, ba hay không cần UID.

- Để sử dụng thuận tiện trong việc tương tác và chuyển đổi dữ liệu với các hệ

thống khác, hệ điều hành cho phép không cần sử dụng UID. Khi không có UID, Symbian sẽ phân biệt dựa vào quy ước đặt tên.

- Ứng dụng thực thi .exe thường chỉ có UID1 với giá trị

KExecutableImageUid.

- Ứng dụng DLL: các ứng dụng này có UID1 là KDynamicLibraryUid. Với các thư viện dùng chung .dll, UID2 sẽ là KSharedLibraryUid. Với các thư viện đa hình, UID2 sẽ có nhiều giá trị khác nhau tùy từng loại, ứng dụng giao diện đồ họa có UID2 là KUidApp. UID3 thì các ứng dụng DLL hầu như không cần, chỉ có ứng dụng đồ họa .app và một số loại trình điều khiển thiết bị là cần đến.

- Đối với các loại tài liệu thì UID1 là KDirectFileStoreLayoutUid hoặc KPermanentFileStoreLayoutUid ứng với tài liệu độc lập và tài liệu cơ sở dữ liệu. UID2 và UID3 phụ thuộc ứng dụng mà tài liệu phục vụ.

Vì UID là giá trị được sử dụng để phân biệt nên cần sự chính xác. Đối với UID3 dùng trong ứng dụng đồ họa, trong quá trình phát triển, có thể sử dụng một giá trị bất kỳ trong khoảng 0x01000000 và 0x0fffffff. Nhưng khi cài ứng dụng vào

KHOA CNTT –

ĐH KHTN

4.2 File dự án (project file)

Thông thường các dự án ứng dụng được xây dựng trên các IDE hỗ trợ nhưng trên Symbian thì khác. Vì có nhiều loại điện thoại, nhiều nền hệ thống và nhiều bộ công cụ phát triển khác nhau nên hệ điều hành Symbian đã cho phép dự án ứng dụng

được đặc tả trong một định dạng độc lập. Sau đó, với các công cụđi kèm trong các bộ công cụ phát triển hay trên các IDE hỗ trợ, các file dự án này được định dạng lại thành các file dự án phù hợp với IDE cho dòng điện thoại cụ thể và bộ SDK cho

điện thoại đó. Ngoài ra, các định dạng dự án độc lập này còn được sử dụng để biên dịch ứng dụng với các công cụ biên dịch.

4.2.1 File định nghĩa dự án (.mmp)

File này mô tả các thông tin dự án. Đây là một file dự án độc lập, nó sẽ được chuyển thành file phù hợp môi trường phát triển cụ thể với các công cụ makmake hay lệnh bó abld. Nó định nghĩa các file tài nguyên và file thông tin ứng dụng cần cho quá trình biên dịch. Cấu trúc file .mmp: gồm các dòng khai báo với các loại câu khai báo khác nhau.

Khai báo Nội dung

Aif File thông tin ứng dụng

Asspabi Biên dịch dự án cho ABI phù hợp cho ASP Assplibrary Thư viện nhân cần liên kết

Asspexports Xuất các chức năng khác nhau cho các ASP khác nhau Baseaddress Địa chỉ DLL được biên dịch và nạp (chỉ dùng trên giả lập) Debuglibrary Thư viện cần trong khi debug

Deffile Dùng để ghi đè lên file định nghĩa liên kết mặc định Document File tài liệu (không chứa mã)

Epocheapsize Kích thước heap nhỏ và lớn nhất cho ứng dụng khi thực thi Epocprocesspriority Dùng đểđặt độưu tiên cho tiến trình cho ứng dụng .exe Epocstacksize Kích thước stack cho ứng dụng

Exportunfrozen Tạo file thư viện không đòi hỏi xuất cụ thể cho một nền hệ

KHOA CNTT –

ĐH KHTN

Lang Mã ngôn ngữ dùng trong dự án (thể hiện ứng dụng dưới nhiều ngôn ngữ)

Library Thư viện cần dùng

Linkas Tạo một tên khác cho một DLL

Macro #defines: cho các tiền xử lý trong mã ứng dụng Nostrictdef Không cung cấp file .def cho dự án

Option Đặc tả các tùy chọn biên dịch thêm Resource File tài nguyên cho dự án ứng dụng Source File mã nguồn

Sourcepath Vị trí của thư mục dự án

Srcdbg Bỏ phần sử dụng tối ưu hóa trong biên dịch phiên bản debug Start bitmap Các bitmap dùng để biên dịch thành một file .mbm

Start...end Phần đặc tả nền Staticlibrary Thư viện tĩnh

Strictdepend Phần phụ thuộc dự án, có thể khác ở các biến thể Systeminclude Thư mục file khai báo (header) hệ thống

Systemresource File tài nguyên cho thành phần hệ thống Target File phát sinh bởi dự án

Targettype Loại dự án

Targetpath Vị trí file kết xuất Uid UIDs cho một dự án

Userinclude Thư mục file header cho dự án

Win32_library Thư viện hệ thống Win32 liên kết trong khi biên dịch trên WINS/WINSCW

KHOA CNTT –

ĐH KHTN

Thông thường chỉ một số ít khai báo được dùng. Sau đây là cú pháp các khai báo thông dụng qua ví dụ dự án HelloWorld với file HelloWorld.mmp:

Aif: aif target-filesource-pathresource[color-depth]source-bitmap-list

Với: + target-file: tên file đích, thường viết luôn phần đuôi và nằm trong

Một phần của tài liệu TÌM HIỂU và NGHIÊN cứu kỹ THUẬTPHÁT TRIỂN ỨNG DỤNG TRÊN MÔITRƯỜNG SYMBIAN OS (Trang 66)