Cross platform mobile app development [closed] - iphone

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I am looking into the possibility of doing some mobile app development, firstly for Iphone and then later possibly for Windows phone and Android. I am familiar with .NET development and am wondering about what options to consider. I have read a little about Mono Touch and Phone Gap, what are the advantages and disadvantages of these and are there any other better options anyone could recommend? Or is it really necessary to learn Objective C for Iphone, and Silverlight for Windows phone etc?

Have a look at Appcelerator Titanium. Its a pretty decent cross platform app creator for iPhone and Android.
However, the problem is that Android and iPhone (and Windows Phone) are different platforms. For instance, iPhone has navigation controllers with title bars and Android doesn't. Thus you can put buttons in the title bar on iPhone, but not on Android. Eventually you get to the point where you're writing specific code for each platform, even though you're supposed to be writing once and deploying to many places.
Personally the overlap isn't worth the time saved. It makes the code base much more complicated and less maintainable. Plus you can't do as much with those cross platform tools as you can if you do everything natively.
Lastly, who doesn't want to learn a new skill? Why do something the easy/quick way when you could learn how to make iphone, android and windows phone apps natively, which may help you in the future with freelance work or indeed your career.

Here's a tutorial on setting up a cross-platform solution in C# and Xamarin tools. It doesn't cover ios, but it's extendable in that direction.
How to Create a Cross-Platform Solution for Android, WP8 and WinRT
Hope that helps.

PhoneGap or Titanium is good platform for fast development very simple applications. But when you need to go deeper, you will find a lot of pitfalls. And the most important that all this cross-platformed frameworks, based on JavaScript, that they are VERY SLOW!
So for my opinion, the best solution for development cross-platform application is Mono (MonoTouch and MonoDroid). With Mono, you can develop for iOS, Android and WP7. And you business and data-logic remains unchanged. UI-layer you have to write different for each platform. But I think it's even better, because each platform has its own approach. In addition, you get really fast speed with Mono, as it is translated into native code.
But it is not free.

Using a cross platform framework will make your app look non-native on every device, this can be ok if you want to brand your whole app.
This will mean you can only make a standard app and won't be able to take advantage of the nice stuff each os has to provide.
I would go for iPhone -> Android -> Web Mobile -> Windows Phone. In that order.
Porting from iphone to Android has it's caveats but is pretty straight forward as similar design patterns were used. Windows Phone is a bit more industrial in it's design and you might not be able to get your head round the differences.

Related

ionicFramework vs Xamarin.Forms [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
I want to build an application for all platforms but I wonder!
What is the difference between ionic-Framework and Xamarin.Forms and,
Which is better to build an application for all platforms?
In the hands of skilled engineers, Ionic and Xamarin are both exceptional cross-platform development assets, which, compared with building native apps for two or more platforms, will save your business both time and money. Any decision about which one to use, though, should be subject to rigorous assessment of your needs, budget, and development objectives.
If app quality is a priority, you’re integrating with a lot of preexisting .NET architecture, and/or you need to build apps for a wide variety of platforms and versions, Xamarin will almost certainly be the best fit.
For smaller or less frequent projects on restricted budgets, Ionic will provide you with a fast and effective route to functional if unspectacular mobile apps for iOS and Android devices.
Depending on your resources, and whether you will develop apps in-house or with the help from external development companies, you might even wish to utilize both of these popular frameworks. Neither one is particularly costly to implement, especially since Microsoft started bundling Xamarin for free with the Visual Studio Community edition and Xamarin Studio (for Mac).
I think it mainly depends on what you want to do in your application.
If all you want to do is pushing some data and images (e.g. create a shop platform) i don't see any reason, why ionic wouldn't do the job and probably you'd see results a bit faster, as you don't need to struggle with a lot of native adaptions (such as file system access, etc...), though I don't think that choosing xamarin would set you back in terms of X months more.
However if it comes to using native features, such as camera, gps, sensors, whatever you will probably be limited to what the ionic api offers and I don't know how long the turnaround times will be until new features which may appear in the future are getting implemented into the framework.
Performancewise I am honestly sceptical if that mix of html, css and javascript/jquery will be anything comparable to what xamarin can get you to, as Xamarin actually produces an app which can compete with apps written natively.
I am not sure how deep you can get "under the hood" with ionic, though I know that with xamarin, you can actually go very deep and develop features that can use the native code of your target platform.
Actually by looking at the user base (or better to say the amount of questions here on stack overflow) one might be tempted that ionic has more questions than xamarin.forms, however that doesn't take into account that actually any question about xamarin, xamarin.forms, xamarin.android, xamarin.ios and c# might hold relevant answers and support for your upcoming problems. However to be fair, also ionic has quite an impressive amount of q&a answers posted here, so i would say that is a draw.
My conclusion would be: If you need to create a data-pushing app fast, you could use ionic, however if you need performance, native methods and want to be able to use particular native features, Xamarin would hold that door open for you.
Disclaimer: I have been developing apps with xamarin forms for about 5 years now and have never used the ionic framework at all and therefore my knowledge about ionic is limited to what I read on summaries. Probably my answer might omit particular benefits that ionic might offer and I really hope that a more experienced ionic developer might have something beneficial to add.
However, If you were asking about my personal advice, My answer would be: Use Xamarin
We had to answer this question about 18 months ago. For us the core question was if the app also needed to be deployed to a web environment. In our case we needed to support the same functionality in a native iOS/Android app, as well as a website (for the features that the web can handle). In that scenario Ionic is the clear winner.
If you don't have to worry about web, then I think Xamarin is a great option. I'd also be checking out Google's flutter too, which is a newer cross-platform option (again assuming no web needed).

Write once deploy on Windows Mobile 6, Windows Phone 7, Android and iPhone? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
Was just wondering if there were any cross platform development platforms which would run great for corporate type apps on various mobile devices.
Would be ideal if the language was C# but feel free to suggest others.
If you're happy to re-use business logic and write device specific user interfaces (more work, but better user experience on each device) you could consider the various Mono frameworks.
Writing the core business logic as a class library, then writing specific user interfaces using MonoTouch, MonoDroid and Windows using .NET Framework you'll have a cross platform application (albeit with individual UIs) in C#.
have you checked out Titanium at http://www.appcelerator.com
And then there is the PhoneGap at http://www.phonegap.com/
Worth noting that you'd be writing once for the PLATFORM, but being certain that your app works on the DEVICES is a different kettle of fish due to the variety of handset providers, their customized platform implementations and the hardware specific to the device.
Check out these related questions... otherwise know as duplicates....
Developing cross platform mobile application
Are there any huge differences between objective-c and Java, or iPhone and Android?
What work has been done on cross-platform mobile development?
Titanium Mobile is a popular choice these days.
I strongly doubt that you'll find a C# option* that's cross-platform since C# is tied to the Microsoft stack.
You could also just write a mobile-centric webapp with jQuery Mobile or similar.
*For mobile. For desktop, there's Mono (whose site appears to be down right now).
well if you've got a mac, your best bet would be to go for phonegap which supports a wide range of platforms,
if not, you could go for titanium
Although there are many platforms that provide you the facility to write once and run on multiple platform but from my point of view its not a great idea for simple reason of performance just think of below example
A C code is far faster than a java code because java provides you the virtual machine to run that code and java is far more easier to write than that of C. The idea is the more you stick close to native API the more you will get performance.
So considering the above example just think what will be the performance of such application that is supported on so many platforms
Note: I have not worked on any of such platforms so I might be wrong but this just a simple conception that fits to all
If you are used to working with Visual Studio, you can try Teleric's http://www.icenium.com/ . Icenium does not support Windows Mobile 6 though

If you have developed an app for mobile devices, which line did you take? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 12 years ago.
Improve this question
Developing mobile apps is a challenging job.
Customers want to be present not only on iPhone and iPad but maybe on Android and other mobile platforms like Windows Phone 7, Blackberry and Symbian, too.
It costs a lot of money to keep this apps up to date on different platforms. Besides the developer has to dig in different sdk's and learn different languages.
I thought about having just one app, that is rendered in a mobile browser like webkit, which is a standart for rendering web content.
Of course there are constraints like the use of camera or specific hardware for advanced rendering. But I think this will change over time.
How do you challange that? Do you re-use your code? Could mobile web be an alternative?
If I had to make the same app for multiple platforms (iPhone, Android, Blackberry, Windows Phone 7, etc.), I'd probably create a web app and utilize the new HTML5 features.
Alternatively, if you want to use the native languages (for added support with camera, etc.), it'd be quite hard to reuse the code. You could use the same logic, but you'd still have to rewrite a lot of the actual code.
Some other options could be Titanium or PhoneGap.
Using a web app bundler like PhoneGap would be my choice.
Mobile web can surely be an alternative.
I have been hearing a lot of things HTML5 is promising for mobile devices. If all of that becomes a reality, then we can really create web apps as powerful as native apps!
If your app is fairly simple and doesn't require the camera, fancy graphics or location based services then a HTML5 app is the way to go. Otherwise what I would do is develop it on the platform that you are most comfortable with and then outsource development to people who are specialised in the other platform(s). It's hard enough keeping up with one platform let alone five.
HTML5 is unfortunately not going to solve this problem for you because the companies have no vested interest in working together. We have tried middle layer products but you always come up against a roadblock that they cannot overcome or a device they do not support (e.g. our latest app is for BlackBerry PlayBook which uses Adobe AIR and a PlayBook SDK which is in constant flux).
My recommendation would be develop you apps using an early version of Java and implement this separately for each platform.
Good luck.

Limitation on mobile cross platform development [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
Currently, I plan to port a Java desktop application, to the Android platform. Besides official Android SDK, I also take a look on, as it will be a plus, if it is able to run in iphone with minimal effort.
http://www.rhomobile.com/
http://www.phonegap.com/
appcelerator.com
Those cross platform frameworks seem nice. However, I was wondering, what are the limitation on those frameworks?
Will they still have the same look and feel as native Android application? (Or a native iPhone application)
Is there any difference in the speed and responsiveness of the application?
Are they able to provide same set of GUI components as in Android SDK? (Or iphone's)
Limitation access to I/O, network resource, hardware?
Ability to use threading?
From my experience (my background being native mobile app development), we get a lot more control with native apps vs framework based apps. That advantage has greatly reduced in android and iphone platforms, however there are a few other things to condsider:
If it is a one off app then you are
better off working with the
frameworks you mentioned, they
provide all the features you asked
about and for a beginner, are a bit
faster to develop.
If you are going to do multiple apps
then it makes sense to have a custom
framework for your needs. In this
case you can reuse parts of your
Java desktop app and absorb them
into your framework. You will
probably need to create iphone and
android/java versions.
If you create your own framework,
you can also incorporate other
software development best practices
like CI more easily when compared to
off the shelf frameworks.
The UI components are different for
Android and iphone and you are
better off having them different as
they have quite different
sensibilities and interaction. So it
may not be a good idea to aim for
one to one mapping.
Speed, performance etc are not an
issue, same for threads support.
Hope these points help in your decision making process.
This post will be immensely useful for you :)
Comparison between Corona, Phonegap, Titanium
As for threading - since both PhoneGap and Titanium (I cannot speak to RhoMobile) allow you to hook into native code from JavaScript (and the reverse) I see no reason why you cannot multi-thread an application using one of these technologies.

Developing mobile apps [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
Given the landscape in which mobile applications exist is currently changing, i expect the "best" answer to this question to change as well, but for right now, which are the best operating systems/frameworks upon which to build mobile apps today.
I'm thinking in terms of cost, learning curve and market penetration.
Android
Cost: 0
Learning curve: More or less 0 if you know Java
Market penetration: HUGE
Android phone sales is expected to rise 900% this year, and the market isn't limited to phones. Some mini computers are going in that direction as well, choosing Android as their OS.
You need to define the end-result requirements for the application.
Part of the answer depends on what mobile hardware you will be running. And, whether or not you need to use unique abilities of your hardware (touch-screen, barcode scanner, gps, special buttons, VOIP, etc.) or if a simple input/output screen framework is sufficient.
That might drive your decision towards a local application or something more remote like a web application or terminal services. (There are, of course, local applications that use remote services also. Do you need to consider multiple front-ends?)
In addition, where are your development strengths? What are your language proficiencies? As you mentioned, mobile application development can have a steep startup curve for learning and for setting up your initial development/debugging/deployment environment. Is that worth it, or can you leverage desktop or web development experience and deploy remotely?
Once you make these decisions and determine your development environment and target, then you can take the next step to look at frameworks and methodologies specific to your needs.
This just in -
Today's Code Project Insider included this InfoWorld article -
"How to choose a mobile
development platform"
In terms of market share, at this point you won't get better visibility and hit ratio than you will get with the iPhone. There are plenty more Blackberrys than iPhones, but the number of people who buy and download apps on the iPhone are much much higher.
However, the cost are pretty high if you want to start developing for the iPhone.
You have to get a Mac if you want to do any sort of iPhone development. That'll set you back at the ~1k on the low end.
You'll have to pay for the iPhone Developer account for $99/year
Learning the iPhone SDK, which is in Objective-C, will be similar to C/C++ if you already know it.
That said, who knows what kind of splash the Palm Pre will make. So market share will be unknown, and I'm not sure of cost, but if you know HTML/Javascript, you're set.
In terms of Android, while it's a nice platform, market share is still barely a drop in the bucket. It is written in Java, and it has a lot of nice APIs, but until you have a lot more people with Android devices in their hands, it's kind of moot.
Blackberry would be a good platform to develop on if not for the iPhone. The SDK is in Java and from what I hear have decent tools to get the job done. The advantage here is that you'll have a lot of potential for consumer facing apps and potential for enterprise apps (because every business has too many of these :)
So, it depends on how much you want to spend and what kind of apps you're going with. Learning curve, I think, shouldn't be an issue because each of these platforms has their own SDK you'll have to learn anyway, so you're starting at about the same level for each of these platforms.
My picks are (in order):
iPhone
Blackberry
??
That said, that is the current view of mobile app development. It's always good to keep updated and at least have a notion of the other platforms so you could potentially branch out.
As you wrote, the environment is constantly changing, but if you plan to make your app the most portable as possible, in my humble oppinion you need to start developing with Java Micro Edition (J2ME). One of the best IDEs for the job is Netbeans.
Depends on the device I suppose. I don't think there is one common way to write something that will work on every device.
The big ones would be:
Windows Mobile: C++ or .NET Compact Framework (JavaME if you install the Java Runtime manually)
iPhone: C++ (i think). IIRC it doesnt support Java yet.
Android: JavaME
Blackberry: JavaME
Other non-smart/PDA devices: Probably C++?