Application Development Part 1

39
Android Ανάπτυξη εφαρμογών Dr. Dr. Ανδρέας Κομνηνός Ανδρέας Κομνηνός Μάρτιος 2014 Μάρτιος 2014

description

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

Transcript of Application Development Part 1

Page 1: Application Development Part 1

Android

Ανάπτυξη εφαρμογών

Dr. Dr. Ανδρέας ΚομνηνόςΑνδρέας ΚομνηνόςΜάρτιος 2014Μάρτιος 2014

Page 2: Application Development Part 1

Java

• Χρειάζεται η κατανόηση τουλάχιστων των βασικών εννοιών Ο/Κ προγραμματισμού– Exceptions– Inner Class, Interface

• Επιπλέον:– Java IO– Java Thread– Java Socket

Page 3: Application Development Part 1

Android BasicsAndroid Basics

Page 4: Application Development Part 1

Εισαγωγή στο Android

• Ανοικτή πλατφόρμα λογισμικού για κινητές συσκευές

• Πλήρες stack – OS, Middleware, Applications

• Αρχικά project του Open Handset Alliance (OHA)

• Βασισμένο στο Linux

• Γρήγορη ανάπτυξη εφαρμογών σε Java

• Open source under the Apache 2 license

Page 5: Application Development Part 1
Page 6: Application Development Part 1

Linux Kernel

• Έχει το ρόλο του HAL

• Device drivers

• Memory management

• Process management

• Networking

Page 7: Application Development Part 1

Βιβλιοθήκες

• Γραμένες σε C/C++

• Διεπαφή μέσω Java

• Surface manager – Handling UI Windows

• 2D and 3D graphics

• Media codecs, SQLite, Browser engine

Page 8: Application Development Part 1

Android Runtime

• Dalvik VM– Αρχεία Dex (dalvik executable format)– Πιο συμπαγή και αποδοτικά από τα

παραδοσιακά class files– Λόγω περιορισμένης μπαταρίας– Αντικαθίσταται από το 4.4 με την ART

• Core Libraries– Java 5 Std edition– Collections, I/O etc…

Page 9: Application Development Part 1

Application Framework

• API interface

• Activity manager – διαχειρίζεται τον κύκλο ζωής των εφαρμογών

Page 10: Application Development Part 1

Applications

• Ενσωματωμένες και εφαρμογές τρίτων

• Μπορούμε να αντικαταστήσουμε τις ενσωματωμένες με δικές μας

Page 11: Application Development Part 1

Εφαρμογές σε Javapackage 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); }}

Page 12: Application Development Part 1

Μεταγλωττίζονται σε Dalvik bytecode

Πηγαίος κώδικας JavaΠηγαίος κώδικας Java

Compiled σε JavaCompiled σε Java

Μεταγλώττιση σε Dalvik bytecodeΜεταγλώττιση σε Dalvik bytecode

Linux OS Linux OS

Μεταφόρτωση σε Dalvik VMΜεταφόρτωση σε Dalvik VM

Page 13: Application Development Part 1

Dalvik runtime – ειδικό για κινητές εφαρμογές

Ταυτόχρονη και αποδοτική εκτέλεση πολλαπλών VM

Ταυτόχρονη και αποδοτική εκτέλεση πολλαπλών VM

Κάθε εφαρμογή έχει δική της VMΚάθε εφαρμογή έχει δική της VM

Ελάχιστο memory footprintΕλάχιστο memory footprint

Page 14: Application Development Part 1

Βασικά δομικά υλικά εφαρμογής

• Activity

• IntentReceiver

• Service

• ContentProvider

Page 15: Application Development Part 1

Activities

• Σαν γενικός κανόνας, αντιστοιχούν σε ένα UI screen

• Όμως μπορούν:– Να μην έχουν UI– Να είναι σε floating window– Να επιστρέφουν τιμές

Page 16: Application Development Part 1

IntentReceivers

• Ανταποκρίνονται σε εκπεμπόμενα (broadcast) Intents’

• Επιτρέπουν την ανταπόκριση σε εξωτερική ειδοποίηση ή alarms

• Κάθε εφαρμογή μπορεί να ορίσει και να εκπέμψει τα δικά της Intent

Page 17: Application Development Part 1

Intents

• Σκεφτείτε το σαν ζεύγος από ρήμα – ουσιαστικό: Μια περιγραφή του τι θα θέλατε να συμβεί– Π.χ. VIEW, CALL, PLAY κτλ..

• Το σύστημα ταιριάζει το intent με το activity της ίδιας ή άλλης εφαρμογής, που μπορεί να προσφέρει την επιθυμητή υπηρεσία

• Τα Activities και τα IntentReceivers περιγράφουν τι είδος intent μπορούν να χειριστούν.

Page 18: Application Development Part 1

Intents

GMail

Contacts

Home

Blogger

Chat

Μια εφαρμογή αιτείται μια λειτουργία

“Pick photo”Το σύστημα βρίσκει το κατάλληλο component άλλης εφαρμογής για τη λειτουργία

Έτσι νέες εφαρμογές μπορούν να χρησιμοποιούν άλλες ήδη εγκατεστημένες

Blogger

Photo Gallery

Page 19: Application Development Part 1

Services

• Στοιχεία εφαρμογών χωρίς user interface τα οποία τρέχουν στο παρασκήνιο – Π.χ. music player, network download κτλ…

Page 20: Application Development Part 1

ContentProviders

• Επιτρέπει την πρόσβαση στα δεδομένα της εφαρμογής, σε άλλες εφαρμογές– Π.χ. address book, photo gallery

• Προσφέρει ομοιότυπα APIs για:– επερωτήσεις– διαγραφή, ενημέρωση και εισαγωγή

• Το περιεχόμενο εκπροσωπείται από κάποιο URI και MIME type

Page 21: Application Development Part 1

Development Tools

• Eclipse

• Android SDK 2.0 or higherdeveloper.android.com

September 2011 [developer.android.com]

Page 22: Application Development Part 1

Emulator (2.x)

• QEMU-based ARM emulator

• Ή hardware-accelerated x86 emulator

• Περιορισμοί:• Αισθητήρες

Page 23: Application Development Part 1

Hello World

• Μια καλή αρχή: http://developer.android.com/training/basics/firstapp/index.html

• Δημιουργία UIs– Χρήση ορισμένων Views

• Π.χ. TextView, EditText, Button

– Τοποθετημένα σε Layouts• Π.χ. LinearLayout, TableLayout, AbsoluteLayout

Page 24: Application Development Part 1

Κύκλος ζωής εφαρμογής

• Οι εφαρμογές τρέχουν σε δικές τους διεργασίες (VM, PID)

• Οι διεργασίες εκκινούν και σταματούν όποτε χρειάζεται, ώστε να τρέξουν τα συστατικά μιας εφαρμογής

• Οι διεργασίες μπορούν να τερματιστούν για να απελευθερωθούν πόροι.

Page 25: Application Development Part 1

• Συνήθως δε χρειάζεται να κληθεί η onDestroy – το σύστημα αναλαμβάνει τον αυτόματο τερματισμό και την απελευθέρωση μνήμης.

Page 26: Application Development Part 1

Σύνοψη

Το Android σχεδιάστηκε να επιτρέπει τη χρήση στοιχείων άλλων εφαρμογών από κάθε εφαρμογή

Το Android σχεδιάστηκε να επιτρέπει τη χρήση στοιχείων άλλων εφαρμογών από κάθε εφαρμογή

Κάθε εφαρμογή μπορεί να «διαφημίσει» στις άλλες τις υπηρεσίες που μπορεί να προσφέρει.

Κάθε εφαρμογή μπορεί να «διαφημίσει» στις άλλες τις υπηρεσίες που μπορεί να προσφέρει.

Page 27: Application Development Part 1

Οι εφαρμογές έχουν κοινή δομή

Views όπως lists, grids, text boxes, buttons

Views όπως lists, grids, text boxes, buttons

Content Providers για την κοινή χρήση δεδομένων από άλλες εφαρμογές ή της δικής μας εφαρμογής

Content Providers για την κοινή χρήση δεδομένων από άλλες εφαρμογές ή της δικής μας εφαρμογής

Resource Manager, που προσφέρει πρόσβαση σε πόρους όπως localized strings, graphics και layout files

Resource Manager, που προσφέρει πρόσβαση σε πόρους όπως localized strings, graphics και layout files

Notification Manager που επιτρέπει την προβολή μηνυμάτων στο notification bar

Notification Manager που επιτρέπει την προβολή μηνυμάτων στο notification bar

Activity Manager που διαχειρίζεται τον κύκλο ζωής

Activity Manager που διαχειρίζεται τον κύκλο ζωής

Page 28: Application Development Part 1

Views

Page 29: Application Development Part 1

Views

Page 30: Application Development Part 1

Notification Manager

Page 31: Application Development Part 1

Notification Manager

• Ο μόνος τρόπος διεπαφής ενός background app με τους χρήστες

• Κοινή μέθοδος – εμπειρία χρήστη για όλες τις εφαρμογές

Page 32: Application Development Part 1

Άλλα κοινά στοιχείαBroadcast receivers για την εκκίνηση άλλων εφαρμογών

Broadcast receivers για την εκκίνηση άλλων εφαρμογών

Data storage μέσω βάσεων δεδομένων, αρχείων ή application preferences

Data storage μέσω βάσεων δεδομένων, αρχείων ή application preferences Services για την

εκτέλεση διαδικασιών στο παρασκήνιο

Services για την εκτέλεση διαδικασιών στο παρασκήνιο

Intents που αιτούνται υπηρεσίες από άλλες εφαρμογές ή προσφέρουν υπηρεσίες

Intents που αιτούνται υπηρεσίες από άλλες εφαρμογές ή προσφέρουν υπηρεσίες

Activity που υλοποιεί τις διεπαφές με το χρήστη (γραφικά στοιχεία εφαρμογής)

Activity που υλοποιεί τις διεπαφές με το χρήστη (γραφικά στοιχεία εφαρμογής)

Page 33: Application Development Part 1

Οι εφαρμογές έχουν μια κοινή δομή

code

images

files

UI layouts

constants

Auto generated resource list

Page 34: Application Development Part 1

Σημείο Μηδέν: 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>

Page 35: Application Development Part 1

Sample Activity Code

Page 36: Application Development Part 1

UI layouts are in Java and XML

setContentView(R.layout.main); //will load the XML UI file

Page 37: Application Development Part 1

UI!

Page 38: Application Development Part 1

Η ασφάλεια στο Android ακολουθεί τις πρακτικές του Linux

Κάθε εφαρμογή δική της διεργασίαΚάθε εφαρμογή δική της διεργασία

Δικαιώματα πρόσβασης για κάθε διεργασία με user & group permissions

Δικαιώματα πρόσβασης για κάθε διεργασία με 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>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.android.app.myapp" ><uses-permission id="android.permission.RECEIVE_SMS" /></manifest>

Page 39: Application Development Part 1

Τέλος

• Να δούμε ένα πρακτικό παράδειγμα– Hello World!