Iphone and Android mobile development - Getting started - android

I'm a web developer in ASP.NET, C# and looking to start some mobile development. I'm aware Apple uses Objective C and Android uses Java, is there a way to create an app for both platforms or do I need to buy a Mac and some books on objective c and Java?
Thanks

You can use http://phonegap.com/ or http://www.appcelerator.com/platform to write cross-platform apps.

Rumour has it that Delphi XE3 (Due to come out soon) can be compiled onto Apple, Android, Windows 8 etc.etc. so if you can hold out a little longer that should be good!
For now, you are better using a mac (with XCode) to program for IOS or OSX as Apple is very particular and you need certificates for devices, projects, development and distribution etc.etc.etc.
Android i believe you have a bit more play with, but at the moment it is 2 seperate languages. Check out the DEV centres:
https://developer.apple.com
developer.android.com/

There are ways to create apps for both platforms, especially if you know web technologies : PhoneGap and others.
But like specified in the doc, you will most probably need an actual mac if you want to build to iOS
Although there are workarounds

You could use PhoneGap or Appcelerator. Haven't tried them myself, though. But with those tools you could build for both Android and iOS.

Since you are a .Net, C# developer, i recommend you to use Mono for Android, it comes with cost but will save you time and easy to deploy
http://xamarin.com/monoforandroid

The best way to be truly cross-platform is to develop for the web. I would include this in your consideration of development strategies, in addition to PhoneGap and Titanium, as Peter mentioned. You do not have as much access to core OS features, but that is improving all the time (see http://mobilehtml5.org/). Whether or not this is feasible depends on what you are trying to accomplish.

Related

Naive Query on Developing a Mobile Application

I have developed application for android based mobile using Java. I have tried developing apps for Windows based mobile phones using C# and heard about iOS that one would need to know Objective C.
Wondering if there is any way to have one language to develop an application that can run on all these platforms. I understand every operating system executes programs having different binaries that it execute. But just wondering if there is any common platform like JRE that is run on these mobile operating systems.
Thanks for the reply
Short of working with HTML mobile webapps, I reckon your closest bet to a common language between the 3 platforms would be C# using Mono.
Check out Mono for Android and MonoTouch for iOS both supported by the same company.
Whilst you could probably use the same language for your apps and even share internal APIs across the different platforms, you would still start to encounter differences in how the UI is handled on each of the platforms.
There is a project: http://www.appcelerator.com/platform which can be used for writing apps for Android and iOS... But from my experience I can tell that this is good only for simple prototype apps. The more fancy app, the bigger issues you would have with it.

Hybrid apps for iOS/Android/Windows 8

I hope this question is specific enough. I have a client for whom I made an iOS native app and an Android native app (same app, different platform). It's a fixed pixel design (I made this work for Android somehow:) and it works on iPad, iPhone and most Android devices (with some letterboxing). Now I am asked to write the same app for the Windows store and they want me to use HTML and JavaScript. My question is, when I use HTML and JavaScript, would it be "easy" for me to use this code into some sort of hybrid solution (PhoneGap, etc)? The app doesn't need much complicated functionality but does need to support push notifications on iOS and it needs to be able to play videos, preferably HLS. Any advice on what the best hybrid solution and do hybrid solutions allow you to build for Windows 8?
I'm a cross-platform developer working on PhoneGap and Titanium Appcelerator. The correct answer is "It depends". Currently the state of cross-platform development is not very recommendable. Yes, you can write plugins for PhoneGap and it does support windows phone but you will have a ridiculously hard time getting them to communicate with each other properly. I learnt this from experience.
If it was a hacking/hobby project to further the cause then I would say go for it but for a time-bound client project like yours, I would recommend against cross-platform solutions and go native instead. Plus native always gives considerably better control, speed and ease of development. You will probably develop it faster in native than cross platform anyway. I've played around with windows SDK and it seems easy to use and well-built with good documentation and you can use C# which is similar to Java since you have already used it on android.
You can also build windows 8 desktop apps using html and javascript natively but this isn't present in windows phone 8 yet.
As I mentioned, If you don't need too many native controls, then you can go cross-platform. For your requirements, it can be done. If you have already developed android and ios apps and only need windows app now, then going native would be easier. But if you have to make all 3 then you can go cross platform if your requirements are restricted to what you mention. Here's a good quora thread that discusses the pro's and cons:
http://www.quora.com/Is-Titanium-good-for-developing-iPhone-apps
Take a look on Xamarin
Main idea - they brings real native code for all platforms.
They have instruments to compile C# code that it can be used at all platforms
For example you should create UI in XCode (for iPhone) and use ModoDevelop to create DAL/BLL, then you can re-use C# code base over all other platforms
They have cross-platform iPhone/Android/WP7/W8 samples on GitHub
Also see Q&A on Stackoverflow tagged Xamaring
We are starting to build multiple apps for multiple clients both in IOS and Android native platforms. The problem is we are going completely native which is taking too much time.
I would like to look at the linked in method (http://arstechnica.com/information-technology/2012/10/a-behind-the-scenes-look-at-linkedins-mobile-engineering/) which is a more hybrid approach using HTML and native code.
The problem is I don't think Phonegap is that good - good for prototyping but maybe not for full versions of apps as it can be a bit slow and a bit buggy.
I would like to look into doing a model where we create like 65% HTML and 35% native to that device (like linked in)
Would anyone have any suggestions for this? Would people say we need a massive development team to pull such an approach off?
I welcome thought:)
Thanks

Android, Windows Metro apps and Windows Desktop

Hello everyone and thanks for viewing this question :)
I am an indie to-be-developer and want to make apps for android, windows 8 desktop and metro.
After having read through a lot of forums and blogs, I believe that perhaps to make the best looking(native-feel) apps I have to learn
Java for Android
HTML,CSS and JS for Metro
Something else for Windows desktop
What I need your help in is, whether there is any one particular language which I should start with which will make my journey better ?
By app I mean something to do with sharing and transferring of files.
P.S. Read that Python might be perfect !
Do you agree ? Please suggest something.
As Tanis alluded to, you'll need to determine where your goals are in terms of "rich functionality versus maximum reach" - and from your "best looking (native-feel)" comment, I'd say you're leaning toward "rich"
Pure HTML5/CSS/JavaScript will give you the greatest reach because of browser ubiquity, BUT you can still use HTML5/CSS/JS for native development for modern Windows 8 applications and via PhoneGap for Android and other mobile devices. Having one code base AND supporting native features across those platforms would be difficult, if not impossible, but with the right design and architecture you should be able to get a great amount of reuse of your HTML/CSS/JS assets.
Another option, since you've mentioned Windows Desktop as well, is to use WPF and XAML with C#. You can build native Windows desktop applications with it, and those same technologies (XAML/C#) are one of the three primary development options (along with HTML5/JS and C++/XAML) for modern Windows 8 (nee Metro) applications. For the Android piece of it, Xamarin's Mono for Android lets you reuse many of your C#/.NET assets for deploying native applications to Android (and they have MonoTouch as well to add iOS to your arsenal!)
As for Python, productive and powerful language, and great for backend services - like the plumbing for sharing and transferring files - but it wouldn't be my tool of choice for building mobile apps.
If you want the highest level of cross-platform compatibility, a web-app (typically HTML, CSS, and JS) would be best. Making a web app will help ensure that your app works on nearly every device with a web browser, and you only need to maintain one code base.
The trade-off is that you often lose some features, such as the use of some of a phone's sensors.
If you want to make native apps for each, then I would suggest Java (particularly for Android) or C/C++ (particularly for desktop environments).
Python is an excellent starting language as well (and codeacademy has some great tutorials), but isn't as directly applicable to app development as Java or C/C++.

Best language for multiple platform software

This time I'm trying to make a software that can be used on iOs, Android, as standalone software, as a web app, and I want to know if there is a way to make a base code in one language and with little effort and minimum changes use it to compile it for all the platforms. I was thinking in c++, but is there a better option?
Thanks in advance
Phonegap gets you three out of four http://phonegap.com/
Seems rather obvious to point out, but you Adobe Air can do each item in your list using the same code. The language behind it is Actionscript and is object oriented. From the same code, you can output Flash for web, Android apps, iOs apps, a standalone Air application for desktops. You can develop in Air using a Mac or PC.
(If you are using a PC to create apps, for uploading to iTunes, you need a Mac, but you can rent a virtual Mac from http://www.macincloud.com, which works on a PC. You will have to use the Mac to create your certificates and upload the IPA file onto iTunes, but it works perfectly without the expense of buying a Mac.)
You could also consider going as a service on the web. Otherwise, c# is a good all way to go. There are sites that will alter different sources of code to different outputs.
jQuery mobile also good framework for multiple mobile platforms. link to website. We are using this for same purpose. So far everything good.
I'm surprised that no one has mentioned this yet, but Unity should be your go-to for cross-platform app creation. Nominally, Unity is for cross-platform game development, but its expansive libraries allow for robust general-purpose program development. Unity provides you with great tools for building UIs, and it has an active community of developers.
Using C# will get you Android, iOS and Windows Phone if those are key platforms for you. Using Mono / Xamarin you can develop apps in C# / .NET.

iOS and Android development on Windows

I'm facing a dilemma: I have a solid ASP.NET development experience in C# and looking to start mobile development. I have done research and know that there are some hacks for getting a development environment for iOS on windows, and recently after Apple lifted ban on 3rd party dev apps, Adobe Flash CS5 can be used to package iOS apps. I do have some prior experience with Flash and AS2.
So my question is: should i use Flash CS5 for iOS and MonoDroid for Android or should i just get Mac and learn Objective C for iOS and learn Java for Android? What would be the most practical solution?
Thank you in advance
EDIT: In the end, after trying out both Java Development in Eclipse against Android SDK and Mono for Android, I decided it's best to write Android apps in native environment. Eclipse FTW! As for iOS, I think it will also be best to use native Mac tools and Objective C.
While there are ways to get around using Objective-C for iOS development, I'm going to recommend that you learn it anyway. You need a Mac to deploy anyway, you might as well use it to develop as well.
Objective-C is bloody bizarre when you first start using it, with its strange square brackets and odd ways of doing things. However, once you've spent some time writing code in it, a change happens in your brainmeats and you suddenly realize that this is really an elegant way to work. Xcode is also quite an excellent IDE.
You can start with the iPhone Applications Programming lessons on iTunesU from Stanford. It's free, and covers what you'll need to know pretty throughly.
Worst case, you've learned a new language, and how Apple thinks iPhone apps should be developed. Even if you ultimately use something else, that understanding will help you out long term.
Take a look at monotouch & MonoDroid (Coming Soon), it still requires a mac. But you can open your solutions in VS2010 and use resharper, and just use the Mac for deploying and building. Take a look at this Here to open monodevelop solutions in Visual Studio.
http://monotouch.net
For Android, I would recommend learning Java. I just started working with Android in Java on my Windows machine after developing some ASP.NET sites. I'm familiar with Java, but the syntax is so similar to C# that it's very easy to understand and pick up. So far it is more difficult figuring out and remembering the details of the architecture of mobile applications as opposed to the language. It also helps that there are a number of good books and online resources for converting from C# to Java and vice versa.
Update: I found a good post over on programmers.stackexchange.com that talks about C# vs. Java for Android development with good discussion on the pros and cons of switching: https://softwareengineering.stackexchange.com/questions/33076/as-a-c-developer-would-you-learn-java-to-develop-for-android-or-use-monodroid-i
#Dimitri I was almost your identical skill set when iOS 2.0 was released. I decided to try and learn Objective-C and now its my language of choice. Its a bit different to start with but most of the changes are simple to learn. Whether you are programming for iOS using Objective-C or something like Monotouch either way you have to learn the frameworks. If you use Monotouch you will never be able to be on the bleeding edge of the iOS enhancements. Using Objective-C you will be able to use the latest beta APIs and ensure your apps work right. You will need a Mac to deploy to the App store so just bite the bullet and get a Mac. Get a MacBook Air 13"
I went the route of Monotouch for iOS and Java for the Android. Unfortunately, Monotouch still requires a Mac. I am currently participating in the MonoDroid beta, which looks pretty promising too. It's all a matter of taste. I should also note that, for the most part, HTML/Javascript is a nice way to get portable apps in some circumstances. I would expect HTML5 apps to become even more viable as tooling improves.
I choose to use the Mono, MonoTouch and Mono for Android technology stack from Novell. When coupled with a micro framework like MonoCross (open source in Google code) it helps me write applications for both iPhone and Android devices while leveraging a shared code base for much of it. I would highly suggest the same route, it has allowed me to implement numerous solutions for small businesses and enterprise customers alike.
I didn't have the ASP .NET experience like you, but I was a Pocket PC/Windows CE developer so C# and the .NET Framework were also my strongest tools when I started on journey towards Mono many moons ago.
You can do iOS,Android and Windows using Xamarin.
Android and Windows can be done easily but doing iOS on Windows was tough so far like networked mac is required for debug and development but things have changed now.
Microsoft has introduced Xamarin Live Player using which you can debug,develop and deploy the app completely in windows without the help of any Apple system but to sign and release the app to appstore you will need Apple System though

Categories

Resources