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
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super...
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,
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...