Developing Android Apps: Part 1



Similar documents
Android Introduction. Hello Mihail L. Sichitiu 1

Tutorial #1. Android Application Development Advanced Hello World App

Mobile Application Development

ANDROID APP DEVELOPMENT: AN INTRODUCTION CSCI /19/14 HANNAH MILLER

directory to "d:\myproject\android". Hereafter, I shall denote the android installed directory as

Android Application Development: Hands- On. Dr. Jogesh K. Muppala

Chapter 2 Getting Started

MMI 2: Mobile Human- Computer Interaction Android

App Development for Android. Prabhaker Matet

Android For Java Developers. Marko Gargenta Marakana

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android

Advantages. manage port forwarding, set breakpoints, and view thread and process information directly

Android Environment SDK

Android Environment SDK

Developing an Android App. CSC207 Fall 2014

How to build your first Android Application in Windows

Now that we have the Android SDK, Eclipse and Phones all ready to go we can jump into actual Android development.

SDK Quick Start Guide

Android 多 核 心 嵌 入 式 多 媒 體 系 統 設 計 與 實 作

4. The Android System

Building Your First App

Presenting Android Development in the CS Curriculum

Android Application Development. Yevheniy Dzezhyts

Android Programming Basics

Android Development. Marc Mc Loughlin

Basics. Bruce Crawford Global Solutions Manager

App Development for Smart Devices. Lec #2: Android Tools, Building Applications, and Activities

By sending messages into a queue, we can time these messages to exit the cue and call specific functions.

Android Development Tutorial

Arduino & Android. A How to on interfacing these two devices. Bryant Tram

Hello World. by Elliot Khazon

Jordan Jozwiak November 13, 2011

Android Development. 吳 俊 興 國 立 高 雄 大 學 資 訊 工 程 學 系

Università Degli Studi di Parma. Distributed Systems Group. Android Development. Lecture 2 Android Platform. Marco Picone

Admin. Mobile Software Development Framework: Android Activity, View/ViewGroup, External Resources. Recap: TinyOS. Recap: J2ME Framework

Localization and Resources

Developing apps for Android OS: Develop an app for interfacing Arduino with Android OS for home automation

Tutorial: Setup for Android Development

Programming with Android: SDK install and initial setup. Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna

Programming with Android: SDK install and initial setup. Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna

How to Create an Android Application using Eclipse on Windows 7

A software stack for mobile devices:

ADITION Android Ad SDK Integration Guide for App Developers

Getting Started: Creating a Simple App

Android Application Development - Exam Sample

Developing In Eclipse, with ADT

Mocean Android SDK Developer Guide

@ME (About) Marcelo Cyreno. Skype: marcelocyreno Linkedin: marcelocyreno Mail:

OpenCV on Android Platforms

Running a Program on an AVD

MAP524/DPS924 MOBILE APP DEVELOPMENT (ANDROID) MIDTERM TEST OCTOBER 2013 STUDENT NAME STUDENT NUMBER

Based on Android 4.0. by Lars Vogel. Version 9.8. Copyright 2009, 2010, 2011, 2012 Lars Vogel Home Tutorials Trainings Books Social

How To Develop An Android App On An Android Device

Android Development Tutorial. Nikhil Yadav CSE40816/ Pervasive Health Fall 2011

Android App Development. Rameel Sethi

ANDROID AS A PLATFORM FOR DATABASE APPLICATION DEVELOPMENT

Building an Android client. Rohit Nayak Talentica Software

BEGIN ANDROID JOURNEY IN HOURS

Tutorial: Android Object API Application Development. SAP Mobile Platform 2.3

Android Tutorial. Larry Walters OOSE Fall 2011

TUTORIALS AND QUIZ ANDROID APPLICATION SANDEEP REDDY PAKKER. B. Tech in Aurora's Engineering College, 2013 A REPORT

Frameworks & Android. Programmeertechnieken, Tim Cocx

2. Click the download button for your operating system (Windows, Mac, or Linux).

Tutorial: Android Object API Application Development. Sybase Unwired Platform 2.2 SP02

ANDROID TUTORIAL. Simply Easy Learning by tutorialspoint.com. tutorialspoint.com

Android Basics. Xin Yang

Hacking your Droid ADITYA GUPTA

Android Development Tutorial. Human-Computer Interaction II (COMP 4020) Winter 2013

Android UI. Fundamentals. Develop and Design. Jason Ostrander

Getting Started With Android

How to develop your own app

Introduction to Android Development. Jeff Avery CS349, Mar 2013

Android ( ) Frank Ducrest

Introduction to Android SDK Jordi Linares

Tutorial for developing the Snake Game in Android: What is Android?

Woubshet Behutiye ANDROID ECG APPLICATION DEVELOPMENT

Overview of CS 282 & Android

Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months

ADT Plugin for Eclipse

Android Services. Services

Open Source Telemedicine Android Client Development Introduction

Learning Android Marko Gargenta

Developing Android Applications: Case Study of Course Design

Lecture 1 Introduction to Android

Android Persistency: Files

Android Concepts and Programming TUTORIAL 1

Smartphone market share

Transcription:

: Part 1 d.schmidt@vanderbilt.edu www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA CS 282 Principles of Operating Systems II Systems Programming for Android

Learning Objectives in this Part of the Module Understand the key steps in developing an Android app 2

Android Project Android App Development Steps Compilation & Packaging Create an Android Project by defining resources & implement app class(es) Android Package (.apk) Signing ADB Device or Emulator developer.android.com/guide/developing/building 3 has more info on this process

Android Project Android App Development Steps Compilation & Packaging The Eclipse ADT plugin incrementally builds your project as changes are made to the source code Android Package (.apk) Signing ADB Device or Emulator developer.android.com/tools/sdk/eclipse-adt.html 4 has more on ADT plugin

Android Project Android App Development Steps Compilation & Packaging Eclipse outputs an.apk file automatically Android Package (.apk) Signing ADB Device or Emulator en.wikipedia.org/wiki/apk_(file_format) 5 has more on APK files

Android Project Android App Development Steps Compilation & Packaging Android system uses signed certificates to identify the author of an app & establish trust relationships between apps Android Package (.apk) Signing ADB Device or Emulator developer.android.com/tools/publishing/app-signing.html 6 has more on signing

Android Project Android App Development Steps Compilation & Packaging Eclipse automatically installs & runs Apps on an actual device or an emulator via DDMS Android Package (.apk) Signing ADB Device or Emulator developer.android.com/tools/debugging/ddms.html 7 has more on DDMS

The Android build process involves many tools & processes that generate intermediate files on the way to producing an.apk The XML files are just as important as the source code Summary Android Project Compilation & Packaging Android Package (.apk) Signing ADB Device or Emulator 8

The Android build process involves many tools & processes that generate intermediate files on the way to producing an.apk If you use Eclipse, the complete build process is automatically done periodically as you develop & save your changes Summary 9

The Android build process involves many tools & processes that generate intermediate files on the way to producing an.apk If you use Eclipse, the complete build process is automatically done periodically as you develop & save your changes It is useful, however, to understand what s happening under the hood since much of the tools & processes are masked from you Summary 10

: Part 2 d.schmidt@vanderbilt.edu www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA CS 282 Principles of Operating Systems II Systems Programming for Android

Learning Objectives in this Part of the Module Understand how to use Eclipse to create a simple Android app 12

A Simple Hello Android Example Project name: HelloAndroid Application name: Hello, Android Package name: course.examples.helloandroid Create activity: HelloAndroidActivity Min SDK: 8 (Froyo) 13

Creating the Hello Android Android Project Start Eclipse BTW, if you can afford extra memory & a solid-state drive I highly recommend it! 14

Start Eclipse Create a new Android project from the file menu: File->New->Android Application Project Creating the Hello Android Android Project 15

Configuring the Project Settings Via a Wizard The new project wizard is where you setup critical information for an app: 16

The new project wizard is where you setup critical information for an app: You specify the name of the app & the project Configuring the Project Settings Via a Wizard 17

The new project wizard is where you setup critical information for an app: You specify the name of the app & the project You provide a Java package that will hold all of your app s code Configuring the Project Settings Via a Wizard 18

The new project wizard is where you setup critical information for an app: You specify the name of the app & the project You provide a Java package that will hold all of your app s code You need to set the version info for the Android platform that you will be targeting Configuring the Project Settings Via a Wizard 19

The new project wizard is where you setup critical information for an app: You specify the name of the app & the project You provide a Java package that will hold all of your app s code You need to set the version info for the Android platform that you will be targeting You specify a default Activity for your project Configuring the Project Settings Via a Wizard 20

The new project wizard is where you setup critical information for an app: You specify the name of the app & the project You provide a Java package that will hold all of your app s code You need to set the version info for the Android platform that you will be targeting You specify a default Activity for your project Configuring the Project Settings Via a Wizard You can configure this info via the 21 wizard or via the XML directly

Eclipse provides various tools & wizards that simplify the creation of apps Summary 22

Summary Eclipse provides various tools & wizards that simplify the creation of apps It s not mandatory to use these wizards if you re comfortable working with XML directly However, good luck debugging handwritten XML files ;-) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" android:background="@android:color/transparent"> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" android:cliptopadding="false" android:drawselectorontop="false" android:cachecolorhint= "@android:color/transparent" android:scrollbaralwaysdrawverticaltrack="true" /> <Button android:id="@+id/clear_all_button" android:layout_width="150dip" android:layout_height="wrap_content" android:layout_margin="5dip" android:text= "@string/website_settings_clear_all" android:visibility="gone" /> </LinearLayout> 23

: Part 3 d.schmidt@vanderbilt.edu www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA CS 282 Principles of Operating Systems II Systems Programming for Android

Learning Objectives in this Part of the Module Understand the main parts of an Android project 25

Projects are containers that storing things like code & resource files Overview of Android Projects src/ Contains your stub Activity file. All other source code files (such as.java or.aidl files) go here as well. bin/ Output directory of the build. This is where you can find the final.apk file and other compiled resources. jni/ Contains native code sources developed using the Android NDK. gen/ Contains the Java files generated by ADT, such as your R.java file and interfaces created from AIDL files. assets/ You can use this to store raw asset files, such as textures and game data. res/ Contains application resources, such as drawable files, layout files, and string values.. libs/ Contains private libraries 26

Projects are containers that storing things like code & resource files Android projects eventually get built into an.apk file that can be installed onto a device Overview of Android Projects src/ Contains your stub Activity file. All other source code files (such as.java or.aidl files) go here as well. bin/ Output directory of the build. This is where you can find the final.apk file and other compiled resources. jni/ Contains native code sources developed using the Android NDK. gen/ Contains the Java files generated by ADT, such as your R.java file and interfaces created from AIDL files. assets/ You can use this to store raw asset files, such as textures and game data. res/ Contains application resources, such as drawable files, layout files, and string values.. libs/ Contains private libraries 27

Projects are containers that storing things like code & resource files Android projects eventually get built into an.apk file that can be installed onto a device Some are generated for you by default, while others should be created if required Overview of Android Projects src/ Contains your stub Activity file. All other source code files (such as.java or.aidl files) go here as well. bin/ Output directory of the build. This is where you can find the final.apk file and other compiled resources. jni/ Contains native code sources developed using the Android NDK. gen/ Contains the Java files generated by ADT, such as your R.java file and interfaces created from AIDL files. assets/ You can use this to store raw asset files, such as textures and game data. res/ Contains application resources, such as drawable files, layout files, and string values.. libs/ Contains private libraries developer.android.com/tools/projects 28 has more on Android projects

Three Key Elements in an Android Project Each Android project contains three key elements Java source code This part of the app is typically 29 the most free-form & creative

Each Android project contains three key elements Java source code XML-based GUI metadata to manage layouts, etc. Three Key Elements in an Android Project <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent"> <Button android:id="@+id/mapbutton" android:layout_gravity="bottom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="find Address"> </Button> </LinearLayout> You can write this metadata manually 30 or generate it via a layout editor

Three Key Elements in an Android Project Each Android project contains three key elements Java source code XML-based GUI metadata to manage layouts, etc. An XML Manifest file <?xml version="1.0" encoding="utf-8"?> <manifest> <application> <activity> <intent-filter> <action /> <data /> </intent-filter> </activity> <service> <intent-filter>. </intent-filter> </service> <receiver> <intent-filter>... </intent-filter> </receiver> <provider> <grant-uri-permission /> </provider> </application> </manifest> The manifest presents essential information 31 about the app to Android

Android Project Anatomy: src The App source code resides inside the src folder in the package that you specified in the new Android project wizard Eclipse usually (re)builds files properly, 32 but it can sometimes do weird things..

Android Project Anatomy: gen Android generates some files that make it easier for you to build GUIs & fetch resources The gen folder contains the generated code produced by the Android plugin e.g., stubs generated by AIDL compiler, R.java file generated by the Android resource compiler (aapt.exe), etc. Never put any code in this folder 33 or modify any generated code

Android Project Anatomy: gen Android generates some files that make it easier for you to build GUIs & fetch resources An app uses the R.java file to fetch GUI resources & widgets We ll discuss this file later 34

Android Project Anatomy: res The res folder contains non-code resources (e.g., layouts, menus, images, etc.) used by your app You can use image resolutions for different screen sizes based on contents in drawable-* folders developer.android.com/guide/practices/screens_support.html 35 has more info

Android Project Anatomy: res The res folder contains non-code resources (e.g., layouts, menus, images, etc.) used by your app You can use image resolutions for different screen sizes based on contents in drawable-* folders You can define your GUI using XML or the Android layout editor 36

Android Project Anatomy: res The res folder contains non-code resources (e.g., layouts, menus, images, etc.) used by your app You can use image resolutions for different screen sizes based on contents in drawable-* folders You can define your GUI using XML or the Android layout editor The various XML files are located beneath the layout folder developer.android.com/tools/help/adt.html#graphical-editor 37 has more info

Android Project Anatomy: res The res folder contains non-code resources (e.g., layouts, menus, images, etc.) used by your app You can use image resolutions for different screen sizes based on contents in drawable-* folders You can define your GUI using XML or the Android layout editor The various XML files are located beneath the layout folder The values/strings.xml file contains text strings for your app Can optionally include text styling & formatting via HTML tags developer.android.com/guide/topics/resources/string-resource.html 38 has more

Android Project Anatomy: Manifest File The AndroidManifest.xml file contains information Android needs to execute your app 39

Android Project Anatomy: Manifest File The AndroidManifest.xml file contains information Android needs to execute your app Android Since Android provides an App framework it has to know how to plug your App s components into the framework The manifest file tells Android how your app plugs-in to the framework Your Apps developer.android.com/guide/topics/manifest/manifest-intro.html 40 has more

The AndroidManifest.xml file contains information Android needs to execute your app Since Android provides an App framework it has to know how to plug your App s components into the framework When you install an App, the PackageManager reads your manifest file & populates various internal data structures Android Project Anatomy: Manifest File PackageManager packagemanager = getpackagemanager(); List<ResolveInfo> activities = packagemanager.queryintentactivities(intent, 0); boolean isintentsafe = activities.size() > 0; developer.android.com/reference/android/content/pm/packagemanager.html 41

The manifest file contains various important sections, including: App name/info, required platform version & minimum API level 42 Android Project Anatomy: Manifest File The list of Activity, Service, Content Provider, & Broadcast Receiver components defined by your App & events that your App cares about The security permissions your App is requesting Whether or not your App can be debugged when deployed <manifest package="com.example.helloandroid" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8 android:targetsdkversion="17" /> <application android:label="@string/app_name"> <activity android:name="com.example.helloandroid.helloandroidactivity" 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> developer.android.com/guide/topics/fundamentals.html#manifest has more

Summary Projects act as containers for storing things such as code & resource files src/ bin/ jni/ gen/ Contains your stub Activity file. All other source code files (such as.java or.aidl files) go here as well. Output directory of the build. This is where you can find the final.apk file and other compiled resources. Contains native code sources developed using the Android NDK. Contains the Java files generated by ADT, such as your R.java file and interfaces created from AIDL files. assets/ You can use this to store raw asset files, such as textures and game data. res/ Contains application resources, such as drawable files, layout files, and string values.. libs/ Contains private libraries 43

Summary Projects act as containers for storing things such as code & resource files The SDK tools expect your projects to follow a specific structure so it can compile & package your application correctly It is highly recommended that you create them with Eclipse & ADT or with the android tool on the command line 44

Summary Projects act as containers for storing things such as code & resource files The SDK tools expect your projects to follow a specific structure so it can compile & package your application correctly There are two other types of projects Test Projects These projects contain code to test your application projects and are built into applications that run on a device. Library Projects These projects contain shareable Android source code and resources that you can reference in Android projects. This is useful when you have common code that you want to reuse. Library projects cannot be installed onto a device, however, they are pulled into the.apk file at build time. developer.android.com/tools/projects 45 has more on Android projects

: Part 4 d.schmidt@vanderbilt.edu www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA CS 282 Principles of Operating Systems II Systems Programming for Android

Learning Objectives in this Part of the Module Understand how to use Eclipse to create the simple Hello Android app by Defining resources Implementing user-defined classes 47

Define Resources for Hello Android App Several types of resources can be defined Layout Strings Images Menus etc. developer.android.com/guide/topics/resources 48 has more info

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_android" /> </RelativeLayout> 49 Defining & Using App Layout Resources User interface layout specified in XML file stored in res/layout/<filename>.xml With Eclipse can also do layout visually (but beware of limitations) <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".helloandroidactivity" >

Defining & Using App Layout Resources User interface layout specified in XML file stored in res/layout/<filename>.xml Accessed from R.layout class public class MyActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate);... setcontentview(r.layout.main); }... } 50

Defining & Using App String Resources Types String String Array Plurals Can include style & formatting Stored in res/values/ <filename>.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name"> Hello, Android</string> <string name="action_settings"> Settings</string> <string name="hello_android"> Hello Android!</string> </resources> 51

Types String Defining & Using App String Resources String Array Plurals Can include style & formatting Stored in res/values/ <filename>.xml Each string references as @string/string_name in other *.xml files <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name"> Hello, Android</string> <string name="action_settings"> Settings</string> <string name="hello_android"> Hello Android!</string> </resources> res/layout/activity_hello_android.xml <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_android"/> 52

Defining & Using App String Resources Types String String Array Plurals Can include style & formatting Stored in res/values/ <filename>.xml Each string specified as @string/string_name Accessed as R.string.string_name <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name"> Hello, Android</string> <string name="action_settings"> Settings</string> <string name="hello_android"> Hello Android!</string> </resources> res/layout/activity_hello_android.xml <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_android"/> tv.settext(r.string.hello_android); 53

Defining & Using R.java Resources At compilation time, resources are used to generate the R.java class XML Layout files Android Manifest.xml Compile w/ aapt.exe Compiled XML files R.java public final class R { public static final class layout { public static final int activity_hello_android =0x7f030000; } public static final class string { public static final int action_settings=0x7f050001; public static final int app_name=0x7f050000; public static final int hello_android=0x7f050002; }... Implements Resource Files & Packed 54 Data patterns from smallmemory.com

Defining & Using R.java Resources At compilation time, resources are used to generate the R.java class XML Layout files Android Manifest.xml Compile w/ aapt.exe Compiled XML files R.java App access resources through the R class public final class R { public static final class layout { public static final int activity_hello_android =0x7f030000; } public static final class string { public static final int action_settings=0x7f050001; public static final int app_name=0x7f050000; public static final int hello_android=0x7f050002; }... setcontentview(r.layout.main); tv.settext(r.string.hello_android); Implements Resource Files & Packed 55 Data patterns from smallmemory.com

Implement User-defined Classes HelloAndroid.java implements the main Activity for the app All App Activities inherit from com.android.activity package com.example.helloworld; import android.app.activity; import android.os.bundle; import android.view.menu; import android.widget.textview; 58 public class HelloAndroidActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); TextView tv = new TextView(this); tv.settext(r.string.hello_android); setcontentview(tv); } }

Implement User-defined Classes HelloAndroid.java implements the main Activity for the app All App Activities inherit from com.android.activity Each Activity manages one screen in an app When you change screens, you typically change the currently active Activity 59

Implement User-defined Classes HelloAndroid.java implements the main Activity for the app All App Activities inherit from com.android.activity Each Activity manages one screen in an app Most apps have a default Activity that serves as the entry point to the app <application <activity android:name=".helloandroidactivity" <intent-filter> <action android:name= "android.intent.action.main"/> <category android:name= "android.intent.category.launcher"/> </intent-filter> </activity> </application> 60

The Java source code is combined with others files generated by various tools in the Android/Eclipse tool chain to create a signed *.apk package Summary developer.android.com/guide/developing/building 61 has more info on this process

The Java source code is combined with others files generated by various tools in the Android/Eclipse tool chain to create a signed *.apk package Summary developer.android.com/guide/developing/building 62 has more info on this process