2. What is Android?
➔ Open source, Linux based OS
➔ Developed by Open Handset Alliance
➔ Since 2008
➔ Android market
○ Entertainment, communication, Social Media etc..
4. Why Android?
➔ Open source code
➔ Low barrier of entry
○ Can be developed in any platform
○ Only one time payment of $25
➔ Google Play store
➔ Businesses are investing for app development
15. Dalvik vs ART
➔ Convert DEX bytecodes to machine code
➔ Dalvik - Just in time (JIT)
○ App opening slow
➔ ART - Ahead of time (AOT)
○ One time process
○ Fast app opening, Slow Installation
○ Takes more storage
16. Tools
➔ JDK
➔ IDE
○ Android Studio
○ Eclipse
➔ SDK
➔ AVD
➔ Build Tool (Gradle)
21. Which languages should I use?
➔ Java
- Official language
➔ Kotlin
- Reduced boilerplate codes
➔ C / C++
- Use of Java NDK
- Game developments
22. ➔ C#
- Beginner friendly for C or C++
- Supports Unity and Xamarin
➔ Corona
- Cross platform language
➔ Phone Gap
- Powered by Apache cordova
- WebView packaged like an app
➔ XML for layout designing
24. 2. Know your audience
- Min SDK version?
Global Android version distribution as of August 2017
25. 3. Choose your building blocks wisely
- Basic UI components
- Android support libraries
- Using 3rd party libraries from Jcenter
○ Reputation
○ Efficiency
○ Reusability
○ Eg: GSON, Retrofit, Universal Image Loader
26. 4. Choosing a database
- Speed and ease of use
- SQLite
○ Built-in database
- Core data, ORM Lite, Realm
- Realm
○ NoSQL
○ Cross Platform support
○ Json support
○ Encryption support
○ Limitations?
27. Security concerns
➔ Requesting permissions
➔ How to avoid application being reverse engineered
- Proguard
- Keep valuable info in a server
○ API keys
○ Secret keys & tokens
○ Payment info
29. ➔ Handle app crashes
- ANR dialogs
➔ Test Test Test
- Various devices and OS versions
- Manual testing
- Automated
○ Firebase Test Lab
○ Espresso
○ Robotium
30. Prepare for release
➔ Review the app Manifest.xml
- Application
- uses-permission
➔ Review the build configuration
- versionCode & versionName
- minSdkVerision & targetSdkVersion
➔ Signing the app
- Manual or Google App Signing
31. ➔ Building a release APK
➔ Run Google Play Alpha Beta testing
- Eg: for In-app purchasing
➔ Publishing on Google Play
- Read user reviews
- Bug fixes
- New updates
32. 7 Design Principles to remember...
1. Pictures are faster than words
2. If it looks the same, it should act the same
3. Decide for me but let me have the final say
4. Keep it brief
5. Make important things fast
6. Get to know me
7. Only interrupt me if it's important
36. 3. Application fundamentals
- Creating Activities and Fragments to process user inputs
- Communicating with intents
- Working with Threads
○ RunOnUiThreads
○ Handlers and Runnables
○ AsyncTasks
37. - Handling Notifications
○ Using Broadcast Receivers and Services
- Understanding parameters of UI components
○ Layout hierarchy
○ Positioning
○ Handling multiple screen resolutions
- Language localizations
38. 4. User interface designing
- Basic UI components
○ TextView, Button, Spinner etc...
- ListViews and Adapters
- Time and Date components
- Image and media components
- Alert dialogs, popups and toasts
39. - Advanced UI features
○ Navigation drawer
○ Action bar
○ Tab views, Toolbars and pages
○ Card views and Recycle views
○ Floating action button
- Applying themes and animations
- Material Design
40. 5. Persisting application data
- Saving and Loading User Preferences
- Using SQLite database or
- 3rd party databases
○ Realm
○ Core Data
○ ORM Lite
42. 7. Working with device specific features
- Using Maps, GPS and location based services
- Access to Bluetooth and Wifi
- Working with sensors
- Handling gestures
- Accessing Phone services (SMS, Call, MMS)
- Using network connectivity services (Cell networks, Wifi)
- Accessing Camera, Alarm and speakers
43. 8. Publishing Android Application
- Preparing for release
- App signing
- Publishing to Google Play