what are the main limitations of titanium as a mobile development platform? - iphone

I intend to start an iphone/android project with the titanium SDK for mobile. Do you know what are the main feature-wise pitfalls to avoid ? what sort of features will be very hard or impossible to achieve ?
I understand that there is a plugin system to circumvent these limitations. Do you have information on that ?
Thank you for your help,
Jerome Wagner

I have yet to find a particular piece of Android functionality that is missing from Titanium. Not sure if widgets are in the current 1.5.1 mobile release or are coming in 1.6. In any case, the coverage is pretty decent, as you will see if you try out the "kitchen sink" app.
But here are some things I find lacking:
Titanium's Android support is still much buggier than iPhone support. For instance, I can't get global events to work properly--that's pretty important functionality.
documentation isn't complete; the API docs are skimpy
you're on your own; Appcelerator employees don't bother to answer questions online (even when they concern obvious bugs on their end), unless you subscribe to a support plan
That said, I've found developing Android apps with Titanium to be much more enjoyable than dealing with the Android SDK!

I agree with most of what #Drew stated above.
The API documentation is for the "most part" pretty complete, yes there are a few missing pieces, but hey the framework is free, they push releases pretty frequently and all the source code is available for you to go through yourself. You also have full access to the Continuous Integration Builds
I believe the 1.6.0 release has addressed additional issues with Andorid support, there is also a bug tracking system for you to investigate and report issues.
You are not on your own any more than with any other similar framework... Occasionally employees will review specific issues that show up in the Q&A Forum but the forum is very active and there is tons of community support. I would be surprised if you could write most of an application from just cutting and pasting from the Q&A questions and you will find the rest in the Kitchen Sink Example or Tweetanium Example Projects.

You asked about a plugin system. Titanium offers the ability to develop your own custom native modules.
The Titanium's Module Developers Guide (PDF) isn't the best, but it will get you started.

As Drew said, many of the Titanium's Android support is buggier compared to iPhone.
Titanium is meant for people who never wanted to learn the native iphone and Android programming. If you know to develop applications using objective C and you wanted to develop applications for iPhone then don’t even think of Titanium, the same case applies to Android too. Only if you are lazy to learn a language, you can opt for Titanium.
1.The size of the Application is a big concern here.
2. Some of the features in Android which was shown to be working in developer reference were not working. Even after being filed as bugs, they were not updated in developer’s reference that it works only in iPhone. For example, “focus” events of the window is handled only in iPhone and never in Android.
To get to know in details, the problems Titanium can bring you read the following post:
http://mobworld.wordpress.com/2011/01/10/titanium-framework/

Related

Smartphone Development Framework & Platform?

I am a C Sharp.NET & Silverlight developer and now thinking to swicth to SmartDevice development specially for iPhone & Andriod based phones. I have looked over web and found some cross platform development frameworks like
http://developer.openplug.com
http://www.phonegap.com/
http://android.xamarin.com/Welcome
but not sure about which to choose. Naturally I would like to keep my learning curve less but also would like to choose platform which provides more power, so I am looking for your suggestions and 'Getting Started' tips and also which device you think will be in demand in future iPhone or Android ? .
Thanks,
Maverick
I wouldn't recommend any of those. The problem is, that those "cross-platform" development frameworks, still aren't cross-compilable. This means you still need to develop an application for each platform, but you can reuse heavy calculations if you are using models af MVC.
Another thing is that those frameworks still aren't 100% native supported, so you'll loose some features from the native frameworks when developing applications.
I've read a lot of articles and to be honest, these cross-platforms seems to be dying out, cause both Android and iOS are moving very fast in each their direction and the cross-platforms cant keep up. But it's still up to you.
In would recommend you to choose one of those platform and learn it from scratch. With your C Sharp background, maybe iOS and Objective-C would be the most natural choice.
Enjoy
Edit: Regarding you last question:
I dont think it matters which one you choose, both will be domination for a long time. You should pick the one you can identify yourself with.
since you are C# dev, go for MonoTouch. I heard good things about it.
Miguel de Icaza is behind Xamrin. He wrote the most prolific .NET platform for UNIX, mono. I believe both he and his team have the capacity to bring you the most coverage for common features on Droid and iOS. My friend has a startup and is releasing an app shortly for iOS on Xamrin. It is a video streaming app.
HTML 5 will get you the most cross platform for the investment. Of course, like everyone else has said, if you need lots of native integration or if you want to use the latest APIs upon availability, you have to go native.

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!

Is Titanium appcelerator worth it for developing camera based application on ipad, iphone and android? [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
I want to build a mobile/tablet application whose core feature will be taking pictures with the camera , viewing pictures and receiving notifications. Also I want to target iphone, ipad and android platforms.
Titanium appcelerator piqued my interest because of its cross platform appeal. However I am concerned because I've read mixed reviews on SO and other sites. The things that worry me are:
Subpar android support
Camera support not fully capable (e.g ios 4.1 HDR capability)
Camera support buggy
The nightmare scenario for me would be to invest time in titanium only to discover later on that its a major PITA and drop it and go "native"
Please share your thoughts and experiences.
I chose Titanium for a serious application, although one that does not use the camera. I think there are a variety of things that could play into your decision...
If your app intends to do "fancy" stuff with the camera, or some real heavy image processing and so on, you're likely better off going native. If on the other hand, you just want to have it take pictures, and then those will be used as-is, or sent to a server, or what not, then Titanium should work just fine. Titanium does have some processing and image manipulation things, but as others have said, if you really want to take advantage of the device's hardware, you probably want to go full native.
It should also be noted, and Appcelerator says this as well, that with a Titanium app, you won't just write a single app that works as-is on all devices. You will need to taylor the UI to each device (or class of device, i.e. iPhone, Android), because they have different UI's, and different standard UI flows and so on.
But, one of the potential advantages to Titanium is if you don't know Objective-C and/or Java, and you do know JavaScript (and in my case, I'm actually using Coffeescript :). Or, if you would enjoy your work much more writing JS than ObjC/Java. This was one of the main reasons for me. I have done some ObjC dev in the past, and don't even mind it, but this project I'm doing is on a very very aggressive schedule, and it was just going to be far more effective for me to use Titanium. I was able to get set up and build an app extremely quickly, and I am not spending any time having to become more deeply familiar with the programming language I'm using, memory management bits (you can't fully ignore this with Titanium, but essentially they're doing it for you). Based on the folks I've talked to, and how much time they spend with memory management, Interface Builder issues (this is mostly the ease of forgetting to setup connections or hook various things up, IB is actually a pretty great tool), and so on, I'm quite glad I'm using Titanium.
While I expect to do an Android version at some point, it's not a priority. But, I'm glad to know that a large chunk of my app code will be re-usable, tested, etc. and that I'll wind up mostly just building/revamping the UI for Android, not rewriting networking code, data management, and so on. Android support will be much better (supposedly) in Titanium 1.5, but you may want to wait for that release to evaluate Android if that's a priority.
Finally, Titanium does have a "module" system, that allows you to wrap native code, exposing it as a JavaScript interface in Titanium. We are about to leverage this to integrate a third party library, and at least for what we need, it looks very easy to use, and has given me a little more confidence that if some particular native feature we need access to comes up, that we'd have a decent chance of integrating that while still using Titanium, but I think it would depend on what the particular native functionality was.
Good luck and enjoy building a mobile app, it's pretty fun!
We have been using Titanium in one of our projects for around 2 months, and frankly speaking our experience with Titanium is too bad.
As per my opinion, below are some major drawbacks of Titanium:
1) First thing is you will not get debugging support at all (We can understand how debugging require in any of the project and in any of the technologies).
2) Titanium is NOT fully supporting all the features of Android/iPhone; beyond some level it will not give you support.
3) Comparing with Android/iPhone SDK, developers will get very less amount of help from the internet and API library (Titanium provides the API library help file).
These are the general issues that end developers face while dealing with Titanium and I suppose sometimes it will be tedious and frustrating work for them.
If the functionality of your application is somewhat like displaying data from the web (like many news, media type apps) then Titanium is the suitable option; otherwise not.
The Android support is not near as good as it is for the iPhone. If you were to just say iPhone I would say you would have luck using Titanium. However, I think trying to build one code base in Appcelerator and also use in your Android environment may not be the best experience.
That said, IMO doing Android / Java code is much easier than doing Objective C / iPhone work.
So worst case I would consider using Titanium for your iPhone version & do Android in Java.
You can give it a shot doing them both in Titanium, but worst case code the Java version.
I just hate objective C and the 'native' Apple development environment so much.
I would recommend against using a cross-platform toolkit when interacting with device hardware is one of the key requirements of your application. I haven't worked with Titanium before, but I find it hard to believe that they will give you the same level of hardware access that you get with native frameworks.
In particular, iOS 4.0 added a mess of new capabilities regarding the camera, including live video frame processing through AVFoundation, and I find it hard to believe that a third-party framework will keep up as these platforms advance. To be honest, it's pretty easy to write an application that interacts with the camera on the iPhone nowadays (count the number of them on the App Store as an indicator of this). I wrote a live camera frame processing application in about six hours the other day.
I can't speak for Android, but I imagine dealing with cameras is fairly trivial using the native APIs there as well.
You're also going to find performance testing and debugging your application to be far easier using the native tools than those supplied through a third party. In particular, Apple's Instruments is an extremely powerful, yet easy to work with, application for tracking down CPU and memory issues within your application.
There's also the community aspect. You'll find far, far more people working on Android and Cocoa Touch than on Titanium (just look at the numbers of questions in the various tags on Stack Overflow to see that). This means many more tutorials and a whole lot more sample code that you can use.
The time you'll spend getting your iPhone and Android build environments set up, and submitting to both stores, will be the same no matter if you go with a native environment or with Titanium.
In the end, even with learning both platforms, I think you'll come out ahead by avoiding a cross-platform solution. Trust me, I've tried to do cross-platform development before for other projects and ended up with lowest-common-denominator products that took much longer to write.
I've developed an Appcelerator-based camera application and was very pleased with it. I think some of the negative reviews come from the fact that it's a bit hard to get set up (more due to Apple's crazy developer registration process).
Once I got started, it was easy to do things like overlays on top of the camera screen. I was really expecting difficulty with that part, but it worked well.
I have spoken with the Appcelerator team in the past, and they are a great group to work with. I've seen them be responsive to other user issues, and I'd trust that if I ran across a real bug, they would address it quickly.
A little late, but my two cents...
I honestly believe you can very quickly prototype an application with Titanium Appcelerator and focus on the critical feature sets to determine if it is the appropriate tool for you.
All developers have there opinions and experience(s) which influence there comments; developers have different ways of learning and different levels of productivity... In the end, it comes down to how are you most productive with the tools available to you.
Since you are stating from the start that you want to deliver a solution an multiple platforms, I think it would be a poor decision on your part to not even spend a week or two investigating cross-platform frameworks and then making the decision based on your personal experience.
There is Titanium Appcelerator and there is also PhoneGap, where PhoneGap might help you is that there is the ability to extend/enhance the underlying framework through writing plugins (I wrote one for iphone ) and there is an android one on my blog also... this can fill missing gaps for you when you move across platforms.
Also since the UI in a phone gap solution is HTML5 Webkit based, it can give you a consistent look and feel across you devices if you like. Frameworks like jQTouch and JQuery Mobile are being used for UX with PhoneGap Application
I reviewed negative feedback for Titanium Appcelerator but I tottaly agree with Aaron Saunders that if you use PhongeGap Development is support HTML5 which can getting easy to make apps for iPhone, iPad and Android mobile.
Has anyone highlighted the cost off titanium.
I was contacted by them today and if you are more than a one man band you have to sign up for a partnership program else you are held liable for breech of contract if you release the app.
The partnership program is £5000 which is far to much for us as a start up company when it's our first application, we are currently looking for a different option now.

Is there a way to develop a cross-platform app for iPhone/iPad/Android? [duplicate]

This question already has answers here:
Closed 12 years ago.
Possible Duplicate:
Technology to write iPhone, BlackBerry and Android phone at the same time?
Edit - guys, we need one more vote to close this. This question is a dup (read the comments)
I've heard that Apple banned such tools. Ok, so Apple lifted their ban in September. Still, the question holds - is there a sane way to develop apps to these two platforms without writing nearly everything twice?
Is there something I'm missing, or is the current state of affairs really that every company that develops a cross-platform legally has to maintain two code bases?
Apple reversed their ban in early September after receiving some pressure from the FTC and EU. However, unless you plan on using a third-party tool such as Adobe Flash Pro CS5 (I believe you can create AIR apps that will run on Android this way, as well as the much publicized iOS functionality), you'll have to maintain two codebases anyway, as Android apps are written in Java and iOS apps in Objective-C, two vastly differently languages with vastly different APIs.
You can always use standard HTML5 technologies to make a pure web app. Apple has two tracks for apps: native apps through the App Store written in Objective-C, or web apps that have only the restrictions of the underlying HTML5 technologies.
If you don't like pure web apps you can even merge the two and make a custom app that displays heavily customized web-like content in an embedded browser view (UIWebKit on iOS). Android and iOS web browsers frameworks are from WebKit and very close in features/appearance/conformance.
Instead of starting from a viewpoint of "I can't do X on Apple's closed iOS" start with "Can I do this in any supported application technology, even if its web-based or a web app hybrid, available across all platforms?"
I've done some research on this recently and have found a few companies that can to do this for you.
Appcelerator Titanium Mobile. They make a product that allows you to write your code in Javascript. I've found that the business logic, like networking, files, etc are write once, but the UI has quite a bit of if(android) else \iphone logic to get right. Apps will look native.
FeedHenry. They are more of a HTML based solution, but have a broader support of devices. More than just iphone and android. The sdk is still pretty early, and work can only be done in their special ide that is web based.
Phonegap. A javascript/css/html based framework that targets the iPhone, Android, and the Blackberry.
There are plusses and minuses to all of the solutions. Depending on your app's complexity, it may be a good decision to pick a platform like those to develop on. Coding an app could be much faster if the features they support are right for your app. Right now, it seems that they are all in early release phases and don't support a full toolkit that a developer would be used to, like a debugger, full IDE support, etc. Also, many of them build to a lowest common feature set, so you may not get all of the new release features as they come out, you would have to wait for a particular version of the platform to be released in order to have them.
XMLVM: Android to iPhone
XMLVM can translate your Android code to Objective-C for iPhone. But as what I know you still need a Mac to compile the iPhone application.
Android has the NDK (native dev kit) to allow C and C++ code to be included in APKGs and called from Java via the JNI. Apple's toolchain will also deal with both; the code that will be different will be the platform interface code, mostly in Java on Android and ObjC on iOS.
This is only useful when the bulk of your application is in C or C++.
An alternate would be to go with MonoTouch and the upcoming MonoDroid, if everything works out you could basically code C# on all platforms including of course Win7 Mob.
It looks promising but haven't tried it myself yet.
In September, Apple lifted some of the restrictions in the iOS license that had made it difficult to do cross-platform development. See this press release. I'm not familiar with the details of the current license, but you can get a copy through their developer program.
Another possibility that would be the Rhodes framework, if you like MVC, ORM, and Ruby.
take a look at the System.getProperty() values with android the vendor shows as The Android Project. I haven't looked at the iPhone or the IPad since I don't have one but hopefully they have something changed for their's too. But this will only work with java that I know of.

Is anyone using Sencha Touch for mobile development?

We're evaluating Sencha Touch for mobile development. Has anyone used this yet (I realize that it's still in beta), and if so, what are its strengths / weaknesses? How does it compare to alternatives?
It certainly sounds compelling.
Thanks!
I'm playing with Sencha Touch, I have a project up at GitHub. If you're comfortable with ExtJS it will be familiar. The examples are impressive (requires WebKit browser). You might be interested in this question as well.
I've used it only briefly. It looks very good and has a nice array of tools to make pseudo-native apps. One of the larger concerns is the licensing (the inclusion of ExtJS and the requirement to purchase a license to use the software). Now ExtJS and Sencha have merged - so I am unsure of what the impact will be. Also, as for alternatives, Sencha has merged in JQTouch (a primary alternative). See this post for more information
I think currently it is only optimized for safari-browser. I tried in on Android Phone (HTC Magic, Android 1.6) and the examples didn't work.
but it is a beta of course....
Currently ,i'm using sencha-touch in my project and pretty easy to use and understand especially with the documentation that comes along with it . As compared other mobile fameworks whose documentation is limited