SlideShare a Scribd company logo
1
Porting to Nokia X
Maciej Matyjas – Mobile Technology Lead - @matyjas
2
Porting to Nokia X
• About Me
• About Nokia X
• Secret Devices and NDAs
• Firmware Updates
• Go AOSP
• Here™ Maps for Google Maps v1
• Here™ Maps for Google Maps v2
• Analytics
• Publishing & Proguard
• Wrap up
3
About Me
• Does not work for Nokia©
• Pisces
• Shipped Meego apps
• Enjoys long walks on the beach
4
About Nokia X
• AOSP
• Plus
• Single back button
• Nokia Here Maps
• Nokia In-App Payments
• Nokia Notifications
• Fastlane UI
5
About Nokia X‟s Fastlane UI
6
About Nokia X
• No GMS
• Targets users between Asha and Lumia ranges
• Combines aspects of
• Asha
• Meego
• WinPhone
• Android
7
Secret Devices and NDAs
• Need to know basis
• Identifying allies
• Chinese walls
• Stealthy intelligence gathering
• Cloak and dagger with the Analytics team
• Is our Build Manager a double agent?
8
Firmware Updates
• Constantly updating firmware
• Reconnect to network, enable location, etc
• Always a little worried of brickwareing
• Never sure if it was something I did or the
firmware
• “Blame it on the firmware, cos the firmware don‟t
care”
9
Port that App
10
Go AOSP
• Make sure your „Project Build Target‟ is AOSP
• Ship?
11
Here Maps for Google Maps v1
• Manifest mods
• Add “com.google.android.maps.sdk.jar” from
Nokia
• Make sure its exported with your .apk file
• Ship?
12
Here Maps for Google Maps v2
• Not moving as quickly as Google‟s releases
• Same manifest mods
• Replace Google Play Services library project
with reference_v2_lib
• Add isMapsV2EquivalentAvailable() to our
GooglePlayServicesChecker.java
• Few cases where initialization order differs to
Google‟s Maps v2
13
Here Maps for Google Maps v2
public void add(GoogleMap map,
MarkerDataHolder holder) {
…
// mm:: visible region might be null if this is
// called before map is visible
if ((map.getProjection().getVisibleRegion()
!= null)
&& (map.getProjection().getVisibleRegion()
.latLngBounds.contains(position))) {
markers.add(
map.addMarker(holder.getMarkerOpts()));
}
}
14
Here Maps for Google Maps v2
// mm:: particularly insidious since on bg
if (map.getProjection().getVisibleRegion()
!= null) {
LatLngBounds bounds =
map.getProjection()
.getVisibleRegion()
.latLngBounds;
…
}
15
Here Maps for Google Maps v2
@Override
public View getInfoWindow(Marker marker) {
…
// mm:: this works around an issue
// rendering InfoWindows on Here maps
mContents.setLayoutParams(
new ViewGroup.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
return mContents;
}
16
Here Maps for Google Maps v2
• That is it!
• Lets demo
17
Here Maps for Google Maps v2
18
Here Maps for Google Maps v2
19
Here Maps for Google Maps v2
20
Analytics
1. Debrei Tamás: open config.xml in hotels-logic-
library
2. Debrei Tamás: <confvalue key =
"APP_STORE_NAME" value = "GOOGLE"/>
3. Debrei Tamás: replace GOOGLE with
NONBRAND
21
Publishing & Proguard
• A little tricky due to maps wrappers
• Couldn‟t exactly Google for „Nokia secret
Android platform maps wrapper Proguard setup‟
• Or ask on Stack Overflow
• But Nokia support was terrific
22
Publishing & Proguard
# here maps
-keep class com.nokia.** { *; }
-keep interface com.nokia.** { *; }
-dontwarn com.nokia.**
-keep class com.here.** { *; }
-keep interface com.here.** { *; }
-dontwarn com.here.**
# u might also need to tell Proguard to leave the wrapper API intact w/:
-keep class com.google.android.gms.maps.** { *; }
-keep interface com.google.android.gms.maps.** { *; }
-dontwarn com.google.android.gms.maps.**
# here maps v1
-keep public class com.google.android.maps.Projection
-dontwarn com.google.android.maps.PixelConverter
-dontwarn com.google.android.maps.MapView
-keep class com.google.**
-dontwarn com.google.**
23
Wrap Up
• Easiest is if you have no Google dependencies
• Easy if you just use Google Maps v1
• Maps v2 makes it a bit harder
• Probably harder still the tighter you are tied to
Google
• Consider a generic maps solution
24
Questions?
Maciej Matyjas – Mobile Technology Lead - @matyjas
25

More Related Content

PDF
Hotels.com infographic on mobile bookings
PPTX
Brighton seo James owen - Hotels.com
PPTX
Twitter an international strategy
PDF
Hotels.com' The Hotel Price Index™ - Sept. 2014
PDF
Mobile Culture - Tripadvisor
PDF
Creating the Perfect User Experience Designer
PPT
Welding 2[EDocFind.com]
PPTX
Expedia hotel view: overview
Hotels.com infographic on mobile bookings
Brighton seo James owen - Hotels.com
Twitter an international strategy
Hotels.com' The Hotel Price Index™ - Sept. 2014
Mobile Culture - Tripadvisor
Creating the Perfect User Experience Designer
Welding 2[EDocFind.com]
Expedia hotel view: overview

Viewers also liked (12)

PPTX
Designing for Immediacy
PPTX
Online Travel Landscape by Mozio
PDF
How we optimise content on Hotels.com apps
PDF
2016 Travel Predictions by Hotels.com
PDF
Expedia at London Technology Week 2015
PPTX
Expedia presentation
PDF
Value Chain Analysis of Hotels.com and Booking.com
PDF
Booking.com: Best in Class Case Study
PDF
Expedia company presentation
PPT
Expedia case study
PDF
OTA Models
PDF
The Power of Online Travel Agencies (OTA): Results of an Online Survey on Hot...
Designing for Immediacy
Online Travel Landscape by Mozio
How we optimise content on Hotels.com apps
2016 Travel Predictions by Hotels.com
Expedia at London Technology Week 2015
Expedia presentation
Value Chain Analysis of Hotels.com and Booking.com
Booking.com: Best in Class Case Study
Expedia company presentation
Expedia case study
OTA Models
The Power of Online Travel Agencies (OTA): Results of an Online Survey on Hot...
Ad

Similar to Porting Hotels.com to Nokia X (20)

PDF
HERE Maps for the Nokia X platform
PDF
Intro to apps with maps for series 40
PDF
March 2014 Meetup - Nokia X Tech Session
DOCX
Location Based Services Android Google Maps API with Examples
PDF
LUMIA APP LAB #16: HERE APPLICATION LAUNCHERS
PPTX
Android development session 6 - Google Maps v2
PDF
Advanced Maps on Apps for Series 40
PPTX
12. Android Basic Google Map
PPTX
Location and API Maps in Windows Phone 8
PPTX
Maps in android
PPTX
Android MapView and MapActivity
PPTX
MAD Unit 6.pptx
PPTX
Google Location Services
PPTX
Android mobile application for gps
PDF
Mobile Maps On Labs
PDF
Nokia X same code base new user base: Introduction to Nokia X software platfo...
PDF
Intro to Nokia X software platform and tools
PDF
Membuat aplikasi nokia x untuk pemula
HERE Maps for the Nokia X platform
Intro to apps with maps for series 40
March 2014 Meetup - Nokia X Tech Session
Location Based Services Android Google Maps API with Examples
LUMIA APP LAB #16: HERE APPLICATION LAUNCHERS
Android development session 6 - Google Maps v2
Advanced Maps on Apps for Series 40
12. Android Basic Google Map
Location and API Maps in Windows Phone 8
Maps in android
Android MapView and MapActivity
MAD Unit 6.pptx
Google Location Services
Android mobile application for gps
Mobile Maps On Labs
Nokia X same code base new user base: Introduction to Nokia X software platfo...
Intro to Nokia X software platform and tools
Membuat aplikasi nokia x untuk pemula
Ad

Recently uploaded (20)

PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Empathic Computing: Creating Shared Understanding
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Electronic commerce courselecture one. Pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
Understanding_Digital_Forensics_Presentation.pptx
Encapsulation_ Review paper, used for researhc scholars
Review of recent advances in non-invasive hemoglobin estimation
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Programs and apps: productivity, graphics, security and other tools
Advanced methodologies resolving dimensionality complications for autism neur...
20250228 LYD VKU AI Blended-Learning.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
MIND Revenue Release Quarter 2 2025 Press Release
MYSQL Presentation for SQL database connectivity
Network Security Unit 5.pdf for BCA BBA.
Empathic Computing: Creating Shared Understanding
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Electronic commerce courselecture one. Pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm

Porting Hotels.com to Nokia X

  • 1. 1 Porting to Nokia X Maciej Matyjas – Mobile Technology Lead - @matyjas
  • 2. 2 Porting to Nokia X • About Me • About Nokia X • Secret Devices and NDAs • Firmware Updates • Go AOSP • Here™ Maps for Google Maps v1 • Here™ Maps for Google Maps v2 • Analytics • Publishing & Proguard • Wrap up
  • 3. 3 About Me • Does not work for Nokia© • Pisces • Shipped Meego apps • Enjoys long walks on the beach
  • 4. 4 About Nokia X • AOSP • Plus • Single back button • Nokia Here Maps • Nokia In-App Payments • Nokia Notifications • Fastlane UI
  • 5. 5 About Nokia X‟s Fastlane UI
  • 6. 6 About Nokia X • No GMS • Targets users between Asha and Lumia ranges • Combines aspects of • Asha • Meego • WinPhone • Android
  • 7. 7 Secret Devices and NDAs • Need to know basis • Identifying allies • Chinese walls • Stealthy intelligence gathering • Cloak and dagger with the Analytics team • Is our Build Manager a double agent?
  • 8. 8 Firmware Updates • Constantly updating firmware • Reconnect to network, enable location, etc • Always a little worried of brickwareing • Never sure if it was something I did or the firmware • “Blame it on the firmware, cos the firmware don‟t care”
  • 10. 10 Go AOSP • Make sure your „Project Build Target‟ is AOSP • Ship?
  • 11. 11 Here Maps for Google Maps v1 • Manifest mods • Add “com.google.android.maps.sdk.jar” from Nokia • Make sure its exported with your .apk file • Ship?
  • 12. 12 Here Maps for Google Maps v2 • Not moving as quickly as Google‟s releases • Same manifest mods • Replace Google Play Services library project with reference_v2_lib • Add isMapsV2EquivalentAvailable() to our GooglePlayServicesChecker.java • Few cases where initialization order differs to Google‟s Maps v2
  • 13. 13 Here Maps for Google Maps v2 public void add(GoogleMap map, MarkerDataHolder holder) { … // mm:: visible region might be null if this is // called before map is visible if ((map.getProjection().getVisibleRegion() != null) && (map.getProjection().getVisibleRegion() .latLngBounds.contains(position))) { markers.add( map.addMarker(holder.getMarkerOpts())); } }
  • 14. 14 Here Maps for Google Maps v2 // mm:: particularly insidious since on bg if (map.getProjection().getVisibleRegion() != null) { LatLngBounds bounds = map.getProjection() .getVisibleRegion() .latLngBounds; … }
  • 15. 15 Here Maps for Google Maps v2 @Override public View getInfoWindow(Marker marker) { … // mm:: this works around an issue // rendering InfoWindows on Here maps mContents.setLayoutParams( new ViewGroup.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); return mContents; }
  • 16. 16 Here Maps for Google Maps v2 • That is it! • Lets demo
  • 17. 17 Here Maps for Google Maps v2
  • 18. 18 Here Maps for Google Maps v2
  • 19. 19 Here Maps for Google Maps v2
  • 20. 20 Analytics 1. Debrei Tamás: open config.xml in hotels-logic- library 2. Debrei Tamás: <confvalue key = "APP_STORE_NAME" value = "GOOGLE"/> 3. Debrei Tamás: replace GOOGLE with NONBRAND
  • 21. 21 Publishing & Proguard • A little tricky due to maps wrappers • Couldn‟t exactly Google for „Nokia secret Android platform maps wrapper Proguard setup‟ • Or ask on Stack Overflow • But Nokia support was terrific
  • 22. 22 Publishing & Proguard # here maps -keep class com.nokia.** { *; } -keep interface com.nokia.** { *; } -dontwarn com.nokia.** -keep class com.here.** { *; } -keep interface com.here.** { *; } -dontwarn com.here.** # u might also need to tell Proguard to leave the wrapper API intact w/: -keep class com.google.android.gms.maps.** { *; } -keep interface com.google.android.gms.maps.** { *; } -dontwarn com.google.android.gms.maps.** # here maps v1 -keep public class com.google.android.maps.Projection -dontwarn com.google.android.maps.PixelConverter -dontwarn com.google.android.maps.MapView -keep class com.google.** -dontwarn com.google.**
  • 23. 23 Wrap Up • Easiest is if you have no Google dependencies • Easy if you just use Google Maps v1 • Maps v2 makes it a bit harder • Probably harder still the tighter you are tied to Google • Consider a generic maps solution
  • 24. 24 Questions? Maciej Matyjas – Mobile Technology Lead - @matyjas
  • 25. 25