What 3rd party libraries are available for iPhone development? - iphone

I'm doing iPhone programming after 10+ years as a Java developer.
In the Java world, I'm accustomed to using 3rd party libraries for just about everything, from entire frameworks like Spring to small things like the apache commons utilities.
Are there similar things available for iPhone development? Where do I find them?
I attended the WWDC conference this year but it was of no help in this matter. Apple seems to think everyone writes all their own code from scratch. That seems unlikely.
Thanks.

Two that I like out of many
http://code.google.com/p/sqlitepersistentobjects/ like orm for sqlite
And
OpenCV can be used on iphone
http://lambdajive.wordpress.com/2008/12/20/cross-compiling-for-iphone/

Core Plot is for both MacOS and iOS.
Three20 seems popular but I have not used it.
PhoneGap is intended as a platform but has some utility as a library.
cocos2d is a popular sprite animation library.

Related

Anything similar to XNA for Android or IOS?

I want to start creating games for Android/IOS. I have already created 2D games using XNA and I want to publish them on other platforms even PCs but my highest priority is Mobile platforms. As I said I am familiar with XNA so I need a similar Engine for 2D. It would be great if I could write once and publish on many platforms. Please dont suggest Unity or Unreal. They are not that easy when it comes to 2D.
By similar I mean, for example, how easy to draw a sprite on the screen.
Note: I am working on Windows so no Mac suggestions please.
Regards,
You may also want to consider MonoGame ( https://github.com/mono/MonoGame/ ) as that is also an Open Source, OpenGL implementation of XNA that currently has support for iOS, Android, MacOS X, Windows and recently Linux. It is now all ES 2.0 on the mobile platforms. Our biggest change is that we now support Windows 8, and have a DirectX 11 backend thanks to SharpDX. We now also have initial PlayStation mobile support.
Actually ExEn, is a fork of MonoGame( originally called XNATouch ).
For a list of games on the AppStore or Android Market place and even NaLC, currently using MonoGame look here -
http://monogame.codeplex.com/
I hope this helps.
D.
You might want to keep up on the project called ExEn, which has already successfully ported some XNA samples and smaller games to iPhone and Android. It requires relatively little work to port and refactor to these platforms.
I suggest you check out AndEngine, its an open-source 2d open-gl based game engine that has a strong community. If you want something that you can make cross platform games with check out LibGDX It too is free, open source and based on openGl but it also allows for 3d games. It is also cross platform so a game you write for android can be compiled for, Windows, MacOS (see below), Linux. It also has a really strong community.
Regarding iOS and OSX games you really can't make them unless you buy a Mac. Apple doesn't distribute their SDK for use on any other platform but their own. That said you could maybe get something working under VMWare
Check out MOAI SDK. It's completely free and open-source. It is in beta right now but it is still pretty good. Crimson Pirates for iOS was developed with it.
Right now it supports iOS, Android, Mac, Windows, and Linux. Really good. I thought I liked Cocos2D-x, which is a C++ variant of Cocos2d-iphone supporting windows, iOS (not Mac), and Android but not truely supporting desktop kinda made me like MOAI more.
You can use C++ with MOAI or you can use Lua (they highly encourage using Lua). Being built in C++ is really great because you get access to a vast amount of libraries and you can easily bind them to Lua.
You should try games development with cocos2d.
Cocos2d is one of the best 2d engines for ios/Android I have come across.
http://www.cocos2d-iphone.org/
It is openGL based free engine.
Regards,
Sam
These might be useful to you. However, the first two aren't free, but they have editions for both iOS and Android.
iOS:
http://ios.xamarin.com/
Android:
http://android.xamarin.com/
I've never used either of them, but it's something I've been looking into a bit.
Apparently it lets you run C# and .NET code on both iOS and Android which is pretty cool considering how much easier drawing and things like that are in XNA compared to Open GL ES 2.0. Not to mention the fact that you'd be using C# instead of objective C.
There's also a free open source version sponsored by the same people who make the two I listed above. This one lets you run C# and .NET code on Windows, Linux, and Mac OS X.
http://www.mono-project.com/Main_Page
I have been researching this topic intensively over the last few weeks.
I think the best solution for you is Marmalade, formerly known as Airplay SDK. It is actually more Windows-oriented than Mac (work in Visual Studio), although you still need a Mac for the final step of getting a signed app onto the store. It sounds like a very capable pure C++ product with iOS and Android as well as a bunch of other platforms, Personal license with splash screen $150 pa, single seat Professional $500 pa for all platforms. They have a 45 day trial license which I'm currently using.
I was tempted by MonoGame, could live with the $400 price tag for each platform (for the needed MonoTouch) but it is just way too buggy. The final straw was a combination of a bug causing it to crash all the samples on iOS5 and that keyboard input is broken on iOS.
Too be fair, I'm pretty sure that is all on the MonoGame side and was very impressed with how well MonoTouch worked and was looking forward to programming in c# with LINQ et al.
Since it is not obvious from the other answers, it should be noted to those who are unaware that the ExEn project and the MonoGame projects both build on the Monotouch platform from Xamarin (formerly from Novell) - which is a prerequisite for both for iOS games.
The Xamarin projects was mentioned in another answer as an alternative to Xna, but is really not. Monotouch and Mono for Android are a way to run C# and .NET on iPhone/iPad and Android.
Game development at least on the iPhone side, is typically done using OpenGL and OpenGL is also wrapped in Monotouch. The Xna implementations in Exen and MonoGame also uses OpenGL as the foundation as far as I know.
It should also be noted that Monotouch and Mono for Android are commercial products.
BTW: Exen also compiles to other platforms e.g. silverlight.

Is Titanium bugfree? and is it equally compatible for developing iOS apps as XCode and Objective-c?

Few days back i was pretty much sure that Titanium is a great IDE for developing iOS apps but in last few days i have gone through few articles about Titanium and some of these articles pointed that Titanium is not fully featured for iOS development and it is buggy as well.
SO i came here to my StackOverflow friends to know is it true? does someone really faced any problem or encountered any bug while developing an iOS app using Titanium.
Please Advise about should i use it or should i go for Objective-C?
Thanks.
I believe Titanium is probably more buggy than native Cocoa Touch libraries and is, by definition, not fully featured as native Objective-C development.
The main question before you choose your development way is: will you in future ever consider to port your iOS application to Android? If the answer is 'yeah!' and you don't know Java, but you are more familiar with web technologies like CSS, Javascript and HTML/HTML5 rather than C/C++/Objective-C, I think the natural choice should be Titanium.
On other hand, if you're quick in learning new languages and have some good experience with C/C++, Objective-C is the way - later on you probably can quickly learn Java and jump into Android platform.
Second criteria is: is Titanium capable of delivering UI/UX you'd like to have in your apps? Titanium successful stories can help you answer that question - Titanium: Applications Showcase. Also try many native apps check what they offer. Compare and make decisions.
Important: I've never tried Titanium myself. I just face the similar dilemma as you. I want to extend my mobile app dev skills into Android world and consider Titanium as one of ways to go (I know basic JavaScript/CSS/HTML5, but not Java).
EDIT: I've just checked out your profile and it seems you're coming from Android world. I'd add to my answer: if learning Java was easy for you and you're already familiar with ups&downs of Java development for Android, learning Objective-C should be easy. The main difference is that in iOS you have to manage memory yourself and it can be a little painful.
Some good stuff:
1. Memory Management Programming Guide
2. Learning Objective-C: A Primer
3. The Objective-C Programming Language
Titanium basically uses JavaScript for developing application in iOS and Android. If you are comfortable working in JavaScript and CSS you can try Titanium.
Its my personal opinion, try learning Objective C, its really great language. If you have knowledge of C or C++, then understanding the concepts of Objective C becomes easier.
Try Objective C, you won't be disappointed.
I'm using Titanium (and have been playing with it for a few months) and can say with definitive emphasis that it's buggy as hell. :-) If you're looking for a single-platform solution, ie only Android or iOS, and plan on only supporting that single platform, it's a no-brainer to avoid TiStudio.
What Titanium is trying to do is to abstract and simplify the underlying nature of the platform you're on. It doesn't do this fabulously, but for simple apps, I've had lots of success.
That said, because it's attention is split amongst three (with Blackberry support incoming) platforms, it will always lag behind the native dev systems, and always lack in advanced features. That's the trade-off.
All that said, TiStudio is lightyears better than TiDeveloper (Appcelerator bought Aptana and is now in the process of integrating Titanium development with the Aptana IDE), and they're really working hard to make the platform top-notch.
I've landed on it as a platform due to my abject hatred of Java (after two months trying to relearn Java using the native IDE path) and my desire to do cross-platform development. I'm also confident I can route around the Titanium bugs/flaws as I'm basically writing my own app development framework on top of the Titanium SDK, so I can automate things that suck, fix errant behaviors, etc. It's a lot of work.
But that's basically where mobile development is right now. You pick your poison. Stick with a native SDK and be locked into one platform and have to deal with an annoying language (both Java and Objective C are ancient by modern Python/Ruby/whatever standards), or try something like Titanium which offers simplicity and a more flexible language, but is less tightly integrated an more buggy.
Best of luck!

What is this sparrow framework in iphone development?

I am new in iphone development .I recently heard about a sparrow framework which is used to create games for iphone but i could not get more knowledge about this framework.Is it an apple framework ? Do it provide some special features to iphone game developement?
It's an open-source project, therefore it doesn't belong to Apple. I basically use the OpenGL library and provide you a very easy to use abstraction of it. So it doesn't provide any features, but makes the development simple games much easier. Give it a try!
The nicest thing about Sparrow's API is that it is very similar to Adobe Flash. So if you have programmed Flash games before, it will be very easy to learn Sparrow. I have already published two games with Sparrow, and it was very nice to work with.

Can I work with M3G on iPhone OS?

I've been reading that M3G is something based on OpenGL ES...so can I work with this on iPhone OS? Did anyone do that already?
M3G is a Java API. On some devices it may be implemented on top of OpenGL ES, but that does not mean that a device having an OpenGL ES implementation is sufficient to use M3D.
The iPhone does not support Java development. There may be some thirdparty environments that cross compile Java into something that can run on the phone. I don't know of any, but I know there are tools for .NET and JS based apps. I suppose it is technically possible someone code implement something like that with support for M3D, but as far as I know no one has done it and it would be a monumental effort.
So, could M3D be made to work on iPhone, probably, but it would require getting Java working, and that would take years of developer time and I do not believe anyone has but in the effort.

Can you develop native iPhone apps in Ruby?

Hi I'm looking into iPhone development, and Objective-C is not be my preferred language. As far as I can see at this moment Ruby cannot be used to talk to Cocoa Touch at the moment on the iPhone.
So my question is, am I wrong? Can I use Ruby on the iPhone to develop Cocoa Touch applications. And what is the future looking like for Ruby on the iPhone?
Now you can with RubyMotion
In the iPhone OS, mprotect() will fail if you try to use it to mark writable sections of memory as executable. This breaks bridges like RubyCocoa (and probably MacRuby) that use libffi to create Objective-C method handlers at runtime. I believe that this is by design because it was not always the case.
Ultimately, this is more a matter of platform politics than technology, but a technical workaround for this exists. Instead of generating custom method handlers at runtime, precompile a pool of reconfigurable ones that are assigned as needed, essentially making the bridging process entirely data-driven. As far as I know, this is not yet being done in RubyCocoa or MacRuby.
Another significant thing to consider is that the compiled Ruby and RubyCocoa runtimes can be significantly larger than compiled Objective-C apps. If these libraries were available on the iPhone, this wouldn't be an issue, but for now, even if you had RubyCocoa working, you might not want to use it for apps that you distribute.
No, you are correct. Currently, and most likely for the foreseeable future, Ruby will not be an option, at least for AppStore applications. There's no reason you couldn't do this on a Jailbroken phone, but Apple is pretty wed to Objective C for official development.
You are better off as a programmer knowing a number of different languages - think of Objective-C as a good learning opportunity.
I've found that things you learn in other languages often make you a better programmer overall, and give you new insights into other languages you already know.
rhomobile is an option to run ruby code on the iPhone, but it's essentially web app development. A web server runs locally on the iPhone and your ruby code renders to standard client side web technologies (html/css/javascript).
http://rhomobile.com/
Actually, the ruby cocoa bridge isn't awkward at all; things work remarkably smoothly, right down to connecting outlets in IB etc. The resulting code is down right beautiful.
As for iPhone development, if you want an official AppStore application, you're out of luck unfortunately. Apple dictated that iPhone is Obj-C/Cocoa Touch, and there's a clause in the SDK license saying that one of the things they will reject an app for is having a language interpreter/JIT compiler, so you couldn't add a ruby interpreter in your app yourself.
Off topic, but hilariously, this is why Flash for the iPhone is Adobe blowing smoke. They couldn't get a swf player onto the AppStore even if they wanted to, per Apple's license.
Uh, Rhodes (Rhomobile) does allow you to do native apps on the iPhone and all other smartphones. Yes, we do leverage doing rendering via the WebUIView control. But we allow all device capabilities and synchronized local data.
You might want to take a look at shinycocos. It is a child project of cocos2d-iphone, an Objective-C game programming framework for iPhone.
I haven't yet played with it, but from the git README I infer that it bundles Ruby 1.9.1 into your app.
I installed the ruby package from Cydia on my iPod Touch 1G jailbroken on 3.1.3:
Seems to work.
Now as for cocoa-touch that is a whole different story I would assume.
Take a look at http://www.appcelerator.com/products/titanium-mobile/
"Native iPhone and Android apps built with Web technologies."
Sounds good isn't it ? ;-)
No you can not create iOS native app in Ruby.
There is only two options for native apps for mac and iOS:-
Objective C and Swift Programming Language
Tutorials:-
Apple's official tutorial on Objective C
Apple's official tutorial on Swift Programing Language
If you are familiar with Ruby and only want to create iOS apps by Ruby. Ruby Motion, can be a cross-platform option for you, but it is not free.
Cross-Platforms
RubyMotion
Xamarin required .net skills
appcelerator HTML,XML,CSS,JS skills required
phonegap HTML,XML,CSS,JS skills required
I imagine it won't work right now, but I'd imagine that you'll eventually be able to use MacRuby to build iphone apps. Apple are putting a lot of work into it
Here's a link to an ADC article describing how to build normal cocoa apps
You don't have to use Objective-C to write iPhone apps. If you use QuickConnectiPhone, http://sourceforge.net/projects/quickconnect/, you can write it completely in JavaScript, CSS, and HTML and still have an installable application not a web app.
If you know ruby you are probably working with JavaScript already.
To see how to install it, run it, and other ideas go to tetontech.wordpress.com
There's an open-source Ruby-Cocoa bridge you might try to get working. But I gather that there's a bit of an impedance mismatch between Ruby and ObjC that makes it a bit awkward to use.
The Ruby Cocoa bridge probably will not work. Most of the bridges for dynamic languages need to generate executable thunks (either manually or with libffi). More limited bridges (for more static languages) may not have such issues.
In either event, bringing up a bridge is probably going to require becoming more familiar with the Objective C runtime than one would just learning how to write Cocoa Touch apps, which probably defeats the point of doing it in the first place.
Currently isnt true, Apple change their policies, take a look at ShinyCocos, is a ruby bindings for the Cocos2D-iphone game framework.
https://github.com/funkaster/shinycocos
One possible solution would be to create an application wrapping for example the rice library (google it) which includes a ruby-vm. I reckon you would be able to create c++ wrappers that you could expose to ruby, thus making an environment for iphone development with ruby. This probably requires a lot of work though ^^