How to develop an App for multiple mobile-OSys? - General Questions and Answers

Hey there folks,
after reading these forums for quite a while and having several smartphones during the last years, I reached the point where I want to start creating my own apps. I tried to google around a bit and found some interesting tutorials on how to start creating apps. I also found several SDKs for different operating systems. But exactly that is the point leading to my question.
Before starting to code: is it possible to choose a platform from where my app can be delivered to each winmo, iphone, blackberry or android?
Or is that just plain impossible? I mean, those are all touch based devices Should'nt be that much of a difference? Originally I wanted to start developing an iphone app, but that would leave out all the android users and so on. I don't want to rewirte everything from scratch for an android device after having finished the iphone variant. And that did not even consider the advent of windows 7.
So, is there any way of coding for all the operating systems, keeping the effort of switching between operating systems low?
greetings and thanks in advance for your help,
your unexperienced coder-in-spe,
joker

While all four of the devices mentioned all use ARM processors of various flavours to do the work, they are four completely different operating systems, each with their own IDE and programming models.
Even considering Windows Mobile, you have to decide whether you are programming for a SmartPhone/Classic or a Pocket PC/Professional device. In this case it is possible to write code that will run on both WM platforms, but you will have to make that decision at design time, before you even think of writing a single line of code. Your application will then have to act accordingly, depending on the machine on which it runs.

java apps for symbian often works ok on wm using a midlet manager
not sure about android and blackbarry but being java not too much code would be required to port it I suppose
mind you java on wm work pretty poorly
and iphone got rules that you can only make apps using objective-C/c/c++ and their SDK
which is only available if you own a mac computer

Thank you for your answers. Looks like starting to code is not that simple as expected. So I will try developing for iPhone only :/

Related

Advice on a new hobbyist phone?

Hello XDA-dev community
For the past couple of months i've been thinking about getting a Pocket PC for a new phone instead of a Symbian Nokia [ah my old 6630, may she rest in pieces...]. Anywho, I think i've decided on the HTC Touch Pro / Raphael. At ~AU$600 it's the highest I was trying not to pay (i'm not rich), however it seems to be a pretty powerful and full featured device.
I do have a few questions I hope some of the kind experts/veterans here might be able to answer for me though
1) I written a few things in Java and PHP and other even-more-basic languages, but am interested in learning a new language with hopes to create software for both Windows PC and Windows Mobile. What choices do we as end-users have here? .NET is an obvious one [I own a copy of Visual Studio 2008 Pro], but are there any other languages of note?
2) From the Raphael specs on the Wiki here, it lists it as an ARMv6 architecture-based processor. This comes from the ARM11 family, which is the successor (I think) to the XScale family (ARMv5TE). Are these ARMv6 processors backwards compatible with 'XScale accelerated' binary builds of software? I.E., a PPC application has two versions for download/purchase - a 'Generic ARM Release' and an 'XScale optimized release' - would the Raphael ARMv6-based device be compatible with these XScale-optimized binaries? Or do ARM do things differently and ARMv6 is not backwards compatible?
3) Has anybody ever heard any rumors or made any talks about porting Android to the Raphael? Just curious. I'd prefer a Windows Mobile device (not a Linux user) but I can see all this OpenSource stuff does have a future... EDIT: Nevermind, I found the page at http://wiki.xda-developers.com/index.php?pagename=RaphaelLinux
4) How does the device perform with 3D-heavy applications? Does it make use of any sort of acceleration (I assume no, not like the iPhone for example).
OK thats all... thanks a lot for your replies, if there's anything else you think is worth mentioning to a soon-to-be-first-time owner of a Windows Mobile device, please do say so Cheers.
In reply to 2) VS 2005 Pro onwards targets code at ARMv4I, basically generic ARM processors also capable of running the Thumb (16 bit) instruction set. Thumb represents a limited set of ARM 32 bit instructions coded as 16 bit instructions. It allows much smaller code sections, but with megabytes of memory available these days who cares? If you code in .NET none of this matters anyway, as the code is created as IL byte code, the .NET runtime sorts it out.
If you code in Embedded Visual C++ 3 or 4 the target chipset is ARMv4. When you use the IDE to create the code on a WinMo 5/6 machine it complains that the target machine cannot run the code. It's lying, what it really means is it does not recognize the processor class. As it is ARM 32bit code only it will work.
It is not worth targetting the code for a specific, (read non generic), ARM chipset. You are just making a rod for your own back when it won't work on something else.
Thanks for the reply stephj. There will indeed be a bit of research for me to do as to which language and/or IDE I decide to choose to train myself in then it seems. Specifically though...
stephj said:
It is not worth targetting the code for a specific, (read non generic), ARM chipset. You are just making a rod for your own back when it won't work on something else.
Click to expand...
Click to collapse
...what I was referring to is - I've seen some freeware PPC software, mainly emulators, that have two versions - a 'generic ARM' one and an 'XScale Compatible' alternative version. On the ARMv6 based phones, assuming the software was released back when XScale was the newest ARM family, would both work on the Raphael? If so, which would be faster?
Obviously though, for a developer, creating the most compatible/generic code to work on the widest range of devices is the main focus - later possibly implementing optimiziations or hacks that are specific to a certain platform - but I'm just wondering if these already built, older 'specifically optimized' builds are compatible with the succeeded chipsets.
P.S. Do you know where I could find some resources on choosing between Visual C++ or .NET? I.e. pros and cons of each?
Thanks a lot!
jonusc said:
Hello XDA-dev community
...
1) I written a few things in Java and PHP and other even-more-basic languages, but am interested in learning a new language with hopes to create software for both Windows PC and Windows Mobile. What choices do we as end-users have here? .NET is an obvious one [I own a copy of Visual Studio 2008 Pro], but are there any other languages of note?
...
Click to expand...
Click to collapse
Since you have VS2008Pro, C++/win32 if you want fast and lightweight applications
"P.S. Do you know where I could find some resources on choosing between Visual C++ or .NET? I.e. pros and cons of each?"
.net pros
easy to get something running fast even if one is a n00b
got a lot of components meaning less time to develop
can be programmed with c# and c++ and even eeeeewww basic
.net con
slow as in sloooooowww
require one to install the framework if the app
require a newer version then what ones phone came with and the framework is pretty big
and people don't seem to have success with installing it on sd cards
compact framework is also limited in features vs. .net on pc so apps don't just port always
limited in features unless one do unmanaged code
c++ pro
fast
require no extre stuff
small in size and again fast
have access to every feature in the phone
c++ con
one have to do everything and that mean msg loop
and a lot of leg work just to get a dialog with a button
steaper learning curve
more risks of mem leaking
harder to debug as stacktrace is not just there
like on .net
Very nice, thanks for the replies guys
So from what I can gather, a basic .NET application would be ideal for RAD (quick and dirty), particularly GUI-centric applications, but tend to be bulky; whereas C(++) is a more native / low-level language and is thus faster, but very hardcore as most functions need to be done from scratch.
I should have assumed it's pretty much the same as a Windows PC
What about C++ versus C#? And does VS2008 have a decent API/IDE set for mobile development i.e. does it have many libraries for C(++/#) already included or are more easily available?
Thanks again for the answers guys... it's obvious i'm keen to learn about it, but i'm a little worried that someone like me going from stuff like PHP and VB to C might be biting off more than I could chew....? Ah well if .NET is gonna cause problems down the line, then I guess I have no choice
Don't bother with the C++ version of .NET, the casts that you have to make, to get it to work makes the code very hard to read, and besides it only compiles to the IL level anyway, it's just not worth the effort.
So, under .NET use C#, or VB if you prefer, there is not much difference between them, but in my opinion, C# is a bit more elegant.
Under C++ you have the choices of WIN32, ATL (Active Template Library), or MFC (Microsoft Foundation Classes), programming models.
WIN32 is the simplist but the hardest to code, the other two add progressively more objects to make things easier, but you need to distribute the run time libraries with them. A simple WIN32 app can be distributed as a single .EXE if the DLLs it already uses are part of the CE/PPC operating system.
PS When it comes to running code compiled for a specific ARM class on your device, just give it a go. If the CPU hits an instruction it can't run, it will throw an exception and stop anyway.
stephj said:
Don't bother with the C++ version of .NET, the casts that you have to make, to get it to work makes the code very hard to read, and besides it only compiles to the IL level anyway, it's just not worth the effort.
Click to expand...
Click to collapse
Fair enough. So C++ in VS2008 is a bad idea
stephj said:
So, under .NET use C#, or VB if you prefer, there is not much difference between them, but in my opinion, C# is a bit more elegant.
Click to expand...
Click to collapse
I thought VB was dead? Wasn't VB6 the last one they made? Or is VB just what they call generic/common .NET Framework apps? Anyway, yeah i've read good things about C#, especially compared to .NET in general. EDIT: Oh, .NET is not the program language but VB is *facepalm* I get it, nevermind
stephj said:
Under C++ you have the choices of WIN32, ATL (Active Template Library), or MFC (Microsoft Foundation Classes), programming models.
WIN32 is the simplist but the hardest to code, the other two add progressively more objects to make things easier, but you need to distribute the run time libraries with them. A simple WIN32 app can be distributed as a single .EXE if the DLLs it already uses are part of the CE/PPC operating system.
Click to expand...
Click to collapse
Ah, same as a Windows PC. That makes sense.
Thanks for the answers I think I might take a look at C sharp.
C++ in VS2008 is fine, use the smart device WIN32 ,ATL, or MFC models take your pick.
Sorry my mistake, the C++ .NET version is not available for smart devices. Its the three models above only.
After additional research, I don't really want to be tied down with the proprietary C# system. So is VS2008 a decent IDE for WIN32 C++ development on Windows Mobile? Or are there better alternatives?
VS 2005/2008 Pro takes some beating. After you have installed about 3 CD's worth of MSDN libraries all the help is on tap. The IDE also looks at MSDN online if you have an internet connection to see if there are any forums on the same topic you are inquiring about.
The code is generated as ARMv4I and can be tested/debugged on the images provided by the WinMo 5 or 6 SDK. The emulators are that good you only put it on your phone when you have tested it to death on the emulator.
EVC 3 and 4 use a previous method where the emulators run a x86 version of the code. I still use EVC 4 for code that has to run on anything, Windows Mobile 2003 for example.
It's all pretty proprietory, when it comes down to it, but I guess we're stuck with it.

Upcoming developer: which platform to concentrate on?

Hi there,
it seems to me most people here develop for WinMo devices, but maybe you can help me out nonetheless.
Currently, I'm a web developer in PHP (+ usual stuff). I studied computer science, so I'm not a newbie when it comes to coding I learned a lot of C and (unfortunately only) basics in Java and C++. I never got my hands on C# or VB and stuff - the only experience in developing applications for Windows Mobile was a small Texas Hold'em Clock (basically a simple countdown and some additional stuff) I did a few months back. I pretty much google'd everything I needed and copy'n pasted the code into Visual Studio - not really developing, but those where my first steps
I consider getting started in development for mobile devices like BlackBerry, Windows Mobile devices, iPhone, Symbian and/or Android. The problem is: I don't know which one of these might turn out useful on when I might be applying for a job later (which is basically my whole point doing this, I don't want to do web development for the rest of my life). Any thoughts?
What type of job do you want to do? first find out what the sort of jobs you want to do require, many software houses use c# so you could develop for windows mobile, if they require java then try android. Iphone uses objective c which isn't used outside of the mac world so unless you want to work for a company which creates mac programs maybe you should try something else.
Then again if you just want to make some cool apps and actually make money from them I would say iphone is the easiest to get you product to market then android with wm coming last.
also if you learn java then you can quickly pick up c# and vice versa so I don't think it really matters either way.
there are of course many other options, if you happen to want a job that requires python you could get the excellent upcoming n900 from nokia
Cant offer advise on that, but what you can do is write a better app for Facebook, the MS one SUCKS compared to the iphones (eeek i said the dirty word............)
ms's also sucks compared to the x1 panel facebook which again is not as good as iphones :S

Android 3.0: Alternative for Windows on PC?

Since Google was known as a corporation, which makes successful global projects and "do not do anything evil", plenty of people started ask them selves, will be Google THAT Windows killer, which legends are talking about long time ago.
Hope became even stronger everyday. Google said at first time, that it won't make a web browser, then made Google Chrome, said that it is related only to internet, then made Android, said that the corporation is related to software only and made the Nexus One.
So, Everybody's waiting, waiting but no one paid attention that Windows Killer... Is released,
I'm talking about Android 3.0 (HoneyComb). What is this? It's an operating system for Tablet PC's. What is the difference between a Tablet and a normal PC? Yeah... No difference at all. Yes, Tablet have a touchscreen, but you can connect a mouse and keyboard. It can be not a tablet, a notebook PC. Tablets usually has a powerful VGA card, big display, powerful processor and RAM. There is no difference at all, except the form-factor.
Today, many developers are writing software, and games for Android tablets. There is software and games nowadays for android 2.x, and it can be ported to Android 3.x easily, it don't need nothing at all. This is a complete operating system with complete software, with it's own development environment, with it's developers communities, with it's tools and a programming language (Java script), own libraries for all basic functions... With everything. And, it seems, writing a complete, powerful program for Android is even EASIER, than the same program for Windows. And unlike the "clean" Java, programs and games under Android do not lag!
Windows Killer already exists. But it's unevenly distributed.
A few things you got totally wrong there, buddy.
1. Google didn't and do not make the Nexus devices. They're made first by HTC, then by Samsung.
2. Honeycomb isn't even CLOSE to being a Windows killer, not by a long long way, and never ever will be. I have a HC based tablet, and quite frankly, it's not even on the same planet as Windows when it comes to functionality, and never will be.
3. Serious development for Android happens at the C++ level, not Android's Java implementation. Java is nowhere near fast enough for things like Need for Speed. That makes it no better than any other platform for development, and if PopCap are telling the truth, actually much MUCH more complicated.
Did you take your meds today? Sorry that was a bad comment...
Sent from my I897 using XDA App

[Q] Android and iPod apps vs Windows apps

After a lot of unsuccessful searching, i figured i would try here.
Why does it always seem like every app offered is for iPod and Android phones only? Everywhere i go. Available for iPod, Android, and MAYBE BlackBerry. It occurs mainly with popular websites "Now Available As An App!". I don't understand why... Can someone shed a little light on the matter please.
It's because these devices have a different interface (small screen, touch operated), a specialized app as opposed to a full-blown website can offer a more streamlined service.
And now i am seeing that IMO.IM has an app for iPod, iPad, Android, Blackberry, or Nokia! Really? That is almost like going out of their way to not be on windows. In a way, i am glad because this was kind of what apple had gone through back in the windows vs mac days. But now i am on the losing end and i am pissed. Im still really considering getting an android over windows 7
WP7 is a relative newcomer and only has a very small market penetration. If you were hoping to make money off an app which platform would you code for first?
The main reason is C++ SDK! Currently Microsoft hasn't provided C/C++ SDK for Windows Phone 7. There are many apps for Windows mobile which aren't available for wp7. such as MS-DOS or Lingvosoft dictionary , etc.
If you can contact to developers recommend them to visit http://windowsphone.interoperabilitybridges.com/
I pray and hope that Microsoft provide a C/C++ SDK for WP7

App for multiple platforms ?

Morning,
firstly what programming language are the following platforms using:
Iphone, windows phone and android?
if i was to design and program an app in one of these platforms, is it easy to convert my code so that it can run on all of the above platforms?
Hi,
Android uses a form of Java (so if you know some Java that makes it easier to pick up - which i've done myself). I believe iPhone uses objective C, which I know nothing about! And Windows Phone 7 uses C# (shame they don't all use the same hey?).
If you're looking to write for multiple languages though, it might be worth using a site like: http://phonegap.com/about/ (again, I know nothing about it, but have heard of it and like the concept!).

Categories

Resources