- Code Management
- Open Source
- Version Control & Git
- App Stores
- Testing Mobile Apps
- Automated Tests
- Visual Studio App Center
- Espresso Test Recorder
- Firebase Test Lab
- Robo Tests
- App Distribution
Android Development with Kotlin, Part 3 - Code and App Management
1. St. Pölten University of Applied SciencesSt. Pölten University of Applied Sciences
Platzhalter für möglichen
Bildeinsatz
Android Development with Kotlin, Part 3
Code & App Management
Andreas Jakl
Digital Healthcare
FH St. Pölten
Platzhalter für möglichen
Bildeinsatz
Version 1.2
2. Andreas Jakl
▪ Focus areas
▪ AR / VR, mobile apps, sensors, interaction
technology, software architecture, open source
developer (NFC, Bluetooth Beacons)
▪ Microsoft MVP (Most Valuable Professional)
▪ mobility.builders community: Mobile Developer
After-Work Events
▪ Previous Experience
▪ Tieto, Start-up (Mopius), Nokia (Finland),
Siemens Mobile (Munich), FH Hagenberg
(Mobile Computing)
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten
https://www.andreasjakl.com/
@andijakl
andreas.jakl@fhstp.ac.at
2
3. Contents
▪ Code Management
▪ Open Source
▪ Version Control & Git
▪ App Stores
▪ Testing Mobile Apps
▪ Automated Tests
▪ Visual Studio App Center
▪ Espresso Test Recorder
▪ Firebase Test Lab
▪ Robo Tests
▪ App Distribution
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 3
4. CODE MANAGEMENT
Licenses and Collaboration
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 4
6. Software Patents
▪ Europe
▪ Source code by itself not patentable (only copyright)
▪ But: broader “computer implemented inventions” that
solves a technical problem in a
“novel or non-obvious manner”
▪ US
▪ Generally patentable
▪ But do not necessarily “win” if challenged in court and not concrete enough
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 6
Source: https://fsfe.org/campaigns/swpat/swpat.en.html
https://en.wikipedia.org/wiki/Software_patents_under_the_European_Patent_Convention
https://www.epo.org/news-issues/issues/software.html
https://en.wikipedia.org/wiki/Software_patents_under_United_States_patent_law
7. Open Source
▪ Software must be:
▪ Freely used
▪ Modified
▪ Shared
▪ Licenses
▪ Approved licenses by OSI: https://opensource.org/licenses
▪ Choose a license: https://choosealicense.com/
▪ Most popular: GPL, Apache, MIT
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 7
Image source: Open Source Initiative by Simon Phipps, CC BY 2.5
https://en.wikipedia.org/wiki/File:Opensource.svg
8. Version Control & Collaboration
▪ Advantages
▪ Teams & Collaboration
▪ Tracking changes & history
▪ Branches for stable release +
development
▪ Most popular:
▪ Git
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 8Source: https://www.openhub.net/repositories/compare
9. Git Basics
▪ Store finished changes with “commit”s
▪ Default “Master” branch for main version
▪ “HEAD” = current version
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 9
commit commit commit
HEAD of master branch
10. Git Basics
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 10
working
directory
index
(stage)
HEAD
add commit
Some Git clients simplify and do this in one step
11. Git Basics
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 11
working
directory
index
(stage)
HEAD
add commit
your PC server
HEAD
push
pull
12. Using GIT
▪ GIT Tools
▪ Windows, Mac, Linux
▪ Optional: more powerful user interfaces
▪ TortoiseGit – great Windows Explorer integration: https://tortoisegit.org/
▪ GitHub Desktop – https://desktop.github.com/
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 12
13. Hosting GIT Repositories
▪ Online services for collaboration
▪ GitHub: free for open source projects
▪ GitLab: install GIT on own server (free)
▪ Visual Studio Team Services
▪ Free for 5 users + MSDN subscribers, also for closed source projects
▪ Includes agile project planning, DevOps (automated testing &
deployment)
▪ https://www.visualstudio.com/team-services/
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 13
14. Create / Clone Git Repository
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 14
15. Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 15
Git versioning:
History, contributors & changes
(GitHub Desktop app)
16. Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 16
Git versioning:
Reviewing your code changes before committing
(GitHub Desktop app)
17. APPS & USER EXPERIENCE
How to bring the technology to your customers?
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 17
18. App Stores Are Merciless
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 18
19. Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 19
Source: App Annie, Record Levels of App Downloads & App Store Consumer Spend in Q4 2017
https://www.appannie.com/en/insights/market-data/app-downloads-consumer-spend-q4-2017/
20. Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 20
Source: App Annie, Record Levels of App Downloads & App Store Consumer Spend in Q4 2017
https://www.appannie.com/en/insights/market-data/app-downloads-consumer-spend-q4-2017/
21. „Within 3 days, an app
loses 77% of its users“
@andrewchen New data shows losing 80% of mobile users is normal, and why the best apps do better
http://andrewchen.co/new-data-shows-why-losing-80-of-your-mobile-users-is-normal-and-that-the-best-apps-do-much-better/Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 21
22. Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 22
Source: Android, & Apple, & Google, & Microsoft, & AppBrain, & BlackBerry, & Various sources
(WindowsCentral.com, & International Games Week Berlin), & Amazon, & VentureBeat, &
CNET. (n.d.). Number of apps available in leading app stores as of March 2017. In Statista - The
Statistics Portal. Retrieved January 27, 2018, from
https://www.statista.com/statistics/276623/number-of-apps-available-in-leading-app-stores/.
23. Flurry: Enter the Matrix: App Retention and Engagement
http://flurrymobile.tumblr.com/post/144245637325/appmatrixAndroid Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 23
24. Your Fate lies in the
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 24
25. App Reviews
Bin Lu, et al.: Why People Hate Your App – Making Sense of User Feedback in a Mobile App Store. Carnegie Mellon University, 2013. Data from 13 million user reviews, 171,439 apps
Claudia Iacob, Rachel Harrison: “Retrieving and Analysing Mobile Apps Feature Requests from Online Reviews”, Oxford Brookes University, 2013
Kahlid. H, et al.: “What Do Mobile App Users Complain About? A Study on Free iOS Apps”, Queen’s University, Kingston, 2014
Gunwoong Leea, T. S. Raghua: “Determinants of Mobile Apps' Success: Evidence from the App Store Market”, 2014
0
2 000 000
4 000 000
6 000 000
8 000 000
Downloads
Negative reviews
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten25
26. Reviews vs Downloads
Review count & rating correlate to downloads
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 26
Bin Lu, et al.: Why People Hate Your App – Making Sense of User Feedback in a Mobile App Store.
Carnegie Mellon University, 2013
Data from 13 million user reviews, 171,439 apps
Average rating: 3.9
(standard deviation: 1.48)
0
2 000 000
4 000 000
6 000 000
8 000 000
27. Review Analysis
▪ Analysis
▪ Most frequent complaints
▪ Functional errors
▪ Feature requests
▪ App crashes
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 27
Claudia Iacob, Rachel Harrison: “Retrieving and Analysing Mobile Apps Feature Requests from Online Reviews”, Oxford Brookes University, 2013
Kahlid. H, et al.: “What Do Mobile App Users Complain About? A Study on Free iOS Apps”, Queen’s University, Kingston, 2014
Gunwoong Leea, T. S. Raghua: “Determinants of Mobile Apps' Success: Evidence from the App Store Market”, 2014
28. Review Analysis
▪ Analysis
▪ Most negative impact
▪ Privacy and ethical issues
▪ Hidden app costs
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 28
Claudia Iacob, Rachel Harrison: “Retrieving and Analysing Mobile Apps Feature Requests from Online Reviews”, Oxford Brookes University, 2013
Kahlid. H, et al.: “What Do Mobile App Users Complain About? A Study on Free iOS Apps”, Queen’s University, Kingston, 2014
Gunwoong Leea, T. S. Raghua: “Determinants of Mobile Apps' Success: Evidence from the App Store Market”, 2014
30. Thousands of Mobile Devices in Use
http://opensignal.com/reports/2015/08/android-fragmentation/
http://stats.unity3d.com/mobile/device-ios.html
OpenSignal: 24,000 distinct Android
devices used their app in 2015
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 30
32. Monitoring Reviews
Bin Lu, et al.: Why People Hate Your App – Making Sense of User Feedback in a Mobile App Store.
Carnegie Mellon University, 2013
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 32
34. Emulator / Simulator
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 34
Emulator
Emulates real
hardware
+ more accurate
– slow
Android
Simulator
Simulates device
behavior
+ faster
– less accurate
iOS / Windows
35. Reliable?
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 35
0%of your users will run your app on an emulator
36. Automated UI Tests
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 36
How many tests can you run per hour / build / release?
37. Automated UI Tests
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 37
Number of builds
Cost
Automated tests
Manual tests
38. Own Devices
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 38
How many test devices do you have?
39. Visual Studio App Center
▪ Automated tests
▪ UI interaction
▪ Device features (GPS, etc)
▪ Performance
▪ 3,300+ devices
▪ Android & iOS
▪ http://appcenter.ms/signup
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 39
43. Android App Testing
▪ Local JUnit test (test)
▪ Minimize execution time
▪ No Android framework dependencies
▪ Instrumented test, runs on device (androidTest)
▪ Lets you control your running app
▪ Automate user interaction (UI tests)
▪ Overview: https://developer.android.com/studio/test/index.html
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 43
44. Exercise: Espresso Test Recorder
▪ Open HelloWorld or GreetingApp solution project
▪ Record UI interactions
▪ Run > Record Espresso Test
▪ Execute tests:
▪ Right-click MainActivityTest > Run
▪ Further steps
▪ Change app so that it fails the test
▪ Add EditText to app, test entering text
▪ Update TextView with user-entered text
▪ Manually extend test script to check if user-entered text appears
▪ https://developer.android.com/studio/test/espresso-test-recorder.html
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 44
45. Firebase Test Lab
▪ Real devices in Google data center
▪ https://firebase.google.com/docs/test-lab/
▪ Robo test
▪ Explores UI structure
▪ Automatically simulates user activities
▪ Optional: robo scripts for more control
▪ Scripted tests
▪ Using Espresso
▪ Reports
▪ Video, screenshots, device logs, performance, crash logs
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 45
Image credits: Google,
https://firebase.google.com/docs/test-lab/
46. Exercise: Run Tests in the Cloud
▪ Tools > Firebase > Test Lab >
Run Firebase Test Lab for Android
▪ Connect your app to Firebase
▪ Billing plan
▪ Spark = free: daily quota,
10 virtual tests / day,
5 physical tests / day
▪ Run test configuration
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 46
47. Exercise: Firebase Console
▪ Check test report: Firebase console
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 47
48. Exercise: Robo Test
▪ Run Robo test from Firebase Console
▪ Upload APK:
▪ <project>appbuildoutputsapkdebug
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 48
49. Developing & Maintaining Apps
is a Challenge!
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 49
50. App Purge
Apple:
- Purged 47,300 apps in October 2016
(14,000 apps / month purged on average)
- 2017: 180,000+ apps not compatible with iOS 11
(64 bit now required)
Sensor Tower: Worldwide iOS App Store App Removals Increased 238% in October
https://sensortower.com/blog/app-store-purge
Nearly 200,000 Current Apps Could Be Incompatible with iOS 11
https://sensortower.com/blog/ios-11-incompatible-apps
Dr. Windows: Bereinigung des Windows Store noch nicht abgeschlossen - nur noch ein Drittel aller Apps übrig
http://www.drwindows.de/content/11332-bereinigung-windows-store-noch-abgeschlossen-nur-noch.html
Google Android Developers Blog: How we fought bad apps and malicious developers in 2017
https://android-developers.googleblog.com/2018/01/how-we-fought-bad-apps-and-malicious.html
Microsoft:
- 2/3 of all apps purged between Oct – Nov 2016
(330k -> 125k)
… but we still have 3 million apps only for the iPhone.
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten
Google:
- 2017: took down 700,000 apps that violated Google Play policies
50
51. How to Survive.
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 51
52. There is Hope!
Tune: No, Americans do not install an average of zero apps per month
https://www.tune.com/blog/no-the-average-american-does-not-download-0-apps-each-month/
The true number ist most likely even higher: 2 – 3 app installs / month
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 52
53. APP DISTRIBUTION
Payments, Fees and Certificates
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 53
54. App Store Overview
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 54Source: https://en.wikipedia.org/wiki/List_of_mobile_app_distribution_platforms
Apps 2,800,000 2,200,000 669,000 600,000
Fee $25 (1x) $99 / year $0 (1x, student)
$19 (1x, individual)
$99 (1x, company)
$0
Cut per sale
(from net)
70% 56 – 71% (depends
on country)
70%
(85% for app
subscriptions)
70%
55. Google Play Store
▪ Prerequisites:
▪ Google Account
▪ Credit card ($25 fee)
▪ Sign-Up:
▪ Developer name
▪ Email Address
▪ Website
▪ Phone Number
▪ Instant activation
▪ Optional further steps
▪ Invite Co-Workers
▪ Set up merchant account for paid apps
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 55
56. Quality Guidelines
▪ Checklist
▪ Quality criteria & associated tests
▪ Work through tests, especially for 1st app
▪ https://developer.android.com/develop/quality-
guidelines/index.html
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 56
57. App Signing
▪ All APKs digitally signed
▪ Android Studio: Debug certificate
▪ Automatically generated:
C:Users<name>.androiddebug.keystore
▪ Not trusted for publishing to the Play Store
▪ Certificate valid for 365 days
▪ https://developer.android.com/studio/publish/app-signing.html
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 57
58. App Publishing
▪ App signing key
▪ Needed for updates!
▪ Google Play App Signing OR manual app signing
▪ https://support.google.com/googleplay/android-developer/answer/7384423
Android Development with Kotlin, Part 3 | 2018 | Andreas Jakl | FH St. Pölten 58