Synopses & Reviews
Mark Wilcox shows readers how to port their C/C++ code to Symbian OS from other platforms. First to market, this timely book examines the issues involved in porting and covers setting up the process, fixing problems and highlighting common issues faced with Symbian OS when porting to include resource limitations, device differences, common porting patterns and how to design code for multiple platforms.
Key features include:
- Accessible coverage of all the issues involved in porting existing C/C++ applications and middleware from Linux, Windows Mobile, BREW and iPhone platforms
- Practical advice on how to set up the tool chain and how to tackle common issues such as managing resource limitations and device differences, and how to write safe standard C/C++ on a constrained device
- Practical examples and case studies, including downloadable code.
The last section of the book tackles the advanced part of porting such as security models and P.I.P.S. (PIPS Is POSIX on Symbian) architecture. It includes practical examples to cover port enablers such as OpenKode, an open standard that combines a set of native APIs to increase source portability for rich media and graphics applications, and RGA (Real-Time Graphics & Audio) which are already used within a number of N-Gage games, and could easily be used for just about any application.
Aimed at experienced Symbian OS developers, Porting C/C++ to Symbian OS provides practical advice and real-world examples to get started!
If you want to write mobile applications without the idioms of Symbian C++, have existing software assets that you'd like to re-use on Symbian devices, or are an open source developer still waiting for an open Linux-based device to gain significant market penetration, this is the book for you!
Beginning with an introduction to the native programming environments available and descriptions of the various technologies and APIs available, you will first learn how to go about porting your code to the Symbian platform.
Next, you will discover how to port to Symbian from other common platforms including Linux and Windows.
Finally, you can examine sample porting projects as well as advanced information on topics such as platform security.
The author team consists of no less than six Forum Nokia Champions, together with technical experts from the Symbian community, either working on Symbian platform packages or third party application development. With this book, you will benefit from their combined knowledge and experience.
In this book, you will learn:
- How to port and make use of existing open source code to speed up your development projects
- How to port applications from other popular mobile platforms to the Symbian platform
- How to write code that is portable across multiple platforms
- The APIs in the Symbian platform for cross-platform development, such as support for standard C/C++ and Qt.
Table of Contents
About this Book.
1.1 What Is Porting?
1.2 What Is Portability?
1.3 Why Port to Mobile Platforms?
1.4 Why Get Interested Now?
1.5 Why Port to the Symbian Platform?
2 The Porting Process.
2.1 Choosing a Project.
2.2 Analyzing the Code.
2.4 Setting Up the Development Environment.
2.5 Integrating with the Symbian Build System.
2.7 Fixing Problems.
2.8 Running and Testing.
3 Symbian Platform Fundamentals.
3.1 In the Beginning.
3.2 Naming Guidelines and Code Conventions.
3.3 Data Handling.
3.4 String Handling: Descriptors.
3.5 Error Handling and Memory Management.
3.6 Event-Driven Programming.
3.7 Writeable Static Data.
3.8 Multiple Inheritance.
4 Standard APIs on the Symbian Platform.
4.1 P.I.P.S. Is POSIX on Symbian OS.
4.2 Open C.
4.3 The STLport, uSTL and Open C++.
4.4 Which Version of Symbian OS?
4.5 How to Use the APIs.
4.6 Examples: SoundTouch and SoundStretch.
4.7 Known Limitations, Issues and Workarounds.
5 Writing Hybrid Code.
5.1 Popular APIs You Can’t Use Directly.
5.2 How to Create a Hybrid Port.
5.3 Example: Guitune.
6 Other Port Enablers.
6.1 Real-time Graphics and Audio Libraries
6.2 Simple DirectMedia Layer.
7 Porting from Mobile Linux.
7.1 Major Players in the Mobile Linux Space.
7.2 Porting from Linux to Symbian.
8 Porting from Microsoft Windows.
8.1 Architecture Comparison.
8.2 Application Compatibility.
8.3 Development Languages and SDKs.
8.4 SDKs and APIs.
8.5 Porting an Application.
8.6 Windows-specific Issues.
8.7 Signing and Security.
8.8 Porting from C# and .NET.
9 Porting from Other Mobile Platforms.
9.3 iPhone OS.
10 Porting a Simple Application.
10.1 Selecting a Project.
10.2 Analyzing the Code.
10.3 Setting Up the Development Environment.
10.4 Integrating with the Symbian Build System.
10.5 Getting It to Compile.
10.6 Getting It to Work.
10.7 Extensions Specific to Mobile Devices.
10.8 Deploying and Testing on Target Hardware.
11 Porting Middleware.
12 Porting a Complex Application.
12.1 Selecting a Project.
12.2 Analyzing the Code.
12.4 Setting Up the Development Environment.
12.5 Integrating with the Symbian Build System.
12.6 Getting It to Compile.
12.7 Re-writing the User Interface.
12.8 Testing and Debugging.
13 The P.I.P.S. Architecture.
13.1 The Glue Code.
13.2 The Core Libraries.
13.3 The Backend.
13.4 Emulator Writeable Static Data Support.
14 Security Models.
14.1 The Capability Model.
14.2 Process Identity.
14.3 Data Caging.
14.4 Code-Signing and Certification.
14.5 Certification and Platform Security.
14.6 Development Code.
14.7 Tool Support.
14.8 Symbian Platform Security Compared with Other Models.
15 Writing Portable Code and Maintaining Ports.
15.1 Recognizing Portable Code.
15.2 Design Strategies and Patterns.
15.3 Strategies for Maximizing the Number of Portable Modules.
15.4 Configuration Management.
Appendix A Techniques for Out-of-Memory Testing.