Many problems encountered by engineers developing code for specialized Symbian subsystems boil down to a lack of understanding of the core Symbian programming concepts. Developing Software for Symbian OS remedies this problem as it provides a comprehensive coverage of all the key concepts. Numerous examples and descriptions are also included, which focus on the concepts the author has seen developers struggle with the most. The book covers development ranging from low-level system programming...
Many problems encountered by engineers developing code for specialized Symbian subsystems boil down to a lack of understanding of the core Symbian programming concepts. Developing Software for Symbian OS remedies this problem as it provides a comprehensive coverage of all the key concepts. Numerous examples and descriptions are also included, which focus on the concepts the author has seen developers struggle with the most. The book covers development ranging from low-level system programming to end user GUI applications. It also covers the development and packaging tools, as well as providing some detailed reference and examples for key APIs. The new edition includes a completely new chapter on platform security. The overall goal of the book is to provide introductory coverage of Symbian OS v9 and help developers with little or no knowledge of Symbian OS to develop as quickly as possible. There are few people with long Symbian development experience compared to demand, due to the rapid growth of Symbian in recent years, and developing software for new generation wireless devices requires knowledge and experience of OS concepts. This book will use many comparisons between Symbian OS and other OSes to help in that transition. Get yourself ahead with the perfect introduction to developing software for Symbian OS.
Foreword Jo Stichbury ixForeword Warren Day xiBiography xiiiAuthor Acknowledgments xvSymbian Press Acknowledgments xviiSymbian OS Code Conventions and Notations Used in the Book xixSmartphones and Symbian OS 1Notes on this New Edition 1Smartphone Concepts 2Smartphone Features 3The Mobile OS 11Symbian OS - A Little History 12Symbian OS Smartphones 15Other Smartphone Operating Systems 20Symbian OS Quick Start 23What Do You Need to Get Started? 23Firing Up the Development Tools 31Simple Example Application 38Building and Executing on the Emulator 56A Carbide.c++ Project 58Building for the Smartphone 59Symbian OS Architecture 63Components in Symbian OS 63Multitasking in Symbian OS 64Shared Code: Libraries, DLLs, and Frameworks 65Client-Server Model 68Memory in Symbian OS 70TheKernel 77Active Objects and Asynchronous Functions 81GUI Architecture 83High-Performance Graphics 85The Communication Architecture 86Application Engines and Services 90Platform Security 90Symbian OS Programming Basics 93Use of C++ in Symbian OS 93Non-standard C++ Characteristics 94Basic Data Types 94Symbian OS Classes 95Exception Error Handling and Cleanup 101Libraries 115Executable Files 118Naming Conventions 119Summary 122Symbian OS Build Environment 123SDK Directory Structure 123Build System Overview 126Basic Build Flow 126Build Targets 131What is a UID? 135The Emulator 137Building Shared Libraries 141DLL Interface Freezing 144Installing Applications on the Smartphone 149Strings, Buffers, and Data Collections 161Introducing the Text Console 161Descriptors for Strings and Binary Data 165The Descriptor Classes 168Descriptor Methods 186Converting Between 8-Bit and 16-Bit Descriptors 198Dynamic Buffers 199Templates in Symbian OS 203Arrays 205Other Data Collection Classes 213Platform Security and Symbian Signed 217What is Platform Security? 217What Platform Security is Not 218What this Means to a Developer 219Capabilities for API Security 219Application Signing in Symbian 232Getting Your Application Symbian Signed 238Developer Certificates 244Asynchronous Functions and Active Objects 247Asynchronous Functions 247Introducing Active Objects 249The Active Scheduler 254Active Scheduler Error Handling 258Active Object Priorities 260Canceling Outstanding Requests 260Removing an Active Object 262Active Object Example 262Active Object Issues 269Using Active Objects for Background Tasks 271Processes, Threads, and Synchronization 277Processes 277Using Threads on Symbian OS 286Sharing Memory Between Processes 292Memory Chunks 293Thread Synchronization 297Client-Server Framework 303Client-Server Overview 304A Look at the Client-Server Classes 305Client-Server Example 306Symbian OS TCP/IP Network Programming 323Introduction to TCP/IP 324Network Programming Using Sockets 327Symbian OS Socket API 334Example: Retrieving Weather Information 345Making a Network Connection 356GUI Application Programming 359Symbian OS User Interfaces 360Anatomy of a GUI Application 365Application Classes 367Resource Files 377Dialogs 387Symbian OS Controls 405View Architecture 409Application Icon and Caption 409References 413Index 415