The presentation shows professional Android Development and Best Practices regarding API Development It presents several aspects of a professional Android Development like organizational setup as well as the technical environment like build infrastructure and API development. It also covers our best practices and lessons learned regarding software architecture for android applications and API development. This includes API compatibility, security and versioning.
2. About us ...
Hasan Hoşgel, @alosdev
Senior Developer
Mobile enthusiast,
Man of action
3. About us ...
Thomas Kummert,
@kummibaer
Developer
Pragmatic developer
4. Germany‘s leading
ImmobilienScout24
real-estate portal
550 employees,
170 in the IT
Seite | Titel der Präsentation | Autor der
4 Präsentation
5. Germany‘s leading
ImmobilienScout24
real-estate portal
550 employees,
160 in the IT
> 6 Million unique users
> 2 Billion PI
> 180 Million Expose views
~ 1.5 Million active listings
> 110,000 Vendors
... per month
Seite | Titel der Präsentation | Autor der
5 Präsentation
6. Germany‘s leading
ImmobilienScout24
real-estate portal
550 employees,
160 in the IT
> 6 Million unique users
2 datacenter
> 2 Billion PI
~100 physical
> 180 Million Expose views
~800 virtual
~ 1.5 Million active listings
... machines
> 110,000 Vendors
... per month
Seite | Titel der Präsentation | Autor der
6 Präsentation
7. 2010-08 (no team):
The Creators
1 x developer
2012-02 (2 teams):
7 x developer
2 x QA-engineer
2 x product manager
1 x designer
8. 2010-08 (no team):
The Creators
1 x developer
2012-02 (2 teams):
7 x developer
11 applications 2 x QA-engineer
1 Mobile site 2 x product manager
> 2.2 Mio Downloads 1 x designer
> 7.8 Mio Visits
> 20% mobile traffic
9. 2010-08 (no team):
The Creators
1 x developer
2012-02 (2 teams):
7 x developer
11 applications 2 x QA-engineer
1 Mobile site 2 x product manager
> 2.2 Mio Downloads 1 x designer
> 7.8 Mio Visits
Agile development
> 20% mobile traffic
Scrum/ Kanban
11. Native, hybrid or
webapp?
Depends on
application,
environment and
user needs
http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/
12. Native, hybrid or
webapp?
Depends on
application,
environment and
user needs
- User-interface
- Responsive design
http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/
13. Native, hybrid or
webapp?
Depends on
application,
environment and
user needs
- Hardware
- Device features - User-interface
- Security - Responsive design
http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/
14. Native, hybrid or
webapp?
Depends on
application,
environment and
user needs - External resources
- Performance
- Hardware
- Device features - User-interface
- Security - Responsive design
http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/
15. - Development
Native, hybrid or - Technologies
webapp? - Knowledge
Depends on
application,
environment and
user needs - External resources
- Performance
- Hardware
- Device features - User-interface
- Security - Responsive design
http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/
16. - Development
Native, hybrid or - Technologies
webapp? - Knowledge
Therepends no „the
De is on
application and
right“ needs
user solution to lfit rces
- Externa resou
every demand. rformance
- Pe
- Hardware
- Device features - User-interface
- Security - Responsive design
http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/
17. - Development
Native, hybrid or - Technologies
webapp? - Knowledge
Therepends no „the
De is on
application and
right“ needs
user Solution to lfit rces
- Externa resou
every demand. rformance
- Pe
- Hardware
- Device features - User-interface
- Security - Responsive design
http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/
18. Native, hybrid or
webapp?
Android & IOS will be supported
Two Mainstream applications
è native
Other applications can choose
Future:
Mobile website with responsive
Design & HTML 5
27. Architecture
example
Exposeview
expose
service
memory database network
http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/
28. Used Frameworks
http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/
29. Used Frameworks
Signpost
(OAuth client)
http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/
30. Used Frameworks
RoboGuice
Signpost
(dependency
(OAuth client) injection)
http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/
33. Backend
API
http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/
34. Backend
API
Best Cross-Platform
approach:
create an API
http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/
35. Backend
API
Best Cross-Platform Rest-API
approach: resource
create an API oriented
http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/
36. Backend
API
Best Cross-Platform Rest-API
approach: resource
create an API oriented
Json/
XML
http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/
37. Backend
API
Best Cross-Platform Rest-API
approach: resource
create an API oriented
Json/
„eat your own XML
dog food“
http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/
38. Backend
API
Best Cross-Platform Rest-API
approach: resource
create an API oriented
Don‘t create client Json/
„eat your own XML
dependent APIs
dog food“
http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/
39. Backend
API – Best Practices
http://www.flickr.com/photos/familymwr/4927926523/in/photostream/
40. Backend
API – Best Practices
versioning
http://www.flickr.com/photos/familymwr/4927926523/in/photostream/
41. Backend
API – Best Practices
downward
versioning compatible
http://www.flickr.com/photos/familymwr/4927926523/in/photostream/
42. Backend
API – Best Practices
downward
versioning compatible
OAuth
support
http://www.flickr.com/photos/familymwr/4927926523/in/photostream/
43. Backend
API – Best Practices
downward
versioning compatible
OAuth
support
communicate:
upward compatibility
http://www.flickr.com/photos/familymwr/4927926523/in/photostream/
44. Backend
API – Best Practices
downward
versioning compatible
different OAuth
views support
communicate:
upward compatibility
http://www.flickr.com/photos/familymwr/4927926523/in/photostream/
45. Backend
API – Best Practices
downward
versioning compatible addable
features
different OAuth
views support
communicate:
upward compatibility
http://www.flickr.com/photos/familymwr/4927926523/in/photostream/
46. Backend
API – Best Practices
downward
versioning compatible addable
features
different OAuth help caching:
views support Modified-Since- &
Etag-Header
communicate:
upward compatibility
http://www.flickr.com/photos/familymwr/4927926523/in/photostream/
47. offer
Backend playground
API – Best Practices
downward
versioning compatible addable
features
different OAuth help caching:
views support Modified-Since- &
Etag-Header
communicate:
upward compatibility
http://www.flickr.com/photos/familymwr/4927926523/in/photostream/
55. Android
Best Practices
Don‘t recycle images
>Gingerbread
test test
test è process‘ crash
on all emulators
available devices
56. Android
Best Practices
Don‘t recycle images
>Gingerbread
test test
test è process‘ crash
on all emulators
on all emulators
available devices
Remove dialogues in
onSavedInstanceState
57. Android
Best Practices
Don‘t recycle images
>Gingerbread
test test
test è process‘ crash
on all emulators
on all emulators
available devices Don‘t use
Remove dialogues in message.what=1006 on
onSavedInstanceState LG Smartphones
è ClassCastException
58. Android
Best Practices
Don‘t recycle images
>Gingerbread
test test
test è process‘ crash
on all emulators
on all emulators
available devices Don‘t use
Remove dialogues in message.what=1006 on
onSavedInstanceState LG Smartphones
è ClassCastException
Json streamer vs.
parser
59. Android
Best Practices
Don‘t recycle images
>Gingerbread
test test
test è process‘ crash
on all emulators
on all emulators
available devices Don‘t use
Remove dialogues in message.what=1006 on
onSavedInstanceState LG Smartphones
è ClassCastException
Json streamer vs.
parser AsyncTask vs. Handler
60. Android
Best Practices
offer StreetView, if possible:
1. create WebView
2. add JavascriptInterface
3. load data with base URL (maps.js &
StreetViewService)
4. Start Intent for StreetView, if
panorama exists!
http://stackoverflow.com/a/4747663/495712
61. Android
Best Practices
offer StreetView, if possible: Attention:
1. create WebView A lot of best practices
2. add JavascriptInterface doesn‘t work on
3. load data with base URL (maps.js &Honeycomb & higher
StreetViewService)
4. Start Intent for StreetView, if
panorama exists!
http://stackoverflow.com/a/4747663/495712
63. Forecast
using Git
http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/
64. Forecast
using Git
Widget
http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/
65. Forecast
using Git
extend
Widget IS24-API
SDK
http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/
66. Forecast
using Git
using new extend
Widget Google IS24-API
APIs SDK
http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/
67. Forecast
tablet using Git
layout
using new extend
Widget Google IS24-API
APIs SDK
http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/
68. Forecast
tablet using Git
Google TV
layout
layout
using new extend
Widget Google IS24-API
APIs SDK
http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/
69. Forecast
code
coverage
tablet using Git
Google TV
layout
layout
using new extend
Widget Google IS24-API
APIs SDK
http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/
70. Thanks for your
attention! Questions?
http://www.flickr.com/photos/peterjlambert/97671748/sizes/o/in/photostream/