iOS and Android development on Windows - android

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

Related

cross-platform openGLES?

Is there a best/good way to go about cross-platform app development, like a game, for Android and iOS simultaneously (and Mac OS X)?
Just to simply develop an app that uses OpenGL and C/C++ only should be very simple, shouldn't it? As long as I didn't get into sound or even interaction at first?
I looked into the NDK, but there are all these warnings about how people shouldn't use it. I want to do everything myself as much as possible so I have not looked into things like Cocos2D ... is there any tutorial which just gets like an openGL "Hello World" going cross platform?
Thanks
Bob
Unity3d (game engine) is the best and easiest way to develop cross platform games. Due to the facts thats is supports many platforms.
The Platforms supported by unity3d are Android, Iphone, Mac & Window, web, Flash, Ps3, Wii, and even Linux.
The main benefit of using it is you do not have to rewrite your code (only some minor changes) to port it other platforms.
It supports C#, Javascript as well as boo for scripting.
The best thing about it. It has a strong support and great community to solve your problems.
You can create a cross platform Hello World in Unity3d in few minutes for various platforms like mac, windows, android, iphone, web.
I know it is not close (unity3d) as you want to pure coding enviroment but if your objective is cross platform games then unity3d is the best way (also the fastest).
Check it out http://unity3d.com/
I'm currently developing a multi-platform game (iOS,Android,Java-openGL,Flash and HTML5) using a google framework called PlayN http://code.google.com/p/playn/
It works great and have had a good feedback from the author when I hit problems

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

Iphone and Android mobile development - Getting started

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.

Is developing an application for Android using Lua only possible?

So I read this article on Mobile Orchard and, as I'm planning on having my first steps in Android development, it got me thinking: is it possible to develop for Android in Lua only? I Googled the topic but found no definitive answer. I know Java is the "base style" for Android but for the coding newbie which I am (elementary Python, basic C++), Lua seems somehow clearer and more friendly. Then here goes my question: can one develop an Android app using Lua only? If so, could you please show me some directions to move from here?
I've been developing a mobile application in Lua to control robots remotely from iOS and Android phones. The app is in pure Lua and runs on top of Mosync platform using MobileLua. There is still some plumbing required, but it's not too complex.
I also have a debugger and a Lua IDE (ZeroBraneStudio) that support debugging of Lua scripts running remotely (including MobileLua scripts running on Android or iOS devices). I provide a demo app you can use as a client to run simple scripts and check remote debugging in action.
[Update] If you are interested in more game oriented options, there are several available: (1) already mentioned Corona SDK, (2) Moai, and (3) Gideros Mobile. There is also Marmalade Quick and Cocos2d-x Lua bindings (for example, quick-cocos2d-x). All these toolkits/frameworks allow to develop in Lua.
Here is a detailed comparison of Moai vs. Corona.
I know this is an older question, but just to correct some misinformation (in the comments) for people who come later, Corona SDK (as of spring 2013) has a Starter Edition which is free -- no splash screen or anything. The main difference between it and the "Pro" version is you can't do in-app purchases in the Starter Edition. But you can use it to create apps for sale, etc. No expiration date on it or anything.
And in answer to the original question, learning Java may allow you to write Android apps, but if you then also want to target iOS you don't have any great options. By choosing something that's cross-platform from the beginning you can target Android or iOS or both. Lua (in any of the flavors already mentioned) is a great base language to learn for mobile development.
The question is what kind of app do you want to build and what skills do you have. If you are already familiar with JavaScript there is Phonegap/Cordova. If you are building games there are a number of frameworks for 2D and 3D which use Lua. Some are free, others have licensing fees but are worth it if it provides a solution to your problem. All have pros and cons. For example I'm not sure if I would want to build an RSS reader in a game framework. Java is just another language, I would recommend just learning Java and the Android framework to start and knowing what is there before adding another application specific framework layer on top.
Corona SDK allows you to write iOS and Android apps in Lua. Its very easy to learn, but its not free.
Edit:
I saw you posted that you found Corona just after I sent my post...
You can try http://scormpool.com/luastudio
Develop and run code on your device including iOS, Android, Mac, Win.
Exporter can help you to make standalone app on listed above platforms.
This may not be useful to the OP, however for other people interested in using lua to write their apps, I'd share my thoughts. So to answer the question:
Yes, you can use only lua to write apps for android using LuaJava from the kepler project (though I don't believe its being maintained anymore). You can create and manipulate Java objects seemlessly, and interact with the Android APIs through lua. You can even create UI elements dynamically using just lua. However, a small amount of java bootstrap code is needed to start the lua VM from your app. The AndroLua project is a great place to start for Android. The creator has done a lot of work making lua work with Android and packaging it all into an app. From experience I can say it works great! However, I would in no way recommend this to a beginner, as it requires a lot of knowledge about java and lua to make things work, meaning more work not less.
For AndroLua, just clone the repo and use that as a base for your own app. Last time I used it, I just imported it into android-studio, and after fixing a few problems with my own setup, had it compiling and running on my device.
If only pure Lua then the answer is no.. unless you want to use a lot of libraries
If you want to make little Android app/games then use a game engine, learning is a step by step process, don't dive straight into the hard part.

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.

Categories

Resources