תקציר

אנדרואיד היא מערכת ההפעלה המובילה ביותר היום בתחום המובייל, ויש לכך סיבות טובות. בתחום הטלפוניה יש היום יותר מכשירי אנדרואיד שנקנים מאשר כל סוג אחר, והצמיחה לא מוגבלת לשוק הטלפונים. כמות המכשירים העושים שימוש באנדרואיד הולכת וגדלה וכיום ישנם שפע מכשירים נוספים החל מטאבלטים, טלויזיות ונגני מדיה המבוססים על אנדרואיד, וכלה בתחום המחשוב הלביש העומד לזנק בקרוב.

תכני הקורס גובשו לאור נסיון רב בפיתוח והדרכה בתחום האנדרואיד, וזוכים לעדכון שוטף לפי השינויים וההתקדמות בתחום. בקורס נעשה היכרות עם הפלטפורמה והשירותים השונים שהיא מעמידה לרשותנו כמפתחים. בהמשך נסקור את אבני הבניין של אפליקציות באנדרואיד, על מנת להבין כיצד אלו משתלבים ובאיזה אופן עלינו לבנות מערכות מורכבות. לאחר מכן נעשה מעבר מעמיק על הרכיבים השונים וההיבטים של פיתוח אפליקציה לאנדרואיד.

הקורס משלב לימוד בכיתה עם תרגול מעשי ובמהלכו אנו מפתחים אפליקציה המשלבת את הרעיונות הנלמדים.

מטרות הקורס

הקורס הינו קורס מעשי בפיתוח אפליקציות המקיף הבנה כללית בפלטפורמה ובשירותים הניתנים בה, העמקה בפרטי השימוש ברכיבים השונים ונסיון מעשי בפיתוח אפליקציות באמצעות הרכיבים הללו.

המטרה היא להגיע בתום הקורס להיכרות טובה עם תיאוריה ועם הפרקטיקה של בניית אפליקציות לאנדרואיד העושות שימוש ביכולות הפלטפורמה.

קהל היעד

מפתחים בעלי נסיון בתכנות הרוצים ללמוד לפתח אפליקציות לאנדרואיד.

ידע נדרש

פיתוח אפליקציות לאנדרואיד נעשה ברובו בשפת התכנות Java. על מנת להפיק מהקורס את המרב נדרש ידע מוקדם ברמה סבירה בשפת ג'אוה והכרה טובה של יסודות התכנות.

משך הקורס

משך הקורס הינו 40 שעות אקדמיות.

הנושאים בקורס

Introduction to Android (2 hours)

History of Android

  • History Overview
  • Android Open Source Project
  • Android Ecosystem

Android Stack

  • Open Source Licenses
  • System design philosophy
  • Linux Kernel Space
  • Native Layer
  • Dalvik VM
  • Application Layer
  • Apps

Android Development Environment Setup (1.5 hours)

  • Installing Android SDK
  • Installing and configuring Eclipse for Android development
  • Creating a New Android Project
  • Hello World Project
  • Android Project structure
  • Using Emulators and Android devices, monitoring tools

Android App High Level Architecture (2 hours)

  • Activities and UI
  • Fragments and support for variable screen sizes
  • Action Bar
  • Notifications
  • Services
  • Intents
  • Content Providers and Loaders
  • List and Adapters
  • Broadcast Receivers
  • Widgets
  • Android Apps Attitude and Ecosystem

Debug and Monitoring Tools (1 hour)

  • Logcat
  • Debugger
  • Traceview
  • HierarchyViewer

Android Security Overview (1 hour)

  • Security Design Overview
  • Application Sandboxing
  • App Permissions Review
  • Asking for Permission
  • Dangerous Permissions

Developing the User Interface (3 hours)

  • Introduction to Android UI
  • Declarative (XML) and Programmatic (Java) UI
  • UI building blocks - Views and Layouts
  • Views
  • Basic view properties: width, height, ids, strings, weights, etc.
  • Important Views: TextView, Button, ImageView
  • Handling UI events using listeners
  • Layouts
  • Most useful layouts - Linear, Relative and Frame Layouts
  • Activity Lifecycle and Event-Handling
  • Introduction to the Resource System

Preferences (1.5 hours)

  • Overview of preferences
  • Designing Preference Screens
  • The Preference Activity
  • Programmatically reading and writing values
  • Listeners for Preference Changes
  • Datastore implementation and Security

Advanced UI (1.5 hours)

  • Setting up Activity interaction
  • Passing data between Activities
  • Programmatically setting up the UI
  • Use XML resources in programmatic layout
  • Dynamic use of screen resolution
  • Diving into the Resource system

Services (3 hours)

  • Overview of Android services
  • Declaring and registering a service
  • Bound and started services
  • Remote and local services
  • Service Lifecycle
  • Service Concurrency considerations

Action Bar and Navigation (1.5 hours)

  • Why an Action Bar?
  • Enabling and removing the Action Bar
  • Adding action items
  • Split Action Bars
  • Action Bar "Up"
  • Drop-down navigation in Action Bar

Lists and Adapters (1.5 hours)

  • Overview of selection widgets
  • Working with Lists
  • Working with Adapters
  • Connecting the View with the Adapter
  • ListActivity and manually using ListViews
  • Add and remove List values
  • Creating custom List item view and bindings

Broadcast Receivers (3 hours)

  • Broadcast Receiver Usage Patterns
  • Implementing a Broadcast Receiver
  • Registering a Broadcast Receiver via the Manifest file
  • Registering a Broadcast Receiver programmatically
  • Broadcast Receiver Permissions
  • Testing Broadcast Receiver code

Fragments (3 hours)

  • Motivation for Using Fragments
  • Implementing Fragment classes
  • Fragment Life Cycle
  • Static and Dynamic usage
  • Fragments with no UI
  • Fragment Operations and Transactions
  • The Fragment Back Stack
  • Adding action bar items
  • Activity-Fragment and Fragment-Activity Communications
  • Fragment-Fragment Communication
  • Fragment Initialisation
  • Specialised Fragment Types

Processes (1.5 hours)

  • The Relationship between Apps and Processes
  • Diving into Process States
  • The Main UI thread
  • Making use of Worker Threads
  • Integrating Worker threads with the UI - Problem and Scalable Solutions
  • Using Handlers
  • The AsyncTask
  • Advanced topics

Network (1.5 hours)

  • Accessing the Network
  • Android builtin HTTP clients
  • Downloading data from the Internet
  • External Networking Libraries

Testing Android Projects (3 hours)

  • Testing Overview - Motivation and Approaches
  • JUnit - The Main Testing Framework in Java
  • Unit Testing Concepts and Implementation
  • Android Instrumentation Framework
  • Using Mocks Frameworks in Tests
  • Additional Builtin Android Testing tools - Exercise Monkey, Monkey Runner and UIAutomator
  • 3'rd Party Testing Frameworks - Robolectric and Esspresso

SQL and SQLite on Android (3 hours, optional)

  • SQL Basics
  • SQL Databases Overview
  • SQLite Overview - Data Types, DML Statements and Queries
  • SQLite in Android Apps
  • Creating and Accessing the Database

Native Development for Android (3 hours, optional)

  • Considerations for using the NDK
  • Hello NDK example
  • Accessing native functions from Java
  • Using Java variables from C
  • Manipulating Primitive and Reference Types
  • JNI String methods
  • Accessing Java data members from C
  • Calling Java member functions from C
  • NDK Installation
  • NDK libraries overview and usage example
  • NDK Makefiles

המלצות

שמי עודד ואני בוגר המסלול המקיף לפיתוח אפליקציות מובייל. כחלק מהקורס יצאה לי הזכות ללמוד מעמית, עמית מרצה מעולה, סבלני ובעל ידע עשיר בתחום. במהלך השנים למדתי אצל מספר מרצים והבנתי שאמנם הידע של המרצה הינו חשוב מאוד אבל לא פחות חשובה היא היכולת שלו והדרך בה הוא מצליח להעביר לתלמידים את הידע ולשמחתי עמית ניחן בשניהם יחד. למדתי מעמית המון והידע שרכשתי ממנו עזר לי בהקמת העסק שלי לפיתוח אפליקציות. ממליץ בחום לכל מי שמעוניין להתפתח בתחום.
עודד דילמוני Mobile Giants

שלום. שמי ערן פורת. במסגרת תפקידי כמנהל המובייל ב PointGrab ארגנתי קורס אנדרואיד בתוך החברה למפתחים בחברה. למזלי בחרתי את עמית להעביר את הקורס, העבודה אתו הייתה נפלאה, משלב תכנון הקורס ועד לביצוע. הדרכה מקצועית וסבלנית ומתן מענה ולכל משתתפי הקורס על שאלות שהתעוררו במהלך הקורס ובשיעורי הבית. משתתפי הקורס ללא רקע באנדרואיד הצליחו להיכנס לתחום ולעומתם מתכנתי האנדרואיד הצליחו להעמיק ולהרחיב את הידע שלהם.
ערן פורת PointGrab

שמי גיל ובמסגרת תפקידי כארכיטקט תוכנה בפוינטגאב זכיתי להשתתף בקורס אנדרויד שהעביר עמית. עמית הוא מורה מעולה - מקצועי, בעל ידע נרחב בתחום, מסביר כל דבר בצורה ברורה ופשוטה ככל האפשר, והכל בצורה נעימה ואדיבה. תמיד היה נחמד לבוא ולדסקס איתו סוגיה זו או אחרת ועל נושאים להם לא היתה לו תשובה מיידית תמיד דאג לבדוק ולחזור אלינו בנושא. אני ממליץ בחום על הקורסים שמעביר עמית.
גיל וולשטטר PointGrab