SlideShare a Scribd company logo
Core Concepts of Mobile Development
© Codename One 2017 all rights reserved
Core Concepts of Mobile Development
✦These are universal concepts & will serve you
whether you use Codename One or don’t
✦I will highlight the Codename One solution for
some of these as we go thru them
✦The goal of this presentation is to familiarize you
with what can/can’t be done on mobile devices
and why that’s the case
© Codename One 2017 all rights reserved
Density &
Resolution
© Codename One 2017 all rights reserved
Density vs. Resolution
✦Density: also known as DPI (Dots Per Inch) or PPI
(pixels or points per inch)
✦Density is confusing, unintuitive & might collide
with common sense
✦E.g. an iPhone 7+ has 1080x1920 pixel
resolution and a PPI of 401 for a 5 inch screen

An iPad 4 has 1536x2048 pixels with a PPI of
264 on a 9.7 inch screen
✦Smaller devices can have higher resolutions!
© Codename One 2017 all rights reserved
Density vs. Resolution
Density vs. Resolution
✦Differences in density can be extreme a second
generation iPad has 132 PPI where modern
phones have PPI that crosses the 600 mark!
✦Low resolution images on high PPI devices will
look either small or pixelated
✦High resolution images on low PPI devices will
look huge, overscaled (artifacts) and will consume
too much memory
© Codename One 2017 all rights reserved
Density vs. Resolution
✦The first solution is multi-images, all OS’s support
the ability to define different images for various
densities
✦We support multi-images directly in the designer
tool and CSS. This automatically scales the image
using a high quality desktop scaling algorithm so
the right sized images are available on the device
✦The second approach is vector graphics which
can take several forms
© Codename One 2017 all rights reserved
Vector Graphics
✦Fonts (text) is effectively vector graphics. We can
use that text as icons using icon fonts.
Codename One has builtin support for icon fonts
as well as the material design icon font
✦Vector files - the most popular format in this area
is SVG but it has spotty on device performance.
Android provides a tool to convert SVG to vector
code, we might offer something similar in the
future
© Codename One 2017 all rights reserved
Certificates &
Provisioning
© Codename One 2017 all rights reserved
Signing & Certificates
✦All mobile OS’s only accept signed content but
their philosophy on the matter differs
✦Apple provides a certificate indicating that you are
approved by them as a developer
✦Google & Microsoft let anyone sign the app. They
verify your identity in the store signup. The
signature is used to make sure someone else
can’t push updates to your app
© Codename One 2017 all rights reserved
Signing & Certificates
✦If you lose your Google certificate you won’t be
able to upload a new version of the app. This isn’t
something Google can fix easily as it is blocked
on the devices!
✦E.g. if you try to install an Android app on a device
where an app with the same package exists with
a different certificate this will fail!
✦This problem is irrelevant for iOS, you can revoke
and generate a new certificate without a problem
© Codename One 2017 all rights reserved
Signing & Certificates
✦iOS has two certificate types: Development &
Distribution
✦You use the development certificate only during
development and you can install an app built with the
development certificate
✦Distribution certificates only allow upload to the store,
you can’t install such an app on your phone
✦The app becomes valid after Apple signs it too (after
the verification process) and places it into iTunes
© Codename One 2017 all rights reserved
Provisioning (iOS)
✦iOS has two separate provisioning profiles to
match the two separate certificates
✦The provisioning profile includes data about the
certificate (so they are bound together) and
information about the app
✦The debug version includes the list of devices on
which the app can be installed
✦Both provisioning profiles include details about the
services used by the app e.g. iCloud, push etc.
© Codename One 2017 all rights reserved
Push Certificates (iOS)
✦Push notification allows us to send a message to
a device even when the app isn’t running
✦In order to communicate with the ipns push server
we need two separate certificates (production &
sandbox)
✦These are used at runtime from our server push
code and aren’t involved in the signing process
© Codename One 2017 all rights reserved
Sandbox &
Permissions
© Codename One 2017 all rights reserved
Application Sandbox
✦Apps installed on the device are “sandboxed” to a
specific area so they won’t harm the device or its
functionality
✦This means that some features require a
“permission” prompt and in some cases require
special flags in system files
✦The filesystem of mobile applications is restricted
so one application can’t access the files of
another application
© Codename One 2017 all rights reserved
Application Sandbox
✦Things that we would assume as intuitive such as
“file picker” or accessing the image folder don’t
work on devices!
✦Apps can communicate by requesting a URL or
using special API’s for inter-application
communication - those approaches are only
partially portable
© Codename One 2017 all rights reserved
Permission Systems
✦Apps need to request permission to use sensitive
capabilities e.g. Camera, Contacts etc.
✦Historically Android developers declared required
permissions & a user was asked about them on install.
Android 6 adopted an iOS like approach
✦iOS prompts the user for permission when accessing a
feature. Once the user makes a decision he can flip
the switch in the application setting page
© Codename One 2017 all rights reserved
Background
Processes
© Codename One 2017 all rights reserved
Background Processes
✦When iOS launched it didn’t have multi-tasking
✦Android allowed arbitrary code to run in the
background
✦iOS later added support for background
processes which don’t allow arbitrary code. An
app can declare a use case e.g.: track location,
download file, play music etc. then perform that
task alone in the background with heavy
restrictions!
© Codename One 2017 all rights reserved
Background Processes
✦Android 6 improved battery life considerably by
placing heavy restrictions on arbitrary background
code in a similar way to iOS
✦With Codename One we support many of the
various background mode use cases
© Codename One 2017 all rights reserved
What did we learn?
✦A better sense of some less intuitive aspects of
mobile development
✦Apps require a major shift in thinking when
compared to desktop or server development
✦Deployment is a challenge on iOS
✦Don’t lose the Android or Windows keys!
© Codename One 2017 all rights reserved
Thank You
© Codename One 2017 all rights reserved

More Related Content

Similar to Core Concepts of Mobile Development.pdf

Native v s hybrid
Native v s hybridNative v s hybrid
Native v s hybridKelly Ston
 
App development software
App development softwareApp development software
App development softwareNitish Garg
 
How do I - Working With Images - Transcript.pdf
How do I - Working With Images - Transcript.pdfHow do I - Working With Images - Transcript.pdf
How do I - Working With Images - Transcript.pdfShaiAlmog1
 
Mobile App Development Tools For Building Apps
Mobile App Development Tools For Building AppsMobile App Development Tools For Building Apps
Mobile App Development Tools For Building AppsXongoLab Technologies LLP
 
Speech Recognition as a User Interface
Speech Recognition as a User InterfaceSpeech Recognition as a User Interface
Speech Recognition as a User InterfaceJared Sheehan
 
Windows Mixed Reality Dev
Windows Mixed Reality DevWindows Mixed Reality Dev
Windows Mixed Reality DevHoloLite
 
Webinar by OpenXcell Technolabs: Impacts of iOS 7 on App Marketers and Develo...
Webinar by OpenXcell Technolabs: Impacts of iOS 7 on App Marketers and Develo...Webinar by OpenXcell Technolabs: Impacts of iOS 7 on App Marketers and Develo...
Webinar by OpenXcell Technolabs: Impacts of iOS 7 on App Marketers and Develo...Jayneel Patel
 
Here are the Most Useful Tools for Mobile App Development
Here are the Most Useful Tools for Mobile App DevelopmentHere are the Most Useful Tools for Mobile App Development
Here are the Most Useful Tools for Mobile App DevelopmentIndianAppDevelopers
 
Development mobile app cross device
Development mobile app cross deviceDevelopment mobile app cross device
Development mobile app cross devicePhuong Nguyen
 
Seminar on android app development
Seminar on android app developmentSeminar on android app development
Seminar on android app developmentAbhishekKumar4779
 
Appium Training-converted.pdf
Appium Training-converted.pdfAppium Training-converted.pdf
Appium Training-converted.pdfIdestrainings2
 
Multi channel advantage
Multi channel advantageMulti channel advantage
Multi channel advantageDipesh Mukerji
 
“Your Security, More Simple.” by utilizing FIDO Authentication
“Your Security, More Simple.” by utilizing FIDO Authentication“Your Security, More Simple.” by utilizing FIDO Authentication
“Your Security, More Simple.” by utilizing FIDO AuthenticationLINE Corporation
 
Types of mobile apps mobile app development
Types of mobile apps  mobile app developmentTypes of mobile apps  mobile app development
Types of mobile apps mobile app developmentWebwing Technologies
 
Deal with the dilemma of hybrid and native
Deal with the dilemma of hybrid and nativeDeal with the dilemma of hybrid and native
Deal with the dilemma of hybrid and nativeswamileo1
 

Similar to Core Concepts of Mobile Development.pdf (20)

Mobile development capability doc
Mobile development capability docMobile development capability doc
Mobile development capability doc
 
Mobile Development Capability
Mobile Development Capability Mobile Development Capability
Mobile Development Capability
 
Native v s hybrid
Native v s hybridNative v s hybrid
Native v s hybrid
 
App development software
App development softwareApp development software
App development software
 
How do I - Working With Images - Transcript.pdf
How do I - Working With Images - Transcript.pdfHow do I - Working With Images - Transcript.pdf
How do I - Working With Images - Transcript.pdf
 
Mobile App Development Tools For Building Apps
Mobile App Development Tools For Building AppsMobile App Development Tools For Building Apps
Mobile App Development Tools For Building Apps
 
Speech Recognition as a User Interface
Speech Recognition as a User InterfaceSpeech Recognition as a User Interface
Speech Recognition as a User Interface
 
Windows Mixed Reality Dev
Windows Mixed Reality DevWindows Mixed Reality Dev
Windows Mixed Reality Dev
 
Webinar by OpenXcell Technolabs: Impacts of iOS 7 on App Marketers and Develo...
Webinar by OpenXcell Technolabs: Impacts of iOS 7 on App Marketers and Develo...Webinar by OpenXcell Technolabs: Impacts of iOS 7 on App Marketers and Develo...
Webinar by OpenXcell Technolabs: Impacts of iOS 7 on App Marketers and Develo...
 
Native Android Development
Native Android DevelopmentNative Android Development
Native Android Development
 
Here are the Most Useful Tools for Mobile App Development
Here are the Most Useful Tools for Mobile App DevelopmentHere are the Most Useful Tools for Mobile App Development
Here are the Most Useful Tools for Mobile App Development
 
Development mobile app cross device
Development mobile app cross deviceDevelopment mobile app cross device
Development mobile app cross device
 
Seminar on android app development
Seminar on android app developmentSeminar on android app development
Seminar on android app development
 
Appium Training
Appium Training Appium Training
Appium Training
 
Appium Training-converted.pdf
Appium Training-converted.pdfAppium Training-converted.pdf
Appium Training-converted.pdf
 
Multi channel advantage
Multi channel advantageMulti channel advantage
Multi channel advantage
 
Mobile Development: Case Studies @ WhiteHedge
Mobile Development: Case Studies @ WhiteHedgeMobile Development: Case Studies @ WhiteHedge
Mobile Development: Case Studies @ WhiteHedge
 
“Your Security, More Simple.” by utilizing FIDO Authentication
“Your Security, More Simple.” by utilizing FIDO Authentication“Your Security, More Simple.” by utilizing FIDO Authentication
“Your Security, More Simple.” by utilizing FIDO Authentication
 
Types of mobile apps mobile app development
Types of mobile apps  mobile app developmentTypes of mobile apps  mobile app development
Types of mobile apps mobile app development
 
Deal with the dilemma of hybrid and native
Deal with the dilemma of hybrid and nativeDeal with the dilemma of hybrid and native
Deal with the dilemma of hybrid and native
 

More from ShaiAlmog1

The Duck Teaches Learn to debug from the masters. Local to production- kill ...
The Duck Teaches  Learn to debug from the masters. Local to production- kill ...The Duck Teaches  Learn to debug from the masters. Local to production- kill ...
The Duck Teaches Learn to debug from the masters. Local to production- kill ...ShaiAlmog1
 
create-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfcreate-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfShaiAlmog1
 
create-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfcreate-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfShaiAlmog1
 
create-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfcreate-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfShaiAlmog1
 
create-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfcreate-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfShaiAlmog1
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfShaiAlmog1
 
create-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfcreate-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfShaiAlmog1
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfShaiAlmog1
 
create-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfcreate-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfShaiAlmog1
 
create-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfcreate-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfShaiAlmog1
 
create-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfcreate-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfShaiAlmog1
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfShaiAlmog1
 
create-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfcreate-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfCreating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfCreating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfCreating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfCreating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfCreating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfCreating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfCreating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfShaiAlmog1
 

More from ShaiAlmog1 (20)

The Duck Teaches Learn to debug from the masters. Local to production- kill ...
The Duck Teaches  Learn to debug from the masters. Local to production- kill ...The Duck Teaches  Learn to debug from the masters. Local to production- kill ...
The Duck Teaches Learn to debug from the masters. Local to production- kill ...
 
create-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfcreate-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdf
 
create-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfcreate-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdf
 
create-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfcreate-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdf
 
create-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfcreate-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdf
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdf
 
create-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfcreate-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdf
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdf
 
create-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfcreate-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdf
 
create-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfcreate-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdf
 
create-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfcreate-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdf
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdf
 
create-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfcreate-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdf
 
Creating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfCreating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdf
 
Creating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfCreating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdf
 
Creating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfCreating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdf
 
Creating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfCreating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdf
 
Creating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfCreating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdf
 
Creating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfCreating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdf
 
Creating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfCreating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdf
 

Recently uploaded

"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...Sri Ambati
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsExpeed Software
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsVlad Stirbu
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1DianaGray10
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»QADay
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaRTTS
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Product School
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance
 

Recently uploaded (20)

"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 

Core Concepts of Mobile Development.pdf

  • 1. Core Concepts of Mobile Development © Codename One 2017 all rights reserved
  • 2. Core Concepts of Mobile Development ✦These are universal concepts & will serve you whether you use Codename One or don’t ✦I will highlight the Codename One solution for some of these as we go thru them ✦The goal of this presentation is to familiarize you with what can/can’t be done on mobile devices and why that’s the case © Codename One 2017 all rights reserved
  • 3. Density & Resolution © Codename One 2017 all rights reserved
  • 4. Density vs. Resolution ✦Density: also known as DPI (Dots Per Inch) or PPI (pixels or points per inch) ✦Density is confusing, unintuitive & might collide with common sense ✦E.g. an iPhone 7+ has 1080x1920 pixel resolution and a PPI of 401 for a 5 inch screen
 An iPad 4 has 1536x2048 pixels with a PPI of 264 on a 9.7 inch screen ✦Smaller devices can have higher resolutions! © Codename One 2017 all rights reserved
  • 6. Density vs. Resolution ✦Differences in density can be extreme a second generation iPad has 132 PPI where modern phones have PPI that crosses the 600 mark! ✦Low resolution images on high PPI devices will look either small or pixelated ✦High resolution images on low PPI devices will look huge, overscaled (artifacts) and will consume too much memory © Codename One 2017 all rights reserved
  • 7. Density vs. Resolution ✦The first solution is multi-images, all OS’s support the ability to define different images for various densities ✦We support multi-images directly in the designer tool and CSS. This automatically scales the image using a high quality desktop scaling algorithm so the right sized images are available on the device ✦The second approach is vector graphics which can take several forms © Codename One 2017 all rights reserved
  • 8. Vector Graphics ✦Fonts (text) is effectively vector graphics. We can use that text as icons using icon fonts. Codename One has builtin support for icon fonts as well as the material design icon font ✦Vector files - the most popular format in this area is SVG but it has spotty on device performance. Android provides a tool to convert SVG to vector code, we might offer something similar in the future © Codename One 2017 all rights reserved
  • 9. Certificates & Provisioning © Codename One 2017 all rights reserved
  • 10. Signing & Certificates ✦All mobile OS’s only accept signed content but their philosophy on the matter differs ✦Apple provides a certificate indicating that you are approved by them as a developer ✦Google & Microsoft let anyone sign the app. They verify your identity in the store signup. The signature is used to make sure someone else can’t push updates to your app © Codename One 2017 all rights reserved
  • 11. Signing & Certificates ✦If you lose your Google certificate you won’t be able to upload a new version of the app. This isn’t something Google can fix easily as it is blocked on the devices! ✦E.g. if you try to install an Android app on a device where an app with the same package exists with a different certificate this will fail! ✦This problem is irrelevant for iOS, you can revoke and generate a new certificate without a problem © Codename One 2017 all rights reserved
  • 12. Signing & Certificates ✦iOS has two certificate types: Development & Distribution ✦You use the development certificate only during development and you can install an app built with the development certificate ✦Distribution certificates only allow upload to the store, you can’t install such an app on your phone ✦The app becomes valid after Apple signs it too (after the verification process) and places it into iTunes © Codename One 2017 all rights reserved
  • 13. Provisioning (iOS) ✦iOS has two separate provisioning profiles to match the two separate certificates ✦The provisioning profile includes data about the certificate (so they are bound together) and information about the app ✦The debug version includes the list of devices on which the app can be installed ✦Both provisioning profiles include details about the services used by the app e.g. iCloud, push etc. © Codename One 2017 all rights reserved
  • 14. Push Certificates (iOS) ✦Push notification allows us to send a message to a device even when the app isn’t running ✦In order to communicate with the ipns push server we need two separate certificates (production & sandbox) ✦These are used at runtime from our server push code and aren’t involved in the signing process © Codename One 2017 all rights reserved
  • 15. Sandbox & Permissions © Codename One 2017 all rights reserved
  • 16. Application Sandbox ✦Apps installed on the device are “sandboxed” to a specific area so they won’t harm the device or its functionality ✦This means that some features require a “permission” prompt and in some cases require special flags in system files ✦The filesystem of mobile applications is restricted so one application can’t access the files of another application © Codename One 2017 all rights reserved
  • 17. Application Sandbox ✦Things that we would assume as intuitive such as “file picker” or accessing the image folder don’t work on devices! ✦Apps can communicate by requesting a URL or using special API’s for inter-application communication - those approaches are only partially portable © Codename One 2017 all rights reserved
  • 18. Permission Systems ✦Apps need to request permission to use sensitive capabilities e.g. Camera, Contacts etc. ✦Historically Android developers declared required permissions & a user was asked about them on install. Android 6 adopted an iOS like approach ✦iOS prompts the user for permission when accessing a feature. Once the user makes a decision he can flip the switch in the application setting page © Codename One 2017 all rights reserved
  • 19. Background Processes © Codename One 2017 all rights reserved
  • 20. Background Processes ✦When iOS launched it didn’t have multi-tasking ✦Android allowed arbitrary code to run in the background ✦iOS later added support for background processes which don’t allow arbitrary code. An app can declare a use case e.g.: track location, download file, play music etc. then perform that task alone in the background with heavy restrictions! © Codename One 2017 all rights reserved
  • 21. Background Processes ✦Android 6 improved battery life considerably by placing heavy restrictions on arbitrary background code in a similar way to iOS ✦With Codename One we support many of the various background mode use cases © Codename One 2017 all rights reserved
  • 22. What did we learn? ✦A better sense of some less intuitive aspects of mobile development ✦Apps require a major shift in thinking when compared to desktop or server development ✦Deployment is a challenge on iOS ✦Don’t lose the Android or Windows keys! © Codename One 2017 all rights reserved
  • 23. Thank You © Codename One 2017 all rights reserved