Prezentace aplikace PowerPoint

Transkript

Prezentace aplikace PowerPoint
Vývoj SW pro mobilní zařízení s Androidem
Ing. Jan Kaláb, IPEX a.s., 6.12.2012
Vývoj SW pro mobilní zařízení s Androidem
Obsah
1. Historie OS Android a vývojové milníky
2. Vnitřní architektura systému
3. Programovací jazyky
4. Vývojová prostředí
5. Ladění
6. Distribuce aplikací
7. Demo aplikace pro tuto konferenci
8. Užitečné odkazy
Vývoj SW pro mobilní zařízení s Androidem
Historie OS Android a vývojové milníky
•
2003
o
•
•
•
o
Android Inc.
Andy Rubin
2005
o
•
Google kupuje Android
o
o
•
2007
o
Open Handset Alliance
2008
o
2009
o
2010
o
•
o
•
2.2 Froyo
2.3 Gingerbread
2011
o
HTC Dream (G1)
1.5 Cupcake
1.6 Donut
2.0 Eclair
o
3.0 Honeycomb
4.0 Ice Cream Sandwich
2012
o
o
4.1 Jelly Bean
4.2 ...
Vývoj SW pro mobilní zařízení s Androidem
Vnitřní architektura systému
https://commons.wikimedia.org/wiki/File:Android-System-Architecture.svg
Vývoj SW pro mobilní zařízení s Androidem
Programovací jazyky
Java 6
Doporučeno
Dalvik VM
Spor s Oracle
•
•
•
XML
Popis zdrojů
•
o
o
o
o
UI
Řetězce
Styly
…
C
•
•
•
•
NDK
JNI
SDL
Různé architektury!
Další
Bash
SL4A
•
•
o
Python, Lua, Perl, PHP, …
Vývoj SW pro mobilní zařízení s Androidem
Vývojová prostředí
Eclipse
Doporučeno
ADT
Dá se naklikat vše
•
•
•
o
o
o
o
o
o
UI
Šablony aplikací
Build
Emulátor
Debugger
…
Ant
•
•
CLI
Build, install, lint, …
Vývoj SW pro mobilní zařízení s Androidem
Vývojová prostředí
NetBeans
NBAndroid
Maven
android-maven-plugin
Visual Studio
NDK
vim
•
•
•
•
vim-android
Vývoj SW pro mobilní zařízení s Androidem
Ladění
Android Debug Bridge
adb logcat
•
•
•
•
stack trace
filtr (dalvikvm:S)
android.util.Log.wtf("tag", "zpráva");
I/Velvet.VelvetFactory( 1728): refreshing search history.
I/LocationManagerService( 291): request network (pid 1728) 300000 300000
E/GPS ( 291): [gps_inject_location][line = 721] : Failed with GPS driver is not
initialized
I/Gmail ( 2138): MainSyncRequestProto: lowestBkwdConvoId: 0,
highestHandledServerOp: 2326570, normalSync: true
D/Digital Clock( 1987): Update broadcast received.
Vývoj SW pro mobilní zařízení s Androidem
Ladění
Device Monitor
Švýcarský nůž
•
•
•
•
•
•
logcat
Hierarchie UI
Profilování
OpenGL
…
Vývoj SW pro mobilní zařízení s Androidem
Distribuce aplikací
Play Store
Registrace 25 $
Omezená velikost
•
•
•
•
•
•
•
•
50 MB APK
2 × 2 GB data
Statistiky
Aktualizace
Crash reporty
Licencování
Ruční distribuce
Umístíte APK na web
Nutno povolit instalace v
zařízení
•
•
Alternativní markety
GetJar
SlideMe
Amazon
•
•
•
Vývoj SW pro mobilní zařízení s Androidem
Služby a funkce API
•
•
•
•
•
•
•
•
•
•
Notifikace
Telefonie
Kontakty
SIP
Zprávy
NFC
Geolokace
Senzory
OpenGL
Media
•
•
•
•
•
•
•
•
•
•
Bluetooth
Síťová spojení
Správa účtů
Rozpoznávání hlasu
Syntéza hlasu
Fotoaparát
Vstupní metody
Gesta
SQLite databáze
…
Vývoj SW pro mobilní zařízení s Androidem
DEMO
Zadání:
Vytvořit dednoduchou aplikaci s jedním tlačítkem, která po
stisknutí otevře prohlížeč s webem konference Teorie a
praxe IP telefonie.
SDK
https://developer.android.com/sdk
Windows, Linux, Mac
Vývoj SW pro mobilní zařízení s Androidem
Založení projektu
•
android create project
•
•
•
•
•
•
-t android-4 #1.6
-p .
-k cz.ipex.iptelefon
-a IpActivity
git init
git add
git commit
ant debug install
Vývoj SW pro mobilní zařízení s Androidem
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cz.ipex.iptelefon" android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />
<application android:label="@string/app_name"
android:allowBackup="true">
<activity android:name="IpActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Vývoj SW pro mobilní zařízení s Androidem
Zdroje
res
values (řetězce, styly, metriky, barvy, pole, …)
values-cs (české řetězce, styly, metriky, barvy, …)
…
layout (vzhled)
layout-large (vzhled pro tablety)
layout-land (vzhled na šířku)
…
drawable (bitmapy)
drawable-hdpi (bitmapy ve vysokém rozlišení)
…
menu
raw
…
Vývoj SW pro mobilní zařízení s Androidem
Řetězce
values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name"
translatable="false">Teorie a praxe IP
telefonie</string>
<string name="button">Open web</string>
</resources>
values-cs/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="button">Otevřít web</string>
</resources>
Vývoj SW pro mobilní zařízení s Androidem
Layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/
apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button"
android:layout_centerInParent="true"
android:onClick="openBrowser"
/>
</RelativeLayout>
Vývoj SW pro mobilní zařízení s Androidem
Crash!
Po stisku tlačítka aplikace spadne! Proč?
Vývoj SW pro mobilní zařízení s Androidem
Crash!
Po stisku tlačítka aplikace spadne! Proč?
Logcat!
E/AndroidRuntime(14716): FATAL EXCEPTION: main
E/AndroidRuntime(14716): java.lang.IllegalStateException: Could not find a method openBrowser(View) in
the activity class cz.ipex.iptelefon.IpActivity for onClick handler on view class android.widget.Button with id
'button'
E/AndroidRuntime(14716): at android.view.View$1.onClick(View.java:3578)
E/AndroidRuntime(14716): at android.view.View.performClick(View.java:4084)
E/AndroidRuntime(14716): at android.view.View$PerformClick.run(View.java:16966)
E/AndroidRuntime(14716): at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime(14716): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(14716): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(14716): at android.app.ActivityThread.main(ActivityThread.java:4931)
E/AndroidRuntime(14716): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(14716): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(14716): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:791)
E/AndroidRuntime(14716): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
E/AndroidRuntime(14716): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(14716): Caused by: java.lang.NoSuchMethodException:
openBrowser [class android.view.View]
E/AndroidRuntime(14716): at java.lang.Class.getConstructorOrMethod(Class.java:460)
E/AndroidRuntime(14716): at java.lang.Class.getMethod(Class.java:915)
E/AndroidRuntime(14716): at android.view.View$1.onClick(View.java:3571)
E/AndroidRuntime(14716): ... 11 more
Vývoj SW pro mobilní zařízení s Androidem
Aktivity
•
•
•
To, co uživatel vidí
Životní cyklus
Back stack
Vývoj SW pro mobilní zařízení s Androidem
IpActivity.java
package cz.ipex.iptelefon;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
public class IpActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void openBrowser(View view) {
if (BuildConfig.DEBUG) Log.i("ip-telefon", "Click!");
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.iptelefon.cz")));
}
}
Vývoj SW pro mobilní zařízení s Androidem
Intent
Záměry, akce
•
•
•
•
•
Otevření prohlížeče
Odeslání zprávy
Sdílení na sociální síť
Navigace
…
Android ví, co která aplikace umí…
…a můžeme mu říct, co umí naše
aplikace.
Vývoj SW pro mobilní zařízení s Androidem
Release
keytool -genkey -v -keystore release.key -alias ip-telefon -keyalg
RSA -keysize 2048 -validity 10000
ant.properties
key.store=release.key
key.alias=ip-telefon
project.properties
proguard.config=${sdk.dir}/tools/proguard/proguardandroid.txt:proguard-project.txt
Ant
ant clean && ant release
bin/IpActivity-release.apk
Vývoj SW pro mobilní zařízení s Androidem
Hotová aplikace ke stažení na Play Store
Podmínky pro publikování:
Ikona
Grafika, video
Popisky
Kontakty
•
•
•
•
Instalace hotové
aplikace ke stažení:
Vývoj SW pro mobilní zařízení s Androidem
Užitečné odkazy
Zdrojové soubory dema aplikace
https://github.com/Pitel/ip-telefon
Dokumentace, tutoriály, blog, design, …
https://d.android.com
Seriál na Zdroják.cz
http://www.zdrojak.cz/serialy/vyvijime-pro-android
Instalace a konfigurace ústředen Asterisk
Děkuji za pozornost

Podobné dokumenty

Pokrocile programovani na platforme Java, letní semestr 2012

Pokrocile programovani na platforme Java, letní semestr 2012 import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloAndroid extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super...

Více

Google Android

Google Android otevři URL, vyfoť snímek, přehraj hudbu

Více

OKRUHY STÁTNÍCH ZÁVĚREČNÝCH ZKOUŠEK MOBILNÍ

OKRUHY STÁTNÍCH ZÁVĚREČNÝCH ZKOUŠEK MOBILNÍ c. Rozšiřující API mobilních platforem. Příklady rozšiřujících API v HTML5, Apache Cordova a na platformě Android (práce se soubory a kontakty, určování polohy,

Více

kompletní bakalářskou práci - tichy

kompletní bakalářskou práci - tichy Všechny zde uložené soubory jsou veřejně přístupné. Úložiště je určeno pro ukládání velkých souborů, určených k delšímu uchování. Obecně se doporučuje, aby se data ukládala v tomto úložišt...

Více