Tuesday 23 April 2013

Android Architecture



Linux Kernel
Android OS is built on top of the Linux 2.6 Kernel
–Linux Core functionality
•Memory management
•Process management
•Networking
•Security settings
–Hardware drivers

Android’s native libraries
–Libc: c standard lib.
–SSL: Secure Socket Layer
–SGL: 2D image engine
–OpenGL|ES: 3D image engine
–Media Framework: media codecs
–SQLite: Database engine
–WebKit: Kernel of web browser
–FreeType: Bitmap and Vector
–SufraceManager: Compose window manager with off-screen buffering.

Android Runtime
Core Libraries
Provides the functionality of the JAVA Programming Language
Dalvik VM
A type of Java Virtual Machine
Register based (not stack machine like JVM)
Optimization for low memory requirements
Executes .dex (Dalvik-Executable) files instead of .class
DX tool converts classes to .dex format

Application Framework
•The blocks that our applications directly interact with.
•Important blocks:
–Activity Manager: Manages the activity life cycle of applications
–Content Providers: Manage the data sharing between applications
–Telephony Manager: Manages all voice calls. We use telephony manager if we want to access voice calls in our application.
–Location Manager: Location management, using GPS or cell tower
–Resource Manager: Manage the various types of resources we use in our Application

Applications
•This is where our applications are placed.
•Some pre-installed applications:
–SMS client app
–Dialer
–Web browser
–Contact manager
•As developers, we are able to write an app which replaces any existing system app.

History of Android


2001 search service for wireless device
2005
Acquire Android(Andy Rubin: Danger CEO, Development Sidekick of T-Mobile)
Acquire Skia(2D Graphics for mobile device)
Acquire RegWireless(Browser and Email for mobile device)
Move Engineers from PlamSource(Dianne Hackborn, etc…)
2007 Nov 5: Android announced
2007 Nov 12: Android SDK released by OHA
2007 Dec 14: Bug-fix SDK released
2008 Jan 3: Android Developer Challenge I starts accepting submissions
2008 Feb 13: m5-rc15 SDK released
2008 Apr 14: 1788 total submissions for Challenge I
2008 May 12: Top 50 Applications in Challenge I announced
2008 Nov: Android Phone(G1 Phone by HTC/T-mobile)
2008 Nov: Full Source Open
2009 Apr: HTC Magic
2009 July: HTC Hero, Samsung i7500, Android Netbook, Set-top……
2009 Aug: Android Developer Challenge II 

Open Source

Industry
•Software stack open-sourced under Apache 2.0 license
•Source available after first handsets ship
•Anyone will be able to build a system image

Users
•Users have control of their experience
•They control what gets installed
•They choose the defaults

Developer
•Don not need permission to ship an application
•No hidden or privileged framework APIs
•Can integrate, extend and replace existing components                

Friday 19 April 2013

MOBILE APP TESTING CHECKLIST V

Store specific checks

The app cannot download code to be installed without the users consent.

The app can only get new functionality by way of an upgrade through the app store.

After download, an app should remain working. An app cannot turn off after a few days.

An app can’t be a “trail”, “beta”, “demo” or “test” version.

Apple product names should be spelled correctly in the app. (For instance: IPhonez is wrong).

If the app uses the web, it is not done using third party (i.e. non-Apple) browsers.

You cannot mention other app platforms in your app (for instance: “Also available on android!”)

An app cannot use old interfaces, like for instance the iPod click wheel.

Functionality should be in sync with functionality described in store.

The app can’t use the user’s location without permission.

All url’s in the app code should be fully functional

The location services cannot be used to autonomously control of vehicles or for emergency services.

An app cannot use push notifications without user consent.

Push notification can’t send personal information.

The App may not distribute any private information of users (like Player ID) through the game center.

Ad banners must be hidden when there are no ads available.

The app must respect copyright of apple and other parties.

An app can’t restrict the users of the app for instance by location or carrier.

The in app purchase mechanism cannot be used to purchase goods and services used outside the app.

The in app purchase mechanism cannot be used to collect money for charities. This has to be done through SMS.

The in app purchase mechanism cannot be used to buy a raffle or lottery ticket directly from the app.

Apps that encourage the users to use the device in a way that may damage the device will be rejected

An app cannot require user’s personal information (for instance email address) in order for it to function.

An app cannot use location services of the device without asking permission.

An app cannot send spam or introduce viruses, or use other apple platforms like Game Center and Push Notifications to do so.

Push notifications have to be send using the Apple Push Notification (APN) API. This has to be done using an APN ID.

Multitasking functionality of the app can only be used for its intended purposes, i.e. VoIP, Audio playback, location, task completion, local notifications, etc. This means that generally an app can’t run in the background but has to be closed off if it’s not used any more.

The app must have some functionality. For instance, it can’t be just a title page leading to some text. It can’t be just a song, movie or book as there are different platforms for that.

The app can’t use any “non-public API’s”. This means that you can’t use some functions that the distributing platform uses for its own apps. (This can generally be checked best by some sort of automated tool, like http://www.chimpstudios.com/appscanner/)

The app can’t reprogram controls of the device that are not intended for that use. (For instance: using the volume button as a shutter for the camera).

The app should aim at backing up a minimum of information on iCloud. The information in iCloud should be just the user generated information. Information that can be recreated or downloaded should not be backed up.

The app should not access information on the device outside the app without the user’s permission (for instance, copying the address book or getting information from other apps).

The app should not access or write files outside the “Bundle” and “Documents” directory. (because the app can’t read or write data outside the designated container area).

In general, the app has to be decent. So no explicit material in the sense of sex, violence, drugs, alcohol or tobacco. It cannot address a specific ethnic or religious group in a derogatory way.

The app has to be honest. This means that the description of the app has to be correct, and all functionality has to work as described. If an app gives diagnostic information, it has to be reliable. This also means that the genre and category in the  description must be appropriate. The app icons should be consistent and appropriate.

MOBILE APP TESTING CHECKLIST IV

App specific checks

Has the app been tested on different type of devices and different versions of OS?

Stability check: if the app has a list (for instance of pictures) in it, try scrolling through it at high speed.

Stability check: if the app has a list (for instance of pictures) in it, try scrolling to before the first picture or behind the last picture.

Is downloading of the app prevented in case it’s bigger than the OS allows downloading when connected to cellular networks.

Integration: does the app connect correctly to the different social networks (LinkedIn, twitter, facebook, etc).

The app does not interfere with other apps when in background/multitasking mode (using GPS, playing music, etc.).

Can the user print from the app (if applicable) The search option in the app displays relevant results

Verify most common gestures used to control the app.

What happens if you select different options at the same time (undesired multitouch, for example – select two contacts from the phone book at the same time).

App name should be self explanatory

Does the app limit or clean the amount of cached data.

Reloading of data from remote service has been properly designed to prevent performance issues at server-side.

Does the app go to sleep mode when running in the background (prevent battery drain)