Ing. Jan Kaláb, IPEX a.s., 6.12.2012
Obsah 1. Histrie OS Andrid a vývjvé milníky 2. Vnitřní architektura systému 3. Prgramvací jazyky 4. Vývjvá prstředí 5. Ladění 6. Distribuce aplikací 7. Dem aplikace pr tut knferenci 8. Užitečné dkazy
Histrie OS Andrid a vývjvé milníky 2003 2005 2007 2008 Andrid Inc. Andy Rubin Ggle kupuje Andrid Open Handset Alliance HTC Dream (G1) 2009 2010 2011 2012 1.5 Cupcake 1.6 Dnut 2.0 Eclair 2.2 Fry 2.3 Gingerbread 3.0 Hneycmb 4.0 Ice Cream Sandwich 4.1 Jelly Bean 4.2...
Vnitřní architektura systému https://cmmns.wikimedia.rg/wiki/file:andrid-system-architecture.svg
Prgramvací jazyky Java 6 Dpručen Dalvik VM Spr s Oracle XML Ppis zdrjů UI Řetězce Styly C NDK JNI SDL Různé architektury! Další Bash SL4A Pythn, Lua, Perl, PHP,
Vývjvá prstředí Eclipse Dpručen ADT Dá se naklikat vše UI Šablny aplikací Build Emulátr Debugger Ant CLI Build, install, lint,
Vývjvá prstředí NetBeans NBAndrid Visual Studi NDK Maven andrid-maven-plugin vim vim-andrid
Ladění Andrid Debug Bridge adb lgcat stack trace filtr (dalvikvm:s) andrid.util.lg.wtf("tag", "zpráva"); I/Velvet.VelvetFactry( 1728): refreshing search histry. I/LcatinManagerService( 291): request netwrk (pid 1728) 300000 300000 E/GPS ( 291): [gps_inject_lcatin][line = 721] : Failed with GPS driver is nt initialized I/Gmail ( 2138): MainSyncRequestPrt: lwestbkwdcnvid: 0, highesthandledserverop: 2326570, nrmalsync: true D/Digital Clck( 1987): Update bradcast received.
Ladění Device Mnitr Švýcarský nůž lgcat Hierarchie UI Prfilvání OpenGL
Distribuce aplikací Play Stre Registrace 25 $ Omezená velikst 50 MB APK 2 2 GB data Statistiky Aktualizace Crash reprty Licencvání Ruční distribuce Umístíte APK na web Nutn pvlit instalace v zařízení Alternativní markety GetJar SlideMe Amazn
Služby a funkce API Ntifikace Telefnie Kntakty SIP Zprávy NFC Gelkace Senzry OpenGL Media Bluetth Síťvá spjení Správa účtů Rzpznávání hlasu Syntéza hlasu Ftaparát Vstupní metdy Gesta SQLite databáze
DEMO Zadání: Vytvřit dednduchu aplikaci s jedním tlačítkem, která p stisknutí tevře prhlížeč s webem knference Terie a praxe IP telefnie. SDK https://develper.andrid.cm/sdk Windws, Linux, Mac
Zalžení prjektu andrid create prject -t andrid-4 #1.6 -p. -k cz.ipex.iptelefn -a IpActivity git init git add git cmmit ant debug install
AndridManifest.xml <?xml versin="1.0" encding="utf-8"?> <manifest xmlns:andrid="http://schemas.andrid.cm/apk/res/andrid" package="cz.ipex.iptelefn" andrid:versincde="1" andrid:versinname="1.0" > <uses-sdk andrid:minsdkversin="4" andrid:targetsdkversin="16" /> <applicatin andrid:label="@string/app_name" andrid:allwbackup="true"> <activity andrid:name="ipactivity" andrid:label="@string/app_name"> <intent-filter> <actin andrid:name="andrid.intent.actin.main" /> <categry andrid:name="andrid.intent.categry.launcher" /> </intent-filter> </activity> </applicatin> </manifest>
Zdrje res values (řetězce, styly, metriky, barvy, ple, ) values-cs (české řetězce, styly, metriky, barvy, ) layut (vzhled) layut-large (vzhled pr tablety) layut-land (vzhled na šířku) drawable (bitmapy) drawable-hdpi (bitmapy ve vyském rzlišení) menu raw
Řetězce values/strings.xml <?xml versin="1.0" encding="utf-8"?> <resurces> <string name="app_name" translatable="false">terie a praxe IP telefnie</string> <string name="buttn">open web</string> </resurces> values-cs/strings.xml <?xml versin="1.0" encding="utf-8"?> <resurces> <string name="buttn">otevřít web</string> </resurces>
Layut <?xml versin="1.0" encding="utf-8"?> <RelativeLayut xmlns:andrid="http://schemas.andrid.cm/ apk/res/andrid" andrid:layut_width="fill_parent" andrid:layut_height="fill_parent" > <Buttn andrid:id="@+id/buttn" andrid:layut_width="wrap_cntent" andrid:layut_height="wrap_cntent" andrid:text="@string/buttn" andrid:layut_centerinparent="true" andrid:nclick="penbrwser" /> </RelativeLayut>
Crash! P stisku tlačítka aplikace spadne! Prč?
Crash! P stisku tlačítka aplikace spadne! Prč? Lgcat! E/AndridRuntime(14716): FATAL EXCEPTION: main E/AndridRuntime(14716): java.lang.illegalstateexceptin: Culd nt find a methd penbrwser(view) in the activity class cz.ipex.iptelefn.ipactivity fr nclick handler n view class andrid.widget.buttn with id 'buttn' E/AndridRuntime(14716): at andrid.view.view$1.nclick(view.java:3578) E/AndridRuntime(14716): at andrid.view.view.perfrmclick(view.java:4084) E/AndridRuntime(14716): at andrid.view.view$perfrmclick.run(view.java:16966) E/AndridRuntime(14716): at andrid.s.handler.handlecallback(handler.java:615) E/AndridRuntime(14716): at andrid.s.handler.dispatchmessage(handler.java:92) E/AndridRuntime(14716): at andrid.s.lper.lp(lper.java:137) E/AndridRuntime(14716): at andrid.app.activitythread.main(activitythread.java:4931) E/AndridRuntime(14716): at java.lang.reflect.methd.invkenative(native Methd) E/AndridRuntime(14716): at java.lang.reflect.methd.invke(methd.java:511) E/AndridRuntime(14716): at cm.andrid.internal.s.zygteinit$methdandargscaller.run (ZygteInit.java:791) E/AndridRuntime(14716): at cm.andrid.internal.s.zygteinit.main(zygteinit.java:558) E/AndridRuntime(14716): at dalvik.system.nativestart.main(native Methd) E/AndridRuntime(14716): Caused by: java.lang.nsuchmethdexceptin: penbrwser [class andrid.view.view] E/AndridRuntime(14716): at java.lang.class.getcnstructrormethd(class.java:460) E/AndridRuntime(14716): at java.lang.class.getmethd(class.java:915) E/AndridRuntime(14716): at andrid.view.view$1.nclick(view.java:3571) E/AndridRuntime(14716):... 11 mre
Aktivity T, c uživatel vidí Živtní cyklus Back stack
IpActivity.java package cz.ipex.iptelefn; imprt andrid.app.activity; imprt andrid.cntent.intent; imprt andrid.net.uri; imprt andrid.s.bundle; imprt andrid.view.view; public class IpActivity extends Activity { @Override public vid ncreate(bundle savedinstancestate) { super.ncreate(savedinstancestate); setcntentview(r.layut.main); } public vid penbrwser(view view) { if (BuildCnfig.DEBUG) Lg.i("ip-telefn", "Click!"); startactivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.iptelefn.cz"))); } }
Intent Záměry, akce Otevření prhlížeče Odeslání zprávy Sdílení na sciální síť Navigace Andrid ví, c která aplikace umí a můžeme mu říct, c umí naše aplikace.
Release keytl -genkey -v -keystre release.key -alias ip-telefn -keyalg RSA -keysize 2048 -validity 10000 ant.prperties key.stre=release.key key.alias=ip-telefn prject.prperties prguard.cnfig=${sdk.dir}/tls/prguard/prguardandrid.txt:prguard-prject.txt Ant ant clean && ant release bin/ipactivity-release.apk
Htvá aplikace ke stažení na Play Stre Pdmínky pr publikvání: Ikna Grafika, vide Ppisky Kntakty Instalace htvé aplikace ke stažení:
Užitečné dkazy Zdrjvé subry dema aplikace https://github.cm/pitel/ip-telefn Dkumentace, tutriály, blg, design, https://d.andrid.cm Seriál na Zdrják.cz http://www.zdrjak.cz/serialy/vyvijime-pr-andrid
Instalace a knfigurace ústředen Asterisk Děkuji za pzrnst