StoreKit framework. StoreKit framework (StoreKit.framework) provides support for purchasing content and services from within your iOS apps, a feature known as In-App Purchase.
System Configuration framework. System Configuration framework (SystemConfiguration.framework) provides reachability interfaces, which you can use to determine the network configuration of a device.
WebKit framework. WebKit framework (WebKit.framework) lets you display HTML content in your app.
Core OS layer. Core OS layer contains low-level features that most other technologies are built upon. Even if you do not use these technologies directly in your apps, these are most likely being used by other frameworks. And in situations where you need to explicitly deal with security or communicating with an external hardware accessory, you do so using the frameworks in this layer.
Accelerate framework. Accelerate framework (Accelerate.framework) contains interfaces for performing digital signal processing (DSP), linear algebra and image-processing calculations.
Core Bluetooth framework. Core Bluetooth framework (CoreBluetooth.framework) allows developers to interact specifically with Bluetooth Low Energy (BLE) accessories.
External Accessory framework. External Accessory framework (ExternalAccessory.framework) provides support for communicating with hardware accessories attached to an iOS based device.
Generic Security Services framework. Generic Security Services framework (GSS.framework) provides a standard set of security-related services to iOS apps.
Local Authentication framework. Local Authentication framework (LocalAuthentication.framework) lets you use Touch ID to authenticate a user.
Network Extension framework. Network Extension framework (NetworkExtension.framework) provides support for configuring and controlling Virtual Private Network (VPN) tunnels.
Security framework. In addition to its built-in security features, iOS also provides an explicit Security framework (Security.framework) that you can use to guarantee the security of the data your app manages.
System. The system level encompasses the kernel environment, drivers and low-level UNIX interfaces of the OS.
64-bit support for iOS
iOS was initially designed to support binary files on devices using a 32-bit architecture. In iOS 7, however, support was introduced for compiling, linking and debugging binaries on a 64-bit architecture. All system libraries and frameworks are 64-bit ready, meaning that these can be used in both 32-bit and 64-bit apps. When compiled for 64-bit runtime, apps may run faster because of the availability of extra processor resources in 64-bit mode.
Android is a mobile OS based on Linux kernel and currently developed by Google. With a UI based on direct manipulation, Android is designed primarily for touchscreen mobile devices such as smartphones and tablet computers, with specialised UIs for televisions (Android TV), cars (Android Auto) and wrist watches (Android Wear). Android Inc. was founded in Palo Alto, California, the USA, in October 2003.
Architecture. Android is architected in the form of a software stack comprising applications, an OS, runtime environment, middleware, services and libraries. This architecture can, perhaps, best be represented visually as in Fig. 9. Each layer of the stack and the corresponding elements within each layer are tightly integrated and carefully tuned to provide an optimal application development and execution environment for mobile devices.
Linux Kernel. The basic layer is Linux Kernel. The whole Android OS is built on top of Linux Kernel with some further architectural changes.
Linux Kernel interacts with the hardware and contains all essential hardware drivers. It also acts as an abstraction layer between the hardware and other software layers. The kernel provides pre-emptive multitasking, low-level core system services such as memory, process and power management, in addition to providing a network stack and device drivers for hardware such as the device display, Wi-Fi and audio.
Libraries. The next layer is Android’s native libraries. It is this layer that enables the device to handle different types of data. These libraries are written in C or C++ language and are specific to a particular hardware.
Some of the important native libraries include the following:
Surface Manager. It is used for compositing window manager with off-screen buffering. Off-screen buffering means that the apps cannot directly be drawn into the screen, instead drawings go to the off-screen buffer. There, it is combined with other drawings and form the final screen that the user will see. This off-screen buffer is the reason behind the transparency of windows.
Media framework. Media framework provides different media codecs allowing the recording and playback of different media formats.
SQLite. SQLite is the database engine used in Android for data-storage purposes.
WebKit. It is the browser engine used to display HTML content.
OpenGL. This is used to render 2D or 3D graphics content to the screen.
Android Runtime. Android Runtime consists of Dalvik virtual machine and Core Java libraries.