קורסי אנדרואיד לחברות פרטיות
במסגרת פעילותה מכללת סינטקס (Syntax) מעבירה באופן שוטף קורסי אנדרואיד בבית הלקוח לרבות לחברה פרטית המעוניינת לפתח אפליקצייה in-house. הקורס נבנה אישית עבור הלקוח, מותאם לצרכיו, ומתקיים במשרדי החברה בימים המתואמים מראש בשעות הבוקר. הקורסים בחברות מועברים באופן אישי על ידי ערן קצב מייסד המכללה.
במהלך פעילותה העבירה ומעבירה קורסים שונים על מערכת ההפעלה Android לחברות פרטיות כגון CWT, IronSource, Ophir Optronics, General Motors וארגונים ממשלתיים שונים (המלצות מצורפות בהמשך), וכן לקהל הרחב לרוב במסגרת קורסים הנמכרים אונליין. ערן, מייסד המכללה, בעל תואר B.Sc במדעי המחשב מהאוניברסיטה העברית ותואר שני בהצטיינות מאוניברסיטת תל אביב. ערן עוסק בהוראה והדרכה מזה 22 שנים, וכיום מועסק באוניברסיטת רייכמן ובמכון הטכנולוגי בחולון הן כמרצה לקורסי אנדרואיד פרי עטו, והן כרכז תחום המובייל במערך פרויקטים (במכון הטכנולוגי). יחד עם זאת ערן עובד כמפתח עצמאי בתחום המובייל מזה עשר שנים ובין פיתוחיו ניתן למצוא את אפליקציית Bip it הותיקה אשר נועדה לתפעול קולי מלא של הטלפון בעברית וצברה קרוב למיליון הורדות בישראל בלבד. לאפליקציה עשרות אלפי משתמשים יומיים בצורתה המקורית והרבה יותר מכך ב״מעטפות״ השונות אותן הוא פיתוח וניתן למצוא בכל רכבי סוזוקי בארץ, בטאבלטים אשר מחולקים מטעם עיריית רמת גן לקשישי העיר, בשעונים חכמים של חברות שונות ועוד.
המכללה מציעה שלושה קורסים שונים למערכת ההפעלה אנדרואיד:
הקורס הראשון הוא קורס תכנות Native Android בשפת Kotlin ומיועד למתכנתים הרוצים לקבל הכשרה יסודית ומקיפה לתכנות לאנדרואיד בשפת קוטלין ולפי תבניות האכיטקטורה המתקדמות ביותר. הקורס מתואר כאן בהמשך והסילבוס שלו מצורף גם כן (סילבוסים לשני הקורסים הבאים יסופקו לפי דרישה).
הקורס השני אשר נקרא Android Internals אינו מיועד להכשיר מתכנתי אפליקציות אלא לספק היכרות עומק לאנשים טכנולוגים עם רבדי מערכת ההפעלה השונים ומנגנוני האבטחה המרכיבים את המערכת. הקורס הוא קורס עיוני אך כולל התנסות מעשית רבה עם כלי המערכת השונים וברמות שונות.
הקורס השלישי נקרא Android Uno והוא קורס בן יום או יומיים המספק היכרות טכנלוגית בסיסית עם מערכת ההפעלה. הקורס מיועד לאו דווקא לאנשים טכנולוגים. מטרת הקורס היא לחשוף את המשתתף אל היחודיות של מערכת ההפעלה וכיצד ניתן לנצל אותה הן לטובת המשתמש והן לרעתו וכיצד יכולה מערכת הההפעלה להגן על המשתמש מאפליקציות מזיקות, הגנה שהיא לעולם לא מלאה. בקורס אף תוצג בצורה טכנית ומפורטת אפליקציית ״ריגול״ תמימה לכאורה שנכתבה עבור הקורס.
Android Kotlin & Jetpack Course For Developers
הקורס מיועד למתכנתים בעלי פוטנציאל השתלבות גבוה בחברה אשר נדרשים להשלמת הידע הטכני הדרוש לתפקיד. ראשית הקורס יקנה הבנה של אנדרואיד כמערכת קוד פתוח על רבדיה השונים, לאחר מכן תלמד שפת Kotin לעומק הן ברמה הפונקציונלית, הן ברמת התכנות מונחה העצמים והן ברמת העבודה המקבילית עם Coroutines. לאחר מכן ובמהלך שני המפגשים הבאים ילמדו אבני הבסיס של כל אפליקציית האנדרואיד והם: Activities, Intents, Permissions, Fragments, Adapters and Recycler View.
במפגשים הבאים נכיר את ספריית ה Android Jetpack על שלל רכיבי הארכיטקטורה שבה עם דגש על תבנית ה MVVM ונלמד כיצד לעבוד ולשלב בכל אפליקציה את View Model & LiveData, לשמור נתונים במסד נתונים מקומי באמצעות Room, ולייצר Repositories המנהלים בצורה נכונה את הגישה למידע אליו.
לאחר מכן נלמד כיצד לתקשר עם מסדי נתונים מרוחקים באמצעות Retrofit 2 ולקצר משמעותית את הקוד שלנו באמצעות Dependency Injection עם ספריית Hilt של גוגל.
החלק האחרון של הקורס יוקדש לדבר מהותי מאוד וכאשר לומדים אנדרואיד באופן עצמאי יש לא מעט תפיסות מוטעות לגביו והוא כל נושא העבודה ברקע (ללא ממשק משתמש). נכיר לעומק את היתרונות, והמגבלות (שהוטלו לאורך מערכות ההפעלה השונות) והשימושים הייחודיים של שני רכיבים מאוד חשובים באנדרואיד והם Service ו Broadcast Receivers וכמובן תזמוני המשימות העתידיים בעזרת מערכת ההפעלה באמצעות AlarmManager, JobScheduler וכמובן ה Work Manger החדש המשלב ביניהם.
חשוב לציין כי, במטרה לחסוך שעות הוראה פרונטליות, טרם תחילת הקורס ינתן למשתתפים מדריכים ללימוד עצמי של סביבת ה Android Studio ובעיקר של ממשק המשתמש (כולל שלל הרכיבים הקיימים, ארגנם בתוך המסך, לוקליזציה ועוד) ובסופם ידרושו המשתתפים לייצר אפליקציה בסיסית בעלת מסך יחיד טרם תחילת הקורס.
Lesson 1
Part 1 – Android Jetpack Overview & Intro to Kotlin
- Introduction – Android Native Development
- Android OS Historical Overview
- AndroidX & Android Jetpack Components
- Android Platform Architecture
- JVM, DVM and ART
- Kotlin overview
- Kotlin’s Extensions
- Kotlin vals & vars
- Kotlin’s Nullability
- Kotlin Basics (if, when, loops, Arrays)
Part 2 – Kotlin – Functional Programming
- Functions & Lambdas
- Default Arguments
- High order Functions
- Collections functions (filter, map, flatMap…)
- Lazy Sequences
- Scope Functions
- infix functions
- extension functions
Lesson 2
Part 1 – Object Oriented with Kotlin
- Classes – Constructors and Properties
- Inheritance
- Interfaces and Abstract classes
- Data classes
- Delegated properties & lazy initialization
- Object expressions and Object Declarations
- SAM interfaces
- Nested & inner classes
- Access modifiers and Generics
- Operator Overloading
Part 2 – Asynchronous programming with Coroutines
- Making a Responsive UI
- Suspension over Blocking
- CoroutineScope & CoroutineContext
- Dispatchers
- Coroutines Builders (launch, async, withContext…)
- Combining Suspended Functions
- Jetpack Components Scopes
- Continuation Object
Lesson 3
Part 1 – Android Building Blocks 1
- Android App Components
- Activities & Intents (Explicit and Implicit)
- Runtime Permissions using Launchers
- Activity LifeCycle and Shared preferences
Part 2 – Android Building Blocks 2
- Single Activity Architecture with Fragments
- Fragment Lifecycle
- Using Navigation for Fragments transactions
- Recycler View (Adapter, ViewHolder, LayoutManager)
Lesson 4
Part 1 – View Models & Live Data
- App Resources & Localization (langauge, screen, orietation…)
- Configuration changes & savedInstanceState bundle
- MVVM Design pattern
- Jetpack Lifecycle object
- View Model Scope
- LiveData & MutableLiveData
- Saved state module
- Transformations
- View Model provider Factory
Part 2 – MidProject using Room
- Internal Database with Room
- Activity For Result with Launchers
- MVVM project with ViewModel, Livedata, Navigation and Room.
Lesson 5
Part 1 – Phone services
- Google play services & Fused location
- Working with the phone’s Camera
- Android External Storage
- File Provider & Content Providers
Part 2 – Closing Gaps – extra time
Lesson 6
Part 1 – Dependency Injection with Hilt
- The concept of Dependency Injection
- Manual vs Automatic Injection
- Static vs Dynamic injection
- Dagger 2 and Hilt
- Hilt Annotations: @Inject, @Binds and @Provides
- Hilt Modules and @Installin annotation
- Dependencies scope
- View Models with Hilt
Part 2 – Jetpacked Architecture App with local and remote data sources
- Useful external libraries: Glide, Volley, Gson & Retrofit 2
- Repository – for single data entry point to data sources
- Creating Full Jetpack Architecture app using Hilt and Retrofit 2
Lesson 7
Part 1 – The Broadcasting system
- Notifications
- Broadcast Receivers
- Static vs Dynamic Registration
- Local Broadcast Manager
- Alarm Manager
Part 2 – Non UI Related tasks
- Service and Foreground service
- Background Execution limits
- Job Schedulers
- Work Manager
הסילבוס הנ״ל מוגן בזכויות יוצרים ואין להעתיקו, לשכפלו או לעשות בו כל שימוש ללא אישור מפורש מהמחבר, ערן קצב, וממכלת סינטקס
Custom and Modular Android with Java or Kotlin
הסילבוס שנבנה בשיתוף פעולה עם הלקוח יכול להיות עבור מתכנתי Java המעוניינים לבצע מעבר ל Kotlin או לחסרי רקע ולכן יכול לכלול מכינה בסיסית בשפת Java או Kotlin אם המשתתפים אינם מתכנתים, ומכינה מתקדמת ב OOP הכוללת נושאים בתכנות מונחה עצמים וביניהם: ממשקים, מחלקות אבסטרקטיות, תכנות מקבילי ועוד, דבר הנחוץ למתכנתים אשר עובדים בשוטף רק ב-Embedded או בשפות שאינן מונחות עצמים.
הקורס מקנה היכרות מעמיקה עם ה Android API בעזרת יצירה מודרכת של 70 אפליקציות יעודיות שונות. בקורסים הניתנים לחברות מושם דגש רב על הבנת הארכיטקטורה הכללית של המערכת ויציאה מהמקרה הפרטי אל המקרה הכללי בעזרת תרגולים נוספים שיכולים להיות במסגרת הקורס או בזמנם הפרטי של המשתתפים (לבחירת החברה).
חבילת ה Android API הבסיסית כוללת את המודולים הרשומים מטה אשר מהווים את הבסיס לכל מתכנת אנדרואיד, והיא ניתנת להתאמה אישית לצרכי הלקוח.
חשוב להדגיש כי ניתן להוסיף נושאים שאינם רשומים כאן ולחברה יש צורך בהם, רשימת הנושאים המתקדמים האפשריים כמו גם פירוט חבילת הבסיס לפי מחלקות וזמנים תועבר ללקוח על פי בקשה.
יחד עם זאת אם ללקוח יש צורך בשעות יעוץ והכוונה אישית לצוות המפתחים לצורך בניית המוצר לאחר הקורס ניתן להוסיפם בעלות מסובסדת (50% מעלות שעת יעוץ רגילה).
רשימת המודולים בחבילת הבסיס Android API:
- User Interface – עיצוב ממשק המשתמש, הכרת מרבית הווידג׳טים וה Layouts המובנים, קבלת אירועים, לוקוליזציה לפי שפות, מסכים ועוד.
- Activities & Intents – הוספת רכיבים(מסכים) נוספים לאפליקציה ופתיחת יישומי המערכת המובנים.
- Persistent Storage – שמירת נתונים במערכת הקבצים (internal & external storage).
- Menus & Dialogs – שימוש בתפריטי המערכת השונים ויצירת חלונות נוספים.
- Adapter, AdapterViews & RecyclerView – רשימות נגללות וספקי המידע עבורן כולל רכיבים מתקדמים מתוך ה Material design.
- Asynchronous programming – ביצוע מקבילי של משימות ועדכוני UI מתוך Thread אחורי.
- Alarm Manager & Timer – תזמון משימות לביצוע עתידי על ידי המערכת – גם כאשר המשתמש אינו באפליקציה.
- Notifications – שליחת הודעות למערכת ההתראות של מכשיר האנדרואיד להצגה למשתמש כאשר הוא מחוץ ל UI שלנו.
- Services – מבצעי שרות ללא UI עם זמן חיים לעיתים בלתי מוגבל.
- Broadcast Receiver – רכיבים הנועדו לקבלת הודעות (אישיות או ממערכת ההפעלה).
- Fragments – חלקות המסך לתתי יחידות כל אחת עם ניהול עצמאי ובקרים וויזאולים מתקדמים המחליפים בינהם. בין היתר מושם דגש על ה Single Activity Architecture באמצעות Navigation.
- Sensors – חיישנים (מיקום, אקסלרומטר, אור ועוד)
- Advance UI – ממשק משתמש מתקדם (אנימציות, שינויי אורינטציה, יצירת ווידג׳טים אישים ועוד)
- Communication – תקשורת לקוח-שרת (כולל JSON ו XML).
- Database & Content Providers – מסדי נתונים וספקי מידע מובנים במערכת לרבות אנשי הקשר.
- צד שרת באמצעות Firebase – בניית מאגר משתמשים, שליחת הודעות ומסדי נתונים מרוחקים.
- App Architecture – בנייה ותכנון נכון של האפליקציה בעזרת חבילת ה Android Jetpack לרבות ה View Model, Live Data, Navigation & Room Database. מודול זה שהוא החשוב ביותר הינו חובה בכל קורס ונלמדות בו תבניות עיצוב שונות ובין היתר ה MVVM – Model View View-Model
- Kotlin Coroutines – הכרת השיטה החדשה לעבודה מקבילית לצורך שמירת ממשק רספונסיבי אשר מתבססת על תקשורת פנימית בין פונקציות המוגדרות ב Scope מסויים. כולל שימוש מלא ב Scopes של מחזור חיי הרכיבים השונים כפי שהוסף יחד עם ה Android Jetpack.
- Retrofit 2 – נלמד כיצד לתשקר עם web services המספקים מידע בפרוטוקל REST באמצעות ספריה אשר יכולה בקלות להמיר את קבצי JSON לאובייקטים.
- Dependency Injection with Dagger – Hilt – הזרקת התלויות באמצעות קוד קצר ונקי ושימוש בספריית Hilt אשר נבנתה על ה Dagger המסורתית מבית Google
- Unit Testing – יצירת מערכת בדיקות למודולים השונים באפליקציה עם או בלי מכשיר אנדרואיד זמין