18
January 2016 Native to Native mobile code conversion By Kamal YOUBI CEO & CTO of MyAppConverter.com

MyAppconverter platform mappings

Embed Size (px)

Citation preview

January 2016

Native to Native mobile code conversion

By Kamal YOUBICEO & CTO of MyAppConverter.com

Summary• WhatisMyAppConverter• TheCoreTransformationEngine• SemanticDrivenTransformations• AsDevelopers,whywouldyoucare?• UsingMyAppConverter Conversionservice• Ios ApplicationsLifecycle• GeneratedAndroidLifecycle• Thenativestructureofthemobileapplications:IOS• Thenativestructureofthemobileapplications:Android• Mappingsmethodsignatures• MyAppConverter languageSyntaxesMappings• MyAppConverterMappingPlatformdifferences

What is MyAppConverter?

No SDK to download No Runtime

All platforms Peace of Mind

Instantly & Automatically Native Code Conversion(Online or via IDE plugin)

Your converted code is native with no embedded runtime for

maximum performance

Currently supporting iOS to Android & will be

extended to other platforms

We don't store nor share anyof your data and code

iOS project code

Android project code

Models(Android)

Mapping

Parsing

Transformation

AutomaticCodeGeneration

The Core Transformation Engine

Models(iOS)

Metamodels(iOS)

Metamodels(Android)

Technology

Architecture

Business

Semantic

LevelofAbstraction

SourceApplication TargetApplication

• MappingByintent• Transformationasaservice• Nativetonative• Readableanddocumentedcode• NoembeddedRuntime• Multi-platformcoverage• NoEditorDependency

• Lowscalability• NouseableCode

• Embedded Runtime

• StrongEditorDependency

if(

AA

==

AA

)

then

{log(

test

“) if

(AA

==

AA

)

then

{log(

test

“)}

}

if(

AA

==

AA

)

then

{log(

test

“) if

(AA

==

AA

)

then

{log(

test

“)}

}

Semantic DrivenTransformation

As Developers, why would you care?• Total freedom to develop on your favourite platform without limiting

yourself to other platforms

• Your converted code is fully documented & readable

• Being platform and technology agnostic, we guarantee the scalability of your code

• Enabling open source mapping will allow developers to benefit from all the technologies and market innovation across all platforms

• You will be part of an active, vibrant and global community of developers across borders and technologies

• You want to create mobile apps that can be available to anyone, anywhere no matter what the smartphone is and with the best UX

UsingMyAppConverter Conversionservice

Ios ApplicationsLifecycleAniOSapplicationgoesthrough asetofstatesasitruns.Asanappmovesthrough thestatesofitslifecycle,thestateoftheappisdefinedbyitslevelofactivitysuchasNotRunning, ActiveorSuspended.

GeneratedAndroidLifecycleThegeneratedandroidapplicationiseventdrivenandgoesthrowasetofthefollowing setofevents

Thenativestructureofthemobileapplications:IOS

• TheIos applicationstructurefollowamodelviewControllerpattern.

Thenativestructureofthemobileapplications:IOS

• TheUIApplicationMain functionintheprojectsetsupseveralkeyobjectsandstartstheapprunning.

• AttheheartofeveryiOSappistheUIApplication (AppDelegate)object,whosejobistofacilitatetheinteractionsbetweenthesystemandotherobjects intheapp.

• TheAppDelegate startthe initialviewcontrollerandloaditsUIelementsfromthemain.storyboard ortheequivalent.xib file.

• UsingMyAppConversion servicegetsyouanandroidstudioprojectthathaveanalmostequivalentstructure.

Thenativestructureofthemobileapplications:Android

• TheresultedandroidappprocessstartbyinstantiatingtheApplicationobject,andthenstarttheLauncherActivity.

• TheLauncherActivity usestheApplicationinstancetostarttheinitialviewcontroller,andloaditsviewandfinallyaddittotheLauncherActivity view

Mappingsmethodsignatures• ThegeneratedjavamethodnametheconcatenationofiOS

methodnameandthealiases• Thefirstletterofeachaliasiscapitalized.• ThetypesoftheparametersiniOSareconvertedtotheir

mappedequivalent.

MyAppConverter languageSyntaxesMappings

• Classes• Categories• Enums• Structs• Pointers• Memorymanagement• Blocks

• Protocols• Primitivetypes• Datastructures• Casting• Typedef• Macros

WhenconvertingobjectivectojavaMyAppConverter takescareofallthefollowingaspectsofthelanguage.TheMapping knowledgebaseprovideanimplementation foreachelementofthefollowing inthetargetplatform

MyAppConverter MappingPlatformdifferences

• Density-independentpixels(dp)anddesigninvectorat1x– OnAndroid,thekeyunitofmeasureisthedensity-independentpixel

–WhenconvertingfromIosMyAppConvertertransformspointsoniOSandCSSpixelstoDPs.

– MeasuringandsizingthingsinDPsensuresyourdesignshaveaconsistentphysicalsizeacrossdevicesofvaryingdensity.

MyAppConverter MappingPlatformdifferences

• ThesystemBackbuttonAndroid phoneshaveabackbutton, whichcanbeusedtoreturn topreviousscreensintheapp.

iPhones don’t have this button, this is usually done by a “back” chevron in the top left of the screen, MyAppConverterConvert itto a back button and mapps the android back button to the same event

MyAppConverter MappingPlatformdifferences

• Bottomtabs– OniOS,it’scommontouseabottomtabbartoswitchbetweenviewsinthe

app.Android’s platformconventionistodisplaytabsforviewcontrolatthetopofthescreeninstead.Inaddition, Androidappsmayusebottombarstodisplayactions.

• Gestures– Offering touchgesturestooperateyourappisagreatwaytomakethe

experiencefast,fluidanddelightful. Youshould alwaysbemindful ofuserexpectationsforgesture-basedinteractiononaplatform.OnAndroid, mostofthecommongestureshaveverystandardizedbehaviors,souserswillexpectyourapptosupport those.There’sanentiresectioninthematerialdesignguidelines coveringgestures,butit’smostimportant togetacoupleofthekeygesturesright.

MyAppConverter MappingPlatformdifferences

• Bottomtabs– OniOS,it’scommontouseabottomtabbartoswitchbetweenviewsinthe

app.Android’s platformconventionistodisplaytabsforviewcontrolatthetopofthescreeninstead.Inaddition, Androidappsmayusebottombarstodisplayactions.

• Gestures– Offering touchgesturestooperateyourappisagreatwaytomakethe

experiencefast,fluidanddelightful. Youshould alwaysbemindful ofuserexpectationsforgesture-basedinteractiononaplatform.OnAndroid, mostofthecommongestureshaveverystandardizedbehaviors,souserswillexpectyourapptosupport those.There’sanentiresectioninthematerialdesignguidelines coveringgestures,butit’smostimportant togetacoupleofthekeygesturesright.