SlideShare a Scribd company logo
1 of 13
Download to read offline
TEAM MEMBERS
              Martin Jantscher – FH Joanneum
    Mohammed Talhaoui – Artesis Hogeschool Antwerpen
Denis De Vos – Haute École Provinciale de Mons-Borinage-Centre
     Ivan Cunha – Escola Superior de Comunicação Social
         Artur Roszcyk – Wyzsza Szkola Informatyki
           Mikhail Datsyuk – Central Ostrobothnia
1 Introduction
What is Android?
Android is a software platform and operating system for mobile devices, based on the Linux
kernel, developed by Google and later the Open Handset Alliance. It allows developers to write
managed code in the Java language, controlling the device via Google-developed Java libraries.
Applications written in C and other languages can be compiled to ARM native code and run, but
this development path is not officially supported by Google.

The unveiling of the Android platform on 5 November 2007 was announced with the founding of
the Open Handset Alliance, a consortium of 48 hardware, software, and telecom companies
devoted to advancing open standards for mobile devices. Google released most of the Android
code under the Apache license, a free-software and open source license.

What is The Open Handset Alliance?
Open Handset Alliance, is a consortium of several companies which include Google, HTC, Intel,
Motorola, Qualcomm, T-Mobile, Sprint Nextel and NVIDIA, ...
These companies which aim to develop technologies that will significantly lower the cost of
developing and distributing mobile devices and services. The Android platform is the first step in
this direction -- a fully integrated mobile "software stack" that consists of an operating system,
middleware, user-friendly interface and applications.

License
Android is under version 2 of the Apache Software License (ASL).
The Apache license allows manufacturers and mobile operators to innovate using the platform
without the requirement to contribute those innovations back to the open source community.




                                         Android Team 2009                                           2
2 Platform
2.1 Hardware

First and foremost, Android is a software stack for mobile devices. This means that high on the
list of priorities is the preservation of battery power and the efficient management of limited
memory resources. There are five distinct layers to the Android system stack:

    •   The Acorn RISC Machine (ARM) Linux core forms the solid base upon which all the other
        layers stand. Linux is a proven technology that is highly reliable, and the ARM processor
        family is known for high performance on very low power requirements.

    •   The libraries provide the reusable and sharable low-level code for basic functions such as
        codecs — software for coding and decoding digital sound and video — functions for the
        presentation of rich graphics on a small displays, secure shell support for encrypted
        TCP/IP traffic into the cloud, as well as component support for Web browsing (WebKit),
        SQL database functionality (SQLite), and standard C library functionality you would
        expect in a Linux system.

    •   The Dalvik run-time byte-code interpreter, which strongly resembles the Java™ language
        byte-code interpreter, adds a few distinct features that uniquely define the security and
        power-preserving model of Android. Every application currently running, for example,
        has its own user ID and its own copy of the interpreter running to strictly separate
        processes for security and reliability.

    •   The Android application framework enables you to use and replace components as you
        see fit. These high-level Java classes are tightly integrated components that define the
        Android API.

    •   The Android core applications include the WebKit browser, Google calendar, Gmail, Maps
        application, SMS messenger, and a standard e-mail client, among others. Android
        applications are written in the Java programming language, and you can download many
        more from the Android market on the fly.

Android is not a single piece of hardware; it's a complete, end-to-end software platform that can
be adapted to work on any number of hardware configurations. Everything is there, from the
bootloader all the way up to the applications. And with an Android device already on the market,
it has proven that it has what it takes to truly compete in the mobile arena.




                                          Android Team 2009                                          3
2.2 Operating System(s)




Android uses Linux for its device drivers, memory management, process management, and
networking. However you will never be programming to this layer directly.

The next level up contains the Android native libraries. They are all written in C/C++ internally,
but you’ll be calling them through Java interfaces. In this layer you can find the Surface
Manager (for compositing windows), 2D and 3D graphics, Media codecs (MPEG-4, H.264, MP3,
etc.), the SQL database (SQLite), and a native web browser engine (WebKit).

Next is the Android runtime, including the Dalvik Virtual Machine. Dalvik runs dex files, which
are converted at compile time from standard class and jar files. Dex files are more compact and
efficient than class files, an important consideration for the limited memory and battery powered
devices that Android targets.

The core Java libraries are also part of the Android runtime. They are written in Java, as is
everything above this layer. Here, Android provides a substantial subset of the Java 5 Standard
Edition packages, including Collections, I/O, and so forth.

The next level up is the Application Framework layer. Parts of this toolkit are provided by
Google, and parts are extensions or services that you write. The most important component of



                                         Android Team 2009                                           4
the framework is the Activity Manager, which manages the life cycle of applications and a
common “back-stack” for user navigation.

Finally, the top layer is the Applications layer. Most of your code will live here, along side built-in
applications such as the Phone and Web Browser


2.3 Network Connectivity

It supports wireless communications using:

    •   GSM mobile-phone technology
    •   3G
    •   Edge
    •   802.11 Wi-Fi networks




                                           Android Team 2009                                              5
2.4 Security

Android is a multi-process system, in which each application (and parts of the system) runs in its
own process. Most security between applications and the system is enforced at the process level
through standard Linux facilities, such as user and group IDs that are assigned to applications.
Additional finer-grained security features are provided through a "permission" mechanism that
enforces restrictions on the specific operations that a particular process can perform, and per-
URI permissions for granting ad-hoc access to specific pieces of data.

Security Architecture
A central design point of the Android security architecture is that no application, by default, has
permission to perform any operations that would adversely impact other applications, the
operating system, or the user. This includes reading or writing the user's private data (such as
contacts or e-mails), reading or writing another application's files, performing network access,
keeping the device awake, etc.
An application's process is a secure sandbox. It can't disrupt other applications, except by
explicitly declaring the permissions it needs for additional capabilities not provided by the basic
sandbox. These permissions it requests can be handled by the operating in various ways,
typically by automatically allowing or disallowing based on certificates or by prompting the user.
The permissions required by an application are declared statically in that application, so they can
be known up-front at install time and will not change after that.




                                          Android Team 2009                                           6
2.5 Performance

Devices hosting Android applications have limited capabilities. That's why code should be
efficient, avoid all unnecessary memory allocations, method calls (it takes a lot of time) and so
on.

In order to make our applications working fast on a mobile device we need to leave back some
habits, good from OOP point of view. In a mobile device we are not able to make a full model of
reality what we want to operate on.

Few things to remember:
   - avoid object instantiation - create objects only if it is really necessary, because it
       costs time and memory. More instances means more-frequent garbage collection what
       lowers user-experience (freezes).

   -   use native built-in methods - they're written in C/C++ what makes them faster about
       10-100 times than implemented JAVA code (loops etc.). However note that calling native
       method is more expensive then calling implemented one.

   -   virtual over interface - in conventional programming it is usual to declare variables as
       interfaces, i.e.:
       Map myMap1 = new HashMap();
       It is not good for embedded applications. Calling a method from interfaces
       takes 2 times more time than in normal way: HashMap myMap2 = new HashMap();

   -   static over virtual - declare methods static if they do not need access to the object's
       fields. It can be called faster, because it doesn't require a virtual method table
       indirection. It's also good practice, because you can tell from the method signature that
       calling the method can't alter the object's state.

   -   cache field lookups, because accessing object fields is lower than local variables. The
       same situation is with methods - i.e. by for-statements, you should cache size() method
       if it is possible:




                                          Android Team 2009                                         7
2.6 Future possibilities

Android sits alongside a new wave of mobile operating systems designed for increasingly
powerful mobile hardware. Windows Mobile and Apple’s iPhone now provide a richer, simplified
development environment for mobile applications. However, unlike Android, they’re built on
proprietary operating systems that often prioritize native applications over those created by third
parties and restrict communication among applications and native phone data. Android offers
new possibilities for mobile applications by offering an open development environment built on
an open source Linux kernel. Hardware access is available to all applications through a series of
API libraries, and application interaction, while carefully controlled, is fully supported.

In Android, all applications have equal standing. Third-party and native Android applications are
written using the same APIs and are executed on the same run time. Users can remove and
replace any native application with a third-party developer alternative; even the dialer and home
screens can be replaced.


•   Google Android Sales to Overtake iPhone in 2012

•   The OHA is committed to make their vision a reality: to deploy the Android platform for
    every mobile operator, handset manufacturers and developers to build innovative devices

•   Intel doesn’t want to lose ownership of the netbook market, so they need to prepare for
    anything, including Android

•   Fujitsu launched an initiative to offer consulting and engineering expertise to help run
    Android on embedded hardware, which aside from cellphones, mobile internet devices, and
    portable media players, could include GPS devices, thin-client computers and set-top boxes.

•   More Android devices are coming and some will push the envelope even further




                                          Android Team 2009                                           8
3 Software Development

3.1 Development Requirements

Developing an application on the Android platform requires the following:
   - knowledge of programming in Java
   -   knowledge of XML (optional but recommended)
   -   Android SDK (requires x86 OS like Windows, Linux, Mac; JDK version >=5)
   -   Eclipse IDE (at least version 3.3) with Android Development Tools (ADT) plug-in
       (optional but recommended)
   -   Android powered smartphone (optional for testing purposes)

Notice that JavaME and JavaSE applications aren’t runnable on Android as the class libraries as
well as the generated bytecode are different.


3.2 IDE and Tools

Android SDK
Beside of the actual java class library the Android SDK (latest version 1.1r1) contains all the
tools that are necessary to build an Android application. Typically every Android SDK version
consists of:

Developer Tools
As already mentioned above the SDK comes with a bunch of tools that relieve the creation of an
Android app. In the following only the most important tools are described:

   -   aapt - Android Asset Packaging Tool
       Creates *.apk-files which contain all the resources as well as the program itself. Those
       ZIP-format based files can be transferred to and installed on an Android phone or the
       emulator.

   -   adb – Android Debug Bridge
       The main purpose of this tool is to set up connections to a real Android device or an
       Android emulator instance in order to transfer and install (apk)-files on it. With adb the
       developer also has the possibility to remote control the devices shell.

   -   dx – Dalvik Cross-Assembler
       The dx is used for merging and converting Java-Standard-ByteCode Classes (*.class) into
       one single binary file (*.dex) that can be executed by the Dalvik VM. These *.dex-files
       are subject to be put into an *.apk-file together with resource files.

   -   ddms - Dalvik Debug Monitor Service
       This tool provides port-forwarding services, screen capture on the device, thread and
       heap information on the device, logcat, process and radio state information, incoming
       call and SMS spoofing, location data spoofing, and more.



                                          Android Team 2009                                         9
Emulator and System Images
The SDK also contains an emulator that is able to simulate almost all the functionality of an
actual Android device. This is achieved by booting so called system images which represent the
Android OS with the whole software stack of a real Android device.

Documentation, Sample Code
Of course the SDK also provides the developer with a comprehensive documentation which
consists not only of an API reference but also of programming guidelines as well as detailed
descriptions for the several tools. There are also a few code examples that will allow
understanding the typical workflow of an Android application right away.

IDE Support
Although it is possible to develop Android apps with every modern IDE Google recommends
doing so is by using the Eclipse IDE with a special plug-in called ADT (Android Development
Tools). The ADT makes use of all the Dev Tools that come with the SDK and therefore supports
and simplifies all the steps from assembling the classes over packaging and signing to running
the final application on the emulator.

The ADT is not just speeding up the testing process but also relieves the developers work in
terms of UI creation and application description. For that reason the ADT offers the developer
graphical representations of what has otherwise have to be written in XML.




                                         Android Team 2009                                       10
3.3 Programming language(s)

The officially supported programming language on the Android platform is Java. It is also
recommended to have some knowledge of XML as the descriptor file as well as the user
interface of an application is based on that.

As the Linux kernel of the Android platform is based upon an ARM processor architecture it
would also be possible to write code in C or other languages and compile it to ARM native code.




                                         Android Team 2009                                        11
4 Overall Evaluation
4.1 Advantages

There are a host of advantages that Google’s Android will derive from being an open source
software. Some of the advantages include:

   -   The ability for anyone to customize the Google Android platform will open up the
       applications playing field to small and new players who lack the financial muscle to
       negotiate with wireless carriers like AT&T and Orange.

   -   The consumer will benefit from having a wide range of mobile applications to choose
       from since the monopoly will be broken by Google Android.

   -   Although this will depend on the carrier, one will be able to customize a mobile phones
       using Google Android platform like never before, right down to the screen.

   -   Features like weather details, opening screen, live RSS feeds and even the icons on the
       opening screen will be able to be customized.

   -   In addition, as a result of many mobile phones carrying Google Android, companies will
       come up with such innovative products like the location – aware services that will
       provide users with any information they might be in need of.

   -   This information could include knowing the location of a nearby convenience store or
       filling station. In addition the entertainment functionalities will be taken a notch higher
       by Google Android being able to offer online real time multiplayer games.




                                          Android Team 2009                                          12
4.2 Limitations

Bluetooth limitations
Google Talk functions and only the simplest implementation of Bluetooth. It'll work with
Bluetooth headsets but that's about it; no Bluetooth stereo, no contacts exchange, no modem
pairing and no using wireless keyboards.
Android uses a non-standard jvm: there is no guarantee that the same software will run on
multiple devices

Firefox Mobile isn't coming to Android because of Android Limitations
Fennec won't play nice with Android Market because apps in Android Market need to be
programmed with a custom form of Java to run on Android. Mozilla and the Fennec peeps won't
have that and won't be releasing any form of Firefox until Google amends the limitation of
Android Apps.


4.3 Conclusion

We can only hope that the next versions of Android have overcome the actual limitations and
that the future possibilities became a reality.




                                        Android Team 2009                                     13

More Related Content

What's hot

Android unveiled (I)
Android unveiled (I)Android unveiled (I)
Android unveiled (I)denian00
 
Android internals
Android internalsAndroid internals
Android internalsrabah3
 
Resume_Appaji
Resume_AppajiResume_Appaji
Resume_AppajiAppaji K
 
Marakana Android Internals
Marakana Android InternalsMarakana Android Internals
Marakana Android InternalsMarko Gargenta
 
Android for Java Developers
Android for Java DevelopersAndroid for Java Developers
Android for Java DevelopersMarko Gargenta
 
Introduction to Mobile Application Development
Introduction to Mobile Application DevelopmentIntroduction to Mobile Application Development
Introduction to Mobile Application DevelopmentSenthil Kanth
 
Connected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discoveryConnected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discoveryTalentica Software
 
Android development classes in chandigarh : Big Boxx Academy
Android development classes in chandigarh : Big Boxx AcademyAndroid development classes in chandigarh : Big Boxx Academy
Android development classes in chandigarh : Big Boxx AcademyBig Boxx Animation Academy
 
Android For Java Developers
Android For Java DevelopersAndroid For Java Developers
Android For Java DevelopersMike Wolfson
 
Javame sdk-datasheet-167819
Javame sdk-datasheet-167819Javame sdk-datasheet-167819
Javame sdk-datasheet-167819Oscar Eduardo
 

What's hot (20)

Android unveiled (I)
Android unveiled (I)Android unveiled (I)
Android unveiled (I)
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Android internals
Android internalsAndroid internals
Android internals
 
Resume_Appaji
Resume_AppajiResume_Appaji
Resume_Appaji
 
Android development tutorial
Android development tutorialAndroid development tutorial
Android development tutorial
 
Wifi sharing
Wifi sharingWifi sharing
Wifi sharing
 
Marakana Android Internals
Marakana Android InternalsMarakana Android Internals
Marakana Android Internals
 
J2ME GUI Programming
J2ME GUI ProgrammingJ2ME GUI Programming
J2ME GUI Programming
 
Android for Java Developers
Android for Java DevelopersAndroid for Java Developers
Android for Java Developers
 
Open Android
Open AndroidOpen Android
Open Android
 
480 483
480 483480 483
480 483
 
Introduction to Mobile Application Development
Introduction to Mobile Application DevelopmentIntroduction to Mobile Application Development
Introduction to Mobile Application Development
 
Connected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discoveryConnected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discovery
 
CV_Prathap (1)
CV_Prathap (1)CV_Prathap (1)
CV_Prathap (1)
 
Android development classes in chandigarh : Big Boxx Academy
Android development classes in chandigarh : Big Boxx AcademyAndroid development classes in chandigarh : Big Boxx Academy
Android development classes in chandigarh : Big Boxx Academy
 
Android For Java Developers
Android For Java DevelopersAndroid For Java Developers
Android For Java Developers
 
HR OPERATION MANAGER
HR OPERATION MANAGERHR OPERATION MANAGER
HR OPERATION MANAGER
 
Fm3610071011
Fm3610071011Fm3610071011
Fm3610071011
 
CV_Serhiy_Medvedyev_2015
CV_Serhiy_Medvedyev_2015CV_Serhiy_Medvedyev_2015
CV_Serhiy_Medvedyev_2015
 
Javame sdk-datasheet-167819
Javame sdk-datasheet-167819Javame sdk-datasheet-167819
Javame sdk-datasheet-167819
 

Similar to Android

Mobile Android and Network
Mobile Android and NetworkMobile Android and Network
Mobile Android and NetworkPadma Sankar
 
Ch1 hello, android
Ch1 hello, androidCh1 hello, android
Ch1 hello, androidJehad2012
 
Google android white paper
Google android white paperGoogle android white paper
Google android white paperSravan Reddy
 
Getting started with android
Getting started with androidGetting started with android
Getting started with androidamitgb
 
Android- Introduction for Beginners
Android- Introduction for BeginnersAndroid- Introduction for Beginners
Android- Introduction for BeginnersTripti Tiwari
 
Android 130923124440-phpapp01
Android 130923124440-phpapp01Android 130923124440-phpapp01
Android 130923124440-phpapp01rajesh kumar
 
Android seminar-report-body.doc
Android seminar-report-body.docAndroid seminar-report-body.doc
Android seminar-report-body.docDeepak Yadav
 
Evolution of Android Operating System and it’s Versions
Evolution of Android Operating System and it’s VersionsEvolution of Android Operating System and it’s Versions
Evolution of Android Operating System and it’s Versionsijtsrd
 
An brief introduction to android operating system
An brief introduction to android operating systemAn brief introduction to android operating system
An brief introduction to android operating systemAlexander Decker
 
Unit 1-android-and-its-tools-ass
Unit 1-android-and-its-tools-assUnit 1-android-and-its-tools-ass
Unit 1-android-and-its-tools-assARVIND SARDAR
 
Androidoverview 100405150711-phpapp01
Androidoverview 100405150711-phpapp01Androidoverview 100405150711-phpapp01
Androidoverview 100405150711-phpapp01Santosh Sh
 
cloud computing and android
cloud computing and androidcloud computing and android
cloud computing and androidMohit Singh
 
01 what is android
01 what is android01 what is android
01 what is androidC.o. Nieto
 

Similar to Android (20)

Android
AndroidAndroid
Android
 
Mobile Android and Network
Mobile Android and NetworkMobile Android and Network
Mobile Android and Network
 
Ch1 hello, android
Ch1 hello, androidCh1 hello, android
Ch1 hello, android
 
Google android white paper
Google android white paperGoogle android white paper
Google android white paper
 
Android os
Android osAndroid os
Android os
 
Getting started with android
Getting started with androidGetting started with android
Getting started with android
 
Android Anatomy
Android  AnatomyAndroid  Anatomy
Android Anatomy
 
Android
Android Android
Android
 
Android- Introduction for Beginners
Android- Introduction for BeginnersAndroid- Introduction for Beginners
Android- Introduction for Beginners
 
Android apps
Android appsAndroid apps
Android apps
 
Android 130923124440-phpapp01
Android 130923124440-phpapp01Android 130923124440-phpapp01
Android 130923124440-phpapp01
 
Android seminar-report-body.doc
Android seminar-report-body.docAndroid seminar-report-body.doc
Android seminar-report-body.doc
 
PPT Companion to Android
PPT Companion to AndroidPPT Companion to Android
PPT Companion to Android
 
Android
Android Android
Android
 
Evolution of Android Operating System and it’s Versions
Evolution of Android Operating System and it’s VersionsEvolution of Android Operating System and it’s Versions
Evolution of Android Operating System and it’s Versions
 
An brief introduction to android operating system
An brief introduction to android operating systemAn brief introduction to android operating system
An brief introduction to android operating system
 
Unit 1-android-and-its-tools-ass
Unit 1-android-and-its-tools-assUnit 1-android-and-its-tools-ass
Unit 1-android-and-its-tools-ass
 
Androidoverview 100405150711-phpapp01
Androidoverview 100405150711-phpapp01Androidoverview 100405150711-phpapp01
Androidoverview 100405150711-phpapp01
 
cloud computing and android
cloud computing and androidcloud computing and android
cloud computing and android
 
01 what is android
01 what is android01 what is android
01 what is android
 

Recently uploaded

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 

Recently uploaded (20)

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 

Android

  • 1. TEAM MEMBERS Martin Jantscher – FH Joanneum Mohammed Talhaoui – Artesis Hogeschool Antwerpen Denis De Vos – Haute École Provinciale de Mons-Borinage-Centre Ivan Cunha – Escola Superior de Comunicação Social Artur Roszcyk – Wyzsza Szkola Informatyki Mikhail Datsyuk – Central Ostrobothnia
  • 2. 1 Introduction What is Android? Android is a software platform and operating system for mobile devices, based on the Linux kernel, developed by Google and later the Open Handset Alliance. It allows developers to write managed code in the Java language, controlling the device via Google-developed Java libraries. Applications written in C and other languages can be compiled to ARM native code and run, but this development path is not officially supported by Google. The unveiling of the Android platform on 5 November 2007 was announced with the founding of the Open Handset Alliance, a consortium of 48 hardware, software, and telecom companies devoted to advancing open standards for mobile devices. Google released most of the Android code under the Apache license, a free-software and open source license. What is The Open Handset Alliance? Open Handset Alliance, is a consortium of several companies which include Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, Sprint Nextel and NVIDIA, ... These companies which aim to develop technologies that will significantly lower the cost of developing and distributing mobile devices and services. The Android platform is the first step in this direction -- a fully integrated mobile "software stack" that consists of an operating system, middleware, user-friendly interface and applications. License Android is under version 2 of the Apache Software License (ASL). The Apache license allows manufacturers and mobile operators to innovate using the platform without the requirement to contribute those innovations back to the open source community. Android Team 2009 2
  • 3. 2 Platform 2.1 Hardware First and foremost, Android is a software stack for mobile devices. This means that high on the list of priorities is the preservation of battery power and the efficient management of limited memory resources. There are five distinct layers to the Android system stack: • The Acorn RISC Machine (ARM) Linux core forms the solid base upon which all the other layers stand. Linux is a proven technology that is highly reliable, and the ARM processor family is known for high performance on very low power requirements. • The libraries provide the reusable and sharable low-level code for basic functions such as codecs — software for coding and decoding digital sound and video — functions for the presentation of rich graphics on a small displays, secure shell support for encrypted TCP/IP traffic into the cloud, as well as component support for Web browsing (WebKit), SQL database functionality (SQLite), and standard C library functionality you would expect in a Linux system. • The Dalvik run-time byte-code interpreter, which strongly resembles the Java™ language byte-code interpreter, adds a few distinct features that uniquely define the security and power-preserving model of Android. Every application currently running, for example, has its own user ID and its own copy of the interpreter running to strictly separate processes for security and reliability. • The Android application framework enables you to use and replace components as you see fit. These high-level Java classes are tightly integrated components that define the Android API. • The Android core applications include the WebKit browser, Google calendar, Gmail, Maps application, SMS messenger, and a standard e-mail client, among others. Android applications are written in the Java programming language, and you can download many more from the Android market on the fly. Android is not a single piece of hardware; it's a complete, end-to-end software platform that can be adapted to work on any number of hardware configurations. Everything is there, from the bootloader all the way up to the applications. And with an Android device already on the market, it has proven that it has what it takes to truly compete in the mobile arena. Android Team 2009 3
  • 4. 2.2 Operating System(s) Android uses Linux for its device drivers, memory management, process management, and networking. However you will never be programming to this layer directly. The next level up contains the Android native libraries. They are all written in C/C++ internally, but you’ll be calling them through Java interfaces. In this layer you can find the Surface Manager (for compositing windows), 2D and 3D graphics, Media codecs (MPEG-4, H.264, MP3, etc.), the SQL database (SQLite), and a native web browser engine (WebKit). Next is the Android runtime, including the Dalvik Virtual Machine. Dalvik runs dex files, which are converted at compile time from standard class and jar files. Dex files are more compact and efficient than class files, an important consideration for the limited memory and battery powered devices that Android targets. The core Java libraries are also part of the Android runtime. They are written in Java, as is everything above this layer. Here, Android provides a substantial subset of the Java 5 Standard Edition packages, including Collections, I/O, and so forth. The next level up is the Application Framework layer. Parts of this toolkit are provided by Google, and parts are extensions or services that you write. The most important component of Android Team 2009 4
  • 5. the framework is the Activity Manager, which manages the life cycle of applications and a common “back-stack” for user navigation. Finally, the top layer is the Applications layer. Most of your code will live here, along side built-in applications such as the Phone and Web Browser 2.3 Network Connectivity It supports wireless communications using: • GSM mobile-phone technology • 3G • Edge • 802.11 Wi-Fi networks Android Team 2009 5
  • 6. 2.4 Security Android is a multi-process system, in which each application (and parts of the system) runs in its own process. Most security between applications and the system is enforced at the process level through standard Linux facilities, such as user and group IDs that are assigned to applications. Additional finer-grained security features are provided through a "permission" mechanism that enforces restrictions on the specific operations that a particular process can perform, and per- URI permissions for granting ad-hoc access to specific pieces of data. Security Architecture A central design point of the Android security architecture is that no application, by default, has permission to perform any operations that would adversely impact other applications, the operating system, or the user. This includes reading or writing the user's private data (such as contacts or e-mails), reading or writing another application's files, performing network access, keeping the device awake, etc. An application's process is a secure sandbox. It can't disrupt other applications, except by explicitly declaring the permissions it needs for additional capabilities not provided by the basic sandbox. These permissions it requests can be handled by the operating in various ways, typically by automatically allowing or disallowing based on certificates or by prompting the user. The permissions required by an application are declared statically in that application, so they can be known up-front at install time and will not change after that. Android Team 2009 6
  • 7. 2.5 Performance Devices hosting Android applications have limited capabilities. That's why code should be efficient, avoid all unnecessary memory allocations, method calls (it takes a lot of time) and so on. In order to make our applications working fast on a mobile device we need to leave back some habits, good from OOP point of view. In a mobile device we are not able to make a full model of reality what we want to operate on. Few things to remember: - avoid object instantiation - create objects only if it is really necessary, because it costs time and memory. More instances means more-frequent garbage collection what lowers user-experience (freezes). - use native built-in methods - they're written in C/C++ what makes them faster about 10-100 times than implemented JAVA code (loops etc.). However note that calling native method is more expensive then calling implemented one. - virtual over interface - in conventional programming it is usual to declare variables as interfaces, i.e.: Map myMap1 = new HashMap(); It is not good for embedded applications. Calling a method from interfaces takes 2 times more time than in normal way: HashMap myMap2 = new HashMap(); - static over virtual - declare methods static if they do not need access to the object's fields. It can be called faster, because it doesn't require a virtual method table indirection. It's also good practice, because you can tell from the method signature that calling the method can't alter the object's state. - cache field lookups, because accessing object fields is lower than local variables. The same situation is with methods - i.e. by for-statements, you should cache size() method if it is possible: Android Team 2009 7
  • 8. 2.6 Future possibilities Android sits alongside a new wave of mobile operating systems designed for increasingly powerful mobile hardware. Windows Mobile and Apple’s iPhone now provide a richer, simplified development environment for mobile applications. However, unlike Android, they’re built on proprietary operating systems that often prioritize native applications over those created by third parties and restrict communication among applications and native phone data. Android offers new possibilities for mobile applications by offering an open development environment built on an open source Linux kernel. Hardware access is available to all applications through a series of API libraries, and application interaction, while carefully controlled, is fully supported. In Android, all applications have equal standing. Third-party and native Android applications are written using the same APIs and are executed on the same run time. Users can remove and replace any native application with a third-party developer alternative; even the dialer and home screens can be replaced. • Google Android Sales to Overtake iPhone in 2012 • The OHA is committed to make their vision a reality: to deploy the Android platform for every mobile operator, handset manufacturers and developers to build innovative devices • Intel doesn’t want to lose ownership of the netbook market, so they need to prepare for anything, including Android • Fujitsu launched an initiative to offer consulting and engineering expertise to help run Android on embedded hardware, which aside from cellphones, mobile internet devices, and portable media players, could include GPS devices, thin-client computers and set-top boxes. • More Android devices are coming and some will push the envelope even further Android Team 2009 8
  • 9. 3 Software Development 3.1 Development Requirements Developing an application on the Android platform requires the following: - knowledge of programming in Java - knowledge of XML (optional but recommended) - Android SDK (requires x86 OS like Windows, Linux, Mac; JDK version >=5) - Eclipse IDE (at least version 3.3) with Android Development Tools (ADT) plug-in (optional but recommended) - Android powered smartphone (optional for testing purposes) Notice that JavaME and JavaSE applications aren’t runnable on Android as the class libraries as well as the generated bytecode are different. 3.2 IDE and Tools Android SDK Beside of the actual java class library the Android SDK (latest version 1.1r1) contains all the tools that are necessary to build an Android application. Typically every Android SDK version consists of: Developer Tools As already mentioned above the SDK comes with a bunch of tools that relieve the creation of an Android app. In the following only the most important tools are described: - aapt - Android Asset Packaging Tool Creates *.apk-files which contain all the resources as well as the program itself. Those ZIP-format based files can be transferred to and installed on an Android phone or the emulator. - adb – Android Debug Bridge The main purpose of this tool is to set up connections to a real Android device or an Android emulator instance in order to transfer and install (apk)-files on it. With adb the developer also has the possibility to remote control the devices shell. - dx – Dalvik Cross-Assembler The dx is used for merging and converting Java-Standard-ByteCode Classes (*.class) into one single binary file (*.dex) that can be executed by the Dalvik VM. These *.dex-files are subject to be put into an *.apk-file together with resource files. - ddms - Dalvik Debug Monitor Service This tool provides port-forwarding services, screen capture on the device, thread and heap information on the device, logcat, process and radio state information, incoming call and SMS spoofing, location data spoofing, and more. Android Team 2009 9
  • 10. Emulator and System Images The SDK also contains an emulator that is able to simulate almost all the functionality of an actual Android device. This is achieved by booting so called system images which represent the Android OS with the whole software stack of a real Android device. Documentation, Sample Code Of course the SDK also provides the developer with a comprehensive documentation which consists not only of an API reference but also of programming guidelines as well as detailed descriptions for the several tools. There are also a few code examples that will allow understanding the typical workflow of an Android application right away. IDE Support Although it is possible to develop Android apps with every modern IDE Google recommends doing so is by using the Eclipse IDE with a special plug-in called ADT (Android Development Tools). The ADT makes use of all the Dev Tools that come with the SDK and therefore supports and simplifies all the steps from assembling the classes over packaging and signing to running the final application on the emulator. The ADT is not just speeding up the testing process but also relieves the developers work in terms of UI creation and application description. For that reason the ADT offers the developer graphical representations of what has otherwise have to be written in XML. Android Team 2009 10
  • 11. 3.3 Programming language(s) The officially supported programming language on the Android platform is Java. It is also recommended to have some knowledge of XML as the descriptor file as well as the user interface of an application is based on that. As the Linux kernel of the Android platform is based upon an ARM processor architecture it would also be possible to write code in C or other languages and compile it to ARM native code. Android Team 2009 11
  • 12. 4 Overall Evaluation 4.1 Advantages There are a host of advantages that Google’s Android will derive from being an open source software. Some of the advantages include: - The ability for anyone to customize the Google Android platform will open up the applications playing field to small and new players who lack the financial muscle to negotiate with wireless carriers like AT&T and Orange. - The consumer will benefit from having a wide range of mobile applications to choose from since the monopoly will be broken by Google Android. - Although this will depend on the carrier, one will be able to customize a mobile phones using Google Android platform like never before, right down to the screen. - Features like weather details, opening screen, live RSS feeds and even the icons on the opening screen will be able to be customized. - In addition, as a result of many mobile phones carrying Google Android, companies will come up with such innovative products like the location – aware services that will provide users with any information they might be in need of. - This information could include knowing the location of a nearby convenience store or filling station. In addition the entertainment functionalities will be taken a notch higher by Google Android being able to offer online real time multiplayer games. Android Team 2009 12
  • 13. 4.2 Limitations Bluetooth limitations Google Talk functions and only the simplest implementation of Bluetooth. It'll work with Bluetooth headsets but that's about it; no Bluetooth stereo, no contacts exchange, no modem pairing and no using wireless keyboards. Android uses a non-standard jvm: there is no guarantee that the same software will run on multiple devices Firefox Mobile isn't coming to Android because of Android Limitations Fennec won't play nice with Android Market because apps in Android Market need to be programmed with a custom form of Java to run on Android. Mozilla and the Fennec peeps won't have that and won't be releasing any form of Firefox until Google amends the limitation of Android Apps. 4.3 Conclusion We can only hope that the next versions of Android have overcome the actual limitations and that the future possibilities became a reality. Android Team 2009 13