Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Android
Αλάπηπμε εθαξκνγώλ
Dr. Αλδξέαο Κνκλελόο
Μάξηηνο 2014
Java
• Χξεηάδεηαη ε θαηαλόεζε ηνπιάρηζησλ ησλ
βαζηθώλ ελλνηώλ Ο/Κ πξνγξακκαηηζκνύ
– Exceptions
– Inner Class, Interface
• ...
Android Basics
Εηζαγφγή ζηο Android
• Αλνηθηή πιαηθόξκα ινγηζκηθνύ γηα θηλεηέο
ζπζθεπέο
• Πιήξεο stack – OS, Middleware, Applications
• Α...
Linux Kernel
• Έρεη ην ξόιν ηνπ HAL
• Device drivers
• Memory management
• Process management
• Networking
Βηβιηοζήθες
• Γξακέλεο ζε C/C++
• Γηεπαθή κέζσ Java
• Surface manager – Handling UI Windows
• 2D and 3D graphics
• Media c...
Android Runtime
• Dalvik VM
– Αξρεία Dex (dalvik executable format)
– Πην ζπκπαγή θαη απνδνηηθά από ηα
παξαδνζηαθά class f...
Application Framework
• API interface
• Activity manager – δηαρεηξίδεηαη ηνλ θύθιν
δσήο ησλ εθαξκνγώλ
Applications
• Δλζσκαησκέλεο θαη εθαξκνγέο ηξίησλ
• Μπνξνύκε λα αληηθαηαζηήζνπκε ηηο
ελζσκαησκέλεο κε δηθέο καο
Εθαρκογές ζε Java
package com.google.android.helloactivity;
import android.app.Activity;
import android.os.Bundle;
public ...
Μεηαγιφηηίδοληαη ζε Dalvik
bytecode
Πεγαίνο θώδηθαο Java
Compiled ζε Java
Μεηαγιώηηηζε ζε Dalvik bytecode
Linux OS
Μεηαθόξ...
Dalvik runtime – εηδηθό γηα
θηλεηές εθαρκογές
Ταπηόρξνλε θαη απνδνηηθή εθηέιεζε
πνιιαπιώλ VM
Κάζε εθαξκνγή έρεη δηθή ηεο V...
Βαζηθά δοκηθά σιηθά εθαρκογής
• Activity
• IntentReceiver
• Service
• ContentProvider
Activities
• Σαλ γεληθόο θαλόλαο, αληηζηνηρνύλ ζε έλα
UI screen
• Όκσο κπνξνύλ:
– Να κελ έρνπλ UI
– Να είλαη ζε floating w...
IntentReceivers
• Αληαπνθξίλνληαη ζε εθπεκπόκελα
(broadcast) Intents’
• Δπηηξέπνπλ ηελ αληαπόθξηζε ζε
εμσηεξηθή εηδνπνίεζε...
Intents
• Σθεθηείηε ην ζαλ δεύγνο από ξήκα –
νπζηαζηηθό: Μηα πεξηγξαθή ηνπ ηη ζα ζέιαηε
λα ζπκβεί
– Π.ρ. VIEW, CALL, PLAY ...
Intents
GMail
Contacts
Home
Blogger
Chat
Μηα εθαξκνγή αηηείηαη κηα
ιεηηνπξγία
“Pick
photo” Τν ζύζηεκα βξίζθεη ην
θαηάιιειν...
Services
• Σηνηρεία εθαξκνγώλ ρσξίο user interface
ηα νπνία ηξέρνπλ ζην παξαζθήλην
– Π.ρ. music player, network download θ...
ContentProviders
• Δπηηξέπεη ηελ πξόζβαζε ζηα δεδνκέλα
ηεο εθαξκνγήο, ζε άιιεο εθαξκνγέο
– Π.ρ. address book, photo galler...
Development Tools
• Eclipse
• Android SDK 2.0 or
higher
developer.android.com
September 2011 [developer.android.com]
Emulator (2.x)
• QEMU-based ARM
emulator
• Ή hardware-
accelerated x86
emulator
• Πεξηνξηζκνί:
• Αηζζεηήξεο
Hello World
• Μηα θαιή αξρή:
http://developer.android.com/training/basic
s/firstapp/index.html
• Γεκηνπξγία UIs
– Χξήζε νξ...
Κύθιος δφής εθαρκογής
• Οη εθαξκνγέο ηξέρνπλ ζε δηθέο ηνπο
δηεξγαζίεο (VM, PID)
• Οη δηεξγαζίεο εθθηλνύλ θαη ζηακαηνύλ
όπν...
• Σπλήζσο δε ρξεηάδεηαη λα θιεζεί ε onDestroy
– ην ζύζηεκα αλαιακβάλεη ηνλ απηόκαην
ηεξκαηηζκό θαη ηελ απειεπζέξσζε κλήκεο.
Σύλουε
Τν Android ζρεδηάζηεθε λα επηηξέπεη ηε
ρξήζε ζηνηρείσλ άιισλ εθαξκνγώλ από
θάζε εθαξκνγή
Κάζε εθαξκνγή κπνξεί λα «δ...
Οη εθαρκογές έτοσλ θοηλή
δοκή
Views όπσο lists,
grids, text boxes,
buttons
Content
Providers γηα ηελ
θνηλή ρξήζε
δεδνκέλσλ...
Views
Views
Notification Manager
Notification Manager
• Ο κόλνο ηξόπνο δηεπαθήο ελόο
background app κε ηνπο ρξήζηεο
• Κνηλή κέζνδνο – εκπεηξία ρξήζηε γηα ό...
Άιια θοηλά ζηοητεία
Broadcast
receivers γηα
ηελ εθθίλεζε
άιισλ
εθαξκνγώλ
Data storage
κέζσ βάζεσλ
δεδνκέλσλ,
αξρείσλ ή
app...
Οη εθαρκογές έτοσλ κηα θοηλή
δοκή
code
images
files
UI layouts
constants
Auto
generated
resource list
Σεκείο Μεδέλ: Android Manifest
Όιεο νη βαζηθέο πιεξνθνξίεο γηα ηελ εθαξκνγή (ΧΜL)
<?xml version="1.0" encoding="utf-8"?>
<...
Sample Activity Code
UI layouts are in Java and XML
setContentView(R.layout.main); //will load the XML UI file
UI!
Η αζθάιεηα ζηο Android
αθοιοσζεί ηης πραθηηθές ηοσ Linux
Κάζε εθαξκνγή δηθή ηεο δηεξγαζία
Γηθαηώκαηα πξόζβαζεο γηα θάζε
δη...
Τέιος
• Να δνύκε έλα πξαθηηθό παξάδεηγκα
– Hello World!
Application Development Part 1
Upcoming SlideShare
Loading in …5
×

Application Development Part 1

752 views

Published on

Dr. Ανδρέας Κομνηνός

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Application Development Part 1

  1. 1. Android Αλάπηπμε εθαξκνγώλ Dr. Αλδξέαο Κνκλελόο Μάξηηνο 2014
  2. 2. Java • Χξεηάδεηαη ε θαηαλόεζε ηνπιάρηζησλ ησλ βαζηθώλ ελλνηώλ Ο/Κ πξνγξακκαηηζκνύ – Exceptions – Inner Class, Interface • Δπηπιένλ: – Java IO – Java Thread – Java Socket
  3. 3. Android Basics
  4. 4. Εηζαγφγή ζηο Android • Αλνηθηή πιαηθόξκα ινγηζκηθνύ γηα θηλεηέο ζπζθεπέο • Πιήξεο stack – OS, Middleware, Applications • Αξρηθά project ηνπ Open Handset Alliance (OHA) • Βαζηζκέλν ζην Linux • Γξήγνξε αλάπηπμε εθαξκνγώλ ζε Java • Open source under the Apache 2 license
  5. 5. Linux Kernel • Έρεη ην ξόιν ηνπ HAL • Device drivers • Memory management • Process management • Networking
  6. 6. Βηβιηοζήθες • Γξακέλεο ζε C/C++ • Γηεπαθή κέζσ Java • Surface manager – Handling UI Windows • 2D and 3D graphics • Media codecs, SQLite, Browser engine
  7. 7. Android Runtime • Dalvik VM – Αξρεία Dex (dalvik executable format) – Πην ζπκπαγή θαη απνδνηηθά από ηα παξαδνζηαθά class files – Λόγσ πεξηνξηζκέλεο κπαηαξίαο – Αληηθαζίζηαηαη από ην 4.4 κε ηελ ART • Core Libraries – Java 5 Std edition – Collections, I/O etc…
  8. 8. Application Framework • API interface • Activity manager – δηαρεηξίδεηαη ηνλ θύθιν δσήο ησλ εθαξκνγώλ
  9. 9. Applications • Δλζσκαησκέλεο θαη εθαξκνγέο ηξίησλ • Μπνξνύκε λα αληηθαηαζηήζνπκε ηηο ελζσκαησκέλεο κε δηθέο καο
  10. 10. Εθαρκογές ζε Java package com.google.android.helloactivity; import android.app.Activity; import android.os.Bundle; public class HelloActivity extends Activity { public HelloActivity() { } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.hello_activity); } }
  11. 11. Μεηαγιφηηίδοληαη ζε Dalvik bytecode Πεγαίνο θώδηθαο Java Compiled ζε Java Μεηαγιώηηηζε ζε Dalvik bytecode Linux OS Μεηαθόξησζε ζε Dalvik VM
  12. 12. Dalvik runtime – εηδηθό γηα θηλεηές εθαρκογές Ταπηόρξνλε θαη απνδνηηθή εθηέιεζε πνιιαπιώλ VM Κάζε εθαξκνγή έρεη δηθή ηεο VM Διάρηζην memory footprint
  13. 13. Βαζηθά δοκηθά σιηθά εθαρκογής • Activity • IntentReceiver • Service • ContentProvider
  14. 14. Activities • Σαλ γεληθόο θαλόλαο, αληηζηνηρνύλ ζε έλα UI screen • Όκσο κπνξνύλ: – Να κελ έρνπλ UI – Να είλαη ζε floating window – Να επηζηξέθνπλ ηηκέο
  15. 15. IntentReceivers • Αληαπνθξίλνληαη ζε εθπεκπόκελα (broadcast) Intents’ • Δπηηξέπνπλ ηελ αληαπόθξηζε ζε εμσηεξηθή εηδνπνίεζε ή alarms • Κάζε εθαξκνγή κπνξεί λα νξίζεη θαη λα εθπέκςεη ηα δηθά ηεο Intent
  16. 16. Intents • Σθεθηείηε ην ζαλ δεύγνο από ξήκα – νπζηαζηηθό: Μηα πεξηγξαθή ηνπ ηη ζα ζέιαηε λα ζπκβεί – Π.ρ. VIEW, CALL, PLAY θηι.. • Τν ζύζηεκα ηαηξηάδεη ην intent κε ην activity ηεο ίδηαο ή άλλης εφαρμογής, πνπ κπνξεί λα πξνζθέξεη ηελ επηζπκεηή ππεξεζία • Τα Activities θαη ηα IntentReceivers πεξηγξάθνπλ ηη είδνο intent κπνξνύλ λα ρεηξηζηνύλ.
  17. 17. Intents GMail Contacts Home Blogger Chat Μηα εθαξκνγή αηηείηαη κηα ιεηηνπξγία “Pick photo” Τν ζύζηεκα βξίζθεη ην θαηάιιειν component άιιεο εθαξκνγήο γηα ηε ιεηηνπξγία Έηζη λέεο εθαξκνγέο κπνξνύλ λα ρξεζηκνπνηνύλ άιιεο ήδε εγθαηεζηεκέλεο Blogger Photo Gallery
  18. 18. Services • Σηνηρεία εθαξκνγώλ ρσξίο user interface ηα νπνία ηξέρνπλ ζην παξαζθήλην – Π.ρ. music player, network download θηι…
  19. 19. ContentProviders • Δπηηξέπεη ηελ πξόζβαζε ζηα δεδνκέλα ηεο εθαξκνγήο, ζε άιιεο εθαξκνγέο – Π.ρ. address book, photo gallery • Πξνζθέξεη νκνηόηππα APIs γηα: – επεξσηήζεηο – δηαγξαθή, ελεκέξσζε θαη εηζαγσγή • Τν πεξηερόκελν εθπξνζσπείηαη από θάπνην URI θαη MIME type
  20. 20. Development Tools • Eclipse • Android SDK 2.0 or higher developer.android.com September 2011 [developer.android.com]
  21. 21. Emulator (2.x) • QEMU-based ARM emulator • Ή hardware- accelerated x86 emulator • Πεξηνξηζκνί: • Αηζζεηήξεο
  22. 22. Hello World • Μηα θαιή αξρή: http://developer.android.com/training/basic s/firstapp/index.html • Γεκηνπξγία UIs – Χξήζε νξηζκέλσλ Views • Π.ρ. TextView, EditText, Button – Τνπνζεηεκέλα ζε Layouts • Π.ρ. LinearLayout, TableLayout, AbsoluteLayout
  23. 23. Κύθιος δφής εθαρκογής • Οη εθαξκνγέο ηξέρνπλ ζε δηθέο ηνπο δηεξγαζίεο (VM, PID) • Οη δηεξγαζίεο εθθηλνύλ θαη ζηακαηνύλ όπνηε ρξεηάδεηαη, ώζηε λα ηξέμνπλ ηα ζπζηαηηθά κηαο εθαξκνγήο • Οη δηεξγαζίεο κπνξνύλ λα ηεξκαηηζηνύλ γηα λα απειεπζεξσζνύλ πόξνη.
  24. 24. • Σπλήζσο δε ρξεηάδεηαη λα θιεζεί ε onDestroy – ην ζύζηεκα αλαιακβάλεη ηνλ απηόκαην ηεξκαηηζκό θαη ηελ απειεπζέξσζε κλήκεο.
  25. 25. Σύλουε Τν Android ζρεδηάζηεθε λα επηηξέπεη ηε ρξήζε ζηνηρείσλ άιισλ εθαξκνγώλ από θάζε εθαξκνγή Κάζε εθαξκνγή κπνξεί λα «δηαθεκίζεη» ζηηο άιιεο ηηο ππεξεζίεο πνπ κπνξεί λα πξνζθέξεη.
  26. 26. Οη εθαρκογές έτοσλ θοηλή δοκή Views όπσο lists, grids, text boxes, buttons Content Providers γηα ηελ θνηλή ρξήζε δεδνκέλσλ από άιιεο εθαξκνγέο ή ηεο δηθήο καο εθαξκνγήο Resource Manager, πνπ πξνζθέξεη πξόζβαζε ζε πόξνπο όπσο localized strings, graphics θαη layout files Notification Manager πνπ επηηξέπεη ηελ πξνβνιή κελπκάησλ ζην notification bar Activity Manager πνπ δηαρεηξίδεηαη ηνλ θύθιν δσήο
  27. 27. Views
  28. 28. Views
  29. 29. Notification Manager
  30. 30. Notification Manager • Ο κόλνο ηξόπνο δηεπαθήο ελόο background app κε ηνπο ρξήζηεο • Κνηλή κέζνδνο – εκπεηξία ρξήζηε γηα όιεο ηηο εθαξκνγέο
  31. 31. Άιια θοηλά ζηοητεία Broadcast receivers γηα ηελ εθθίλεζε άιισλ εθαξκνγώλ Data storage κέζσ βάζεσλ δεδνκέλσλ, αξρείσλ ή application preferences Services γηα ηελ εθηέιεζε δηαδηθαζηώλ ζην παξαζθήλην Intents πνπ αηηνύληαη ππεξεζίεο από άιιεο εθαξκνγέο ή πξνζθέξνπλ ππεξεζίεο Activity πνπ πινπνηεί ηηο δηεπαθέο κε ην ρξήζηε (γξαθηθά ζηνηρεία εθαξκνγήο)
  32. 32. Οη εθαρκογές έτοσλ κηα θοηλή δοκή code images files UI layouts constants Auto generated resource list
  33. 33. Σεκείο Μεδέλ: Android Manifest Όιεο νη βαζηθέο πιεξνθνξίεο γηα ηελ εθαξκνγή (ΧΜL) <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.my_domain.app.helloactivity"> <application android:label="@string/app_name"> <activity android:name=".HelloActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
  34. 34. Sample Activity Code
  35. 35. UI layouts are in Java and XML setContentView(R.layout.main); //will load the XML UI file
  36. 36. UI!
  37. 37. Η αζθάιεηα ζηο Android αθοιοσζεί ηης πραθηηθές ηοσ Linux Κάζε εθαξκνγή δηθή ηεο δηεξγαζία Γηθαηώκαηα πξόζβαζεο γηα θάζε δηεξγαζία κε user & group permissions Πνιιαπιά επίπεδα δηθαησκάησλ αλά ιεηηνπξγία <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.android.app.myapp" > <uses-permission id="android.permission.RECEIVE_SMS" /> </manifest>
  38. 38. Τέιος • Να δνύκε έλα πξαθηηθό παξάδεηγκα – Hello World!

×