Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice -...
Transcript of Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice -...
![Page 1: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/1.jpg)
Programming with Android: System Architecture
Luca Bedogni Marco Di Felice
Dipartimento di Scienze dell’Informazione Università di Bologna
![Page 2: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/2.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 2
Outline
Android Components: Content Providers
Android Components: Services
Android Components: Intents
Android Components: Activities
Android Dalvik Java Virtual Machine
Android Architecture: An Overview
Android Application Distribution and Markets
![Page 3: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/3.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 3
Android … What? v Android is a Linux-based platform for mobile
devices …
§ Operating System § Middleware § Applications § Software Development Kit (SDK)
v Which kind of mobile devices … (examples)
SMARTPHONES TABLETS EREADERS ANDROID TV GOOGLE GLASSES ?
![Page 4: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/4.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4
Android … When?
Ø Google buys Android from the Android Inch
Ø Open Handset Alliance (OHA) created for open standards for mobile devices. Partners of OHA: Google, Motorola, Samsung, Vodafone, T-Mobile, etc
Ø Android 1.0 Released
Ø The first Android smartphone: G1 HTC-Dream
Ø Android 1.1 Released Ø Android 1.5 (CupCake) Released
2005
2006
2007
2008
2009
Time
![Page 5: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/5.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 5
Android … When?
Ø Android 1.6 (Donut) Released
Ø Android 2.0 (Eclair) Released
Ø Android 2.2 (Froyo) Released
Ø Android 2.3 (Gingerbread) Released
Ø Android 3.0 (Honeycomb) Released (First version for devices with larger screens such as tablets)
Ø Android 4.0 (Ice-Cream Sandwich) Released. (It merges the 3.x tab centric design and the v2.x phone based design into a single version.)
2008
2009
2010
2011
2012
Time
![Page 6: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/6.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 6
Android … When?
Ø Android 4.2 (Jelly Bean) Released
Ø Gesture Mode for Accessibility Ø Improved browser performance Ø Easy data-sharing through NFC Ø Improved camera and face recognition functionalities Ø …
API Level 17 (Android 4.2):
Ø Daydream: screensaver customization API Ø Support to multi-user environments Ø Nested fragments for UI improvements Ø …
2012
2013
Time
KEY LIME PIE
![Page 7: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/7.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 7
Android … When?
http://developer.android.com/about/dashboards/index.html http://www.appbrain.com/stats/android-market-app-categories
ANDROID DISTRIBUTIONS ANDROID APPLICATIONS
x
![Page 8: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/8.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 8
Android … When?
ANDROID VERSION HISTORY AND POPULARITY
(2009-2013)
http://en.wikipedia.org/wiki/Android_version_history
2.3.x
2.2.x 1.6-2.0
4.x
![Page 9: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/9.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 9
The Android Architecture
} Stack Architecture
Open Source Architecture (Apache/MIT License v. 2.0) Business-friendly License
![Page 10: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/10.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 10
The Android Architecture
Built on top of Linux kernel (v. 2.6-3.0) Advantages: Ø Portability (i.e. easy to
compile on different harwdare architectures)
Ø Security (e.g. secure multi-process environment)
Ø Power Management
![Page 11: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/11.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 11
The Android Architecture
Native Libraries (C/C++ code) Ø Graphics (Surface Manager)
Ø Multimedia (Media Framework)
Ø Database DBMS (SQLite)
Ø Font Management (FreeType)
Ø WebKit
Ø C libraries (Bionic)
Ø ….
![Page 12: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/12.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 12
The Android Architecture
Application Libraries (Core Components of Android) Ø Activity Manager
Ø Packet Manager
Ø Telephony Manager
Ø Location Manager
Ø Contents Provider
Ø Notification Manager
Ø ….
![Page 13: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/13.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 13
The Android Architecture
Applications (Written in Java code) Ø Android Play Store
Ø Entertainment
Ø Productivity
Ø Personalization
Ø Education
Ø Geo-communication
Ø ….
![Page 14: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/14.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 14
The Android Architecture
Dalvik Virtual Machine (VM) Ø Novel Java Virtual
Machine implementation (not using the Oracle JVM)
Ø Open License (Oracle JVM is not open!)
Ø Optimized for memory-constrained devices
Ø Faster than Oracle JVM
Ø ….
![Page 15: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/15.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 15
Dalvik Java Virtual Machine (JVM)
Java Source Code
Java Byte Code
Java Virtual Machine (JVM)
Java Source Code
Java Byte Code
Dalvik Byte Code
Dalvik Virtual Machine (VM)
Java Compiler
Java Compiler
Dex Compiler
Stack-based byte-code
Register-based byte-code
Java Standard Edition
![Page 16: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/16.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 16
Android Applications Design
Ø GUI Definition
Ø Events Management
Ø Application Data Management
Ø Background Operations
Ø User Notifications
APPLICATION DESIGN:
![Page 17: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/17.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 17
Android Applications Design
Ø Activities
Ø Intents
Ø Services
Ø Content Providers
Ø Broadcast Receivers
APPLICATION COMPONENTS
![Page 18: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/18.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 18
Android Components: Activities
Ø An Activity corresponds to a single screen of the Application.
Ø An Application can be composed of multiples screens (Activities).
Ø The Home Activity is shown when the user launches an application.
Ø Different activities can exhange information one with each other.
Hello World!
Android HelloWorld
Button1
![Page 19: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/19.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 19
Android Components: Activities
Ø Each activity is composed by a list of graphics components. Ø Some of these components (also called Views) can interact
with the user by handling events (e.g. Buttons). Ø Two ways to build the graphic interface:
Example: Button button=new Button (this); TextView text= new TextView(); text.setText(“Hello world”);
PROGRAMMATIC APPROACH
![Page 20: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/20.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 20
Android Components: Activities
Ø Each activity is composed by a list of graphics components. Ø Some of these components (also called Views) can interact
with the user by handling events (e.g. Buttons). Ø Two ways to build the graphic interface:
Example: < TextView android.text=@string/hello” android:textcolor=@color/blue android:layout_width=“fill_parent” android:layout_height=“wrap_content” /> < Button android.id=“@+id/Button01” android:textcolor=“@color/blue” android:layout_width=“fill_parent” android:layout_height=“wrap_content” />
DECLARATIVE APPROACH
![Page 21: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/21.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 21
- Build the application layout through XML files (like HTML)
- Define two different XML layouts for two different devices
- At runtime, Android detects the current device configuration and loads the appropriate resources for the application
- No need to recompile! - Just add a new XML file if you
need to support a new device
EXAMPLE
Device 1 HIGH screen pixel density
Device 2 LOW screen pixel density
XML Layout File Device 1
XML Layout File Device 2
Java App Code
Android Components: Activities
![Page 22: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/22.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 22
Android Components: Activities
Ø Android applications typically use both the approaches!
DECLARATIVE APPROACH
PROGRAMMATIC APPROACH
Define the Application layouts and resources used by the Application (e.g. labels).
Manages the events, and handles the interaction with the user.
XML Code
Java Code
![Page 23: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/23.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 23
Android Components: Activities
Ø Views can generate events (caused by human interactions) that must be managed by the Android-developer.
public void onClick(View arg0) { if (arg0 == Button) { // Manage Button events }
}
ESEMPIO
But
ton
Text
Edi
t
![Page 24: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/24.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 24
Android Components: Activities
Ø The Activity Manager is responsible for creating, destroying, managing activities.
Ø Activities can be on different states: starting, running, stopped, destroyed, paused.
Ø Only one activity can be on the running state at a time.
Ø Activities are organized on a stack, and have an event-driven life cycle (details later …)
![Page 25: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/25.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 25
Android Components: Activities
Ø Main difference between Android-programming and Java (Oracle) -programming:
Ø Mobile devices have constrained resource capabilities!
Ø Activity lifetime depends on users’ choice (i.e. change of visibility) as well as on system contraints (i.e. memory shortage).
Ø Developer must implement lifecycle methods to account for state changes of each Activity …
![Page 26: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/26.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 26
Android Components: Activities
public class MyApp extends Activity {
public void onCreate() { ... } public void onPause() { ... } public void onStop() { ... } public void onDestroy(){ ... } ….
}
Called when the Activity is created the first time.
Called when the Activity is partially visible.
Called when the Activity is no longer visible.
Called when the Activity is dismissed.
![Page 27: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/27.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 27
Android Components: Intents
Ø Intents: asynchronous messages to activate core Android components (e.g. Activities).
Ø Explicit Intent à The component (e.g. Activity1) specifies the destination of the intent (e.g. Activity 2).
LOGIN
PASSWORD
Login
marco
**********
Welcome Marco!
Login Intent
Act
ivity
1
Act
ivity
2
![Page 28: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/28.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 28
Android Components: Intents
Ø Intents: asynchronous messages to activate core Android components (e.g. Activities).
Ø Implicit Intent à The component (e.g. Activity1) specifies the type of the intent (e.g. “View a video”).
View
Implicit Intent
Act
ivity
1
Act
ivity
2 A
ctiv
ity2
Multiple choices might be available
to the user! } Intent- Filters
![Page 29: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/29.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 29
Android Components: Services
Ø Services: like Activities, but run in background and do not provide an user interface.
Ø Used for non-interactive tasks (e.g. networking). Ø Service life-time composed of 3 states:
Starting Destroyed
Running
(on background)
onCreate() onStart() onDestroy()
![Page 30: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/30.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 30
Android Components: Content Providers
Ø Each Android application has its own private set of data (managed through files or through SQLite database).
Ø Content Providers: Standard interface to access and share data among different applications.
DB
APP insert()
update()
delete()
query()
Content Provider
e.g. Photo Gallery
![Page 31: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/31.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 31
Android Components: Broadcast Receivers
Ø Publish/Subscribe paradigm
Ø Broadcast Receivers: An application can be signaled of external events.
Ø Notification types: Call incoming, SMS delivery, Wifi network detected, etc
![Page 32: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/32.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 32
Android Components: Broadcast Receivers
class WifiReceiver extends BroadcastReceiver { public void onReceive(Context c, Intent intent) { String s = new StringBuilder(); wifiList = mainWifi.getScanResults(); for(int i = 0; i < wifiList.size(); i++){ s.append(new Integer(i+1).toString() + "."); s.append((wifiList.get(i)).toString()); s.append("\\n"); } mainText.setText(sb); } }
BROADCAST RECEIVER example
![Page 33: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/33.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 33
Android Components: Broadcast Receivers
public class WifiTester extends Activity { WifiManager mainWifi;
WifiReceiver receiverWifi; List<ScanResult> wifiList;
public void onCreate(Bundle savedInstanceState) { … mainWifi = (WifiManager) getSystemService
(Context.WIFI_SERVICE); receiverWifi = new WifiReceiver(); registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mainWifi.startScan(); }
BROADCAST RECEIVER example
![Page 34: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/34.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 34
Android Components: System API
Ø Using the components described so far, Android applications can then leverage the system API …
Ø Telephony Manager data access (call, SMS, etc) Ø Sensor management (GPS, accelerometer, etc) Ø Network connectivity (Wifi, bluetooth, NFC, etc) Ø Web surfing (HTTP client, WebView, etc) Ø Storage management (files, SQLite db, etc) Ø ….
SOME EXAMPLEs …
![Page 35: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/35.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 35
Android Components: Google API
Ø … or easily interface with other Google services:
![Page 36: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/36.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 36
Ø Each Android application is contained on a single APK file.
Ø Java Byte-code (compiled for Dalvik JVM)
Ø Resources (e.g. images. videos, XML layout files)
Ø Libraries (optimal native C/C++ code)
APK FILE
XML Files
C
Android Application Distribution
![Page 37: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/37.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 37
Android Application Distribution
Ø Each application must be signed through a key before being distributed.
Ø Applications can be distributed via Web or via Stores.
Ø Android Play Store: application store run by Google … but several other application stores are available (they are just normal applications).
![Page 38: Programming with Android: System Architecture · 2013-03-08 · Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 4 Android … When? # Google buys](https://reader034.fdocuments.in/reader034/viewer/2022043019/5f3b4fa6b1ce1338585b63dd/html5/thumbnails/38.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – System Architecture 38
Android Application Security
Ø Android applications run with a distinct system identity (Linux user ID and group ID), in an isolated way.
Ø Applications must explicitly share resources and data. They do this by declaring the permissions they need for additional capabilities. Ø Applications statically declare the permissions they require. Ø User must give his/her consensus during the installation.
<uses-‐permission android:name=“android.permission.IACCESS_FINE_LOCATION" /> <uses-‐permission android:name=“android.permission.INTERNET" />
ANDROIDMANIFEST.XML