Jump to content

What are the difference in making apps for all the OS's

Hi all,

First off i am not a programmer of any kind, (i dont count the programming i did on my Commador 64 as pprogramming skills)

After discussing the topic with a co-worker i continued to wonder what are the differences in making apps for apple, android and windows phone's

 

If you make something for apple can the app be ported directly to another phone or do you have to start from scratch ?

Can anyone shed some light on this for me.. 

 

Best regards

Mac

Link to comment
Share on other sites

Link to post
Share on other sites

Moved to Programming.

"It pays to keep an open mind, but not so open your brain falls out." - Carl Sagan.

"I can explain it to you, but I can't understand it for you" - Edward I. Koch

Link to comment
Share on other sites

Link to post
Share on other sites

Im not sure about apple but while making games in Unity3D ( for Android ), Unity3D generated APK file for android which u can directly install in your mobile device and check whatever you want you.

Ryzen 5 3600 | MSI B450 Tomahawk Max | Corsair Vengeance lpx 32gb 3600mhz | EVGA GeForce RTX 3080 FTW3 ULTRA GAMING | XPG Core Reactor 850w

Link to comment
Share on other sites

Link to post
Share on other sites

the API - most of the time stuff you write in the code calls for OS functions and tells kernel to do something like for example generate a random number or get system date and time

different OS'es will have different interfaces to do the same thing as well as have entirely different implementations or additional functions or maybe missing functions when you compare between OS'es

 

generally you have frameworks and IDEs that you program in, they make it easier to port across platforms so you don't have to start from scratch although you might require some minor refinements.

You would also have to possibly redesign the GUI since what looks good and works very well on an Android phone doesn't fit well with a Windows Phone user, there are also guidelines and rules you must adhere if you intend to release the software through it's intended Marketplace - Google Play, iStore, Windows Store.

Also with the recent Xamarin acquisition by Microsoft and going free will make it easier to develop cross-platform applications on mobile devices

CPU: Intel i7 5820K @ 4.20 GHz | MotherboardMSI X99S SLI PLUS | RAM: Corsair LPX 16GB DDR4 @ 2666MHz | GPU: Sapphire R9 Fury (x2 CrossFire)
Storage: Samsung 950Pro 512GB // OCZ Vector150 240GB // Seagate 1TB | PSU: Seasonic 1050 Snow Silent | Case: NZXT H440 | Cooling: Nepton 240M
FireStrike // Extreme // Ultra // 8K // 16K

 

Link to comment
Share on other sites

Link to post
Share on other sites

Please note that I do mostly Web Development, which is a lot different than programming apps, but I'll explain how I understand it while you wait for a real programmer.

 

Application Coding & Development

Apps are developed using code libraries and frameworks, such as XCode\Swift on Apple, and C++\C# on Windows. That's not to say the languages are mutually exclusive, because they're not. Xcode is actually written in C++\Objective C, and many programming languages borrow syntax from each other, but that's way out of the scope for this answer.

 

When your app is ready for deployment, it needs to be compiled into machine code for runtime. You do this using a code compiler, such as Microsoft's Visual Studio or Apple's ... developer tools? No idea what they call it these days. Compiling your code turns it into machine language that can be interpreted by the operating system it was compiled on.

 

So if I compile a 32bit C++ App on Windows 7, it should work on Vista, Windows 8, and Windows 10, probably even XP, assuming I'm not using a library too futuristic. (It's not that simple, but for sake of answering your question, let's leave it at that.) Same with how compiling an app using XCode should allow it to run on any modern Mac OSX beyond 10.6 or whenever they introduced the App Store on desktop\laptop.

 

Porting Applications for other Operating Systems

To "port" an app from one platform to another can be very simple or very complex, depending on how many external libraries and resources your App is referencing. For instance, if you make specific use of DirectX 12 to render some graphics on your native Windows C++ App, you're going to need to rewrite that portion of your code to be compatible with XCode\Swift on OSX\iOS.

 

We see ported Apps all the time by way of video games - many games are developed on consoles first, then ported over to Mac\PC after, often resulting in horrific results and left over code. Final Fantasy (various), Devil May Cry 3, Fallout 3, Fable Anniversary, Bioshock, Dark Souls (all), and most notably that one Batman Game where Warner Bros threw their hands in the air like they just didn't care were all poorly ported games. I could go on, but that's not answering your question.

 

Point is, if you port things correctly, you'll be able to reuse much of your code, only changing the necessary sections. @DXMember sums it up good too:

Just now, DXMember said:

the API - most of the time stuff you write in the code calls for OS functions and tells kernel to do something like for example generate a random number or get system date and time

different OS'es will have different interfaces to do the same thing as well as have entirely different implementations or additional functions or maybe missing functions when you compare between OS'es

 

Write Your [Web] App Once for Multiple Devices

One way to cross write Apps is to use a framework that supports multiple OS's out of the box - for instance as @Waqas409 noted, Unity3D's framework supports writing your App once, and being able to scale it to multiple platforms all from within their development kit. Java SDK does this too, by using the Java RunTime on the client device to recompile and interpret the code at RunTime, instead of you pre-compiling it beforehand for a specific OS. This is great because it allows your App to run on multiple platforms using the clients device to interpret your App during runtime. Minecraft is a great example of this - ONE executable JAR (Java) file can run on OSX, Windows, and Linux.

 

And that's where I stop. Hopefully I've answered your coding question as best I can, and welcome any real programmers to correct me where needed. Just tried to simplify it a bit.

Desktop: KiRaShi-Intel-2022 (i5-12600K, RTX2060) Mobile: OnePlus 5T | Koodo - 75GB Data + Data Rollover for $45/month
Laptop: Dell XPS 15 9560 (the real 15" MacBook Pro that Apple didn't make) Tablet: iPad Mini 5 | Lenovo IdeaPad Duet 10.1
Camera: Canon M6 Mark II | Canon Rebel T1i (500D) | Canon SX280 | Panasonic TS20D Music: Spotify Premium (CIRCA '08)

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×