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 8 years ago.
Improve this question
I'm new to mobile dev and I'm interested in developing the application for iOS, Android, and Windows Phone 7. And I'd like write less code. For the present time I see that C++ may fit well.
What I know is that :
it's possible to use C++ with Objective-C even in one file together for iOS, and I can link my c++ libs.
it's possible to use C++ through NDK on Android.
So I can write most of my app in c++ (except some very specific platform dependent parts) and make calls to my app through some sort of exposed Facade, right?
What can be done with windows phone 7? I know that it's .Net based. And in .NET it's possible to call code from c++ win32 dll's. But what with wp7? I wouldn't like to rewrite everything to C#.
Or maybe all this crossplatform game isn't good idea. Are there some critical pitfalls? Maybe it's better to have Obj-C only for iOS, Java only for Android, and C# only with it's silverlight and xna, and to maintain all this zoo separatelly?
Experienced mobile devs please share your experience.
Windows Phone 7 has no support for native code, yet. Have a look at this question for more info: Is it possible to program for Windows Phone 7 in standard C++ only?
If you want to code for those 3 platforms and reuse a lot of what you write, you could code in C# and use Mono from Xamarin to run your code on iOS and Android.
Note, that on Android, C++ is not fully supported. It's more about pure C.
Programming in C on android is basically reserved for games. If you don't want to make your UI in OpenGL, forget it and just write it in Java. You'll need a small Java wrapper anyway.
The same applies for iOS - if you use only OpenGL, you can write everything in C and use obj-c only as a small application wrapper.
From that you can see this is reserved mainly for games. There are tools available (e.g. http://www.madewithmarmalade.com/) which can help you develop openGL games easily)
The main differences between the platforms arise from the different UI frameworks. There are tools that try to help you overcome the differences - most of them are based on HTML 5 and they are using CSS to simulate the native UI. Usually you have to sacrifice a lot of user experience.
You have to understand that if you want your application to look perfect on different platforms, you have to write the UI separately and natively for each platform. Even UI design must be different. iPhone and iPad need lots of cool animations, they must be perfect for portrait & landscape mode (including the rotating animation), using navigation bar, toolbar, split view... Android users expect something else - a different (menu) toolbar, you need to port it to a lot of different screen resolutions and the user experience will be different.
I would recommend to start with native iOS and if the app is profitable (if this is the reason for your app), develop it for other platforms. iOS app always generate most money.
Have a look at phonegap. It claims to be cross platform, although I'm sure it brings the features down to a common denominator.
Among the current existing platforms , most of them support the HTML5, javascript including the iOS, Android and WP7 or upcoming WP8 also may support.
So it is advicable to write the applications using the HTML5 and javascript.
The same JavaScript HTML5 applications can be deployed on the individual platforms by using the framework which provides libraries for multiple platforms such as PhoneGap
Morever PhoneGap is open source mobile framework free to use.
Also you can refer the following link for the Top five HTML5 frameworks for Mobile developement.
I have quite good experience developing apps for iOS and Android with Titanium Appcelerator. The code is written in JavaScript and mapped to native calls, so you get a native look and feel.
PhoneGap has a different approach. The App is written in HTML, CSS and Javascript. The advantage is that it supports more different plattforms. Including iOS, Android and Windows Phone 7.
Did you look at MonoTouch and Mono for Android from Xamarin? http://xamarin.com/
They say you can re-use up to 90% of your app logic and create device-native user experiences / UI with access to all the native platforms API and device sensors.
Related
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
Three years ago I explored the option of using PhoneGap for one of my app developments. I found it extremely hard at the time to integrate with Facebook and connect to the camera and read a barcode. I ended up giving up and writing the app natively - and don't regret it.
But three years are past and I am wondering if I should be looking at this possibility again. I need JSON communications with my backend, facebook integration, swipeable cards (like tinder) and internal persistence.
I've noticed that the big players currently are:
Sencha
PhoneGap
Appcelerator Titanium
Corona
Xamarin
Did I forget any?
So, is anyone using any of the frameworks I've mentioned below and could tell me how mature they are these days?
Thank you
I am biased towards Appcelerator Titanium because I've been using it for years, however, I would still highly recommend it.
PhoneGap, Sencha and Corona basically all are website wrappers for your mobile phone. They do offer API support for stuff like camera, but it will still be HTML. HTML on a phone will always run slower than native implementation. Although you might not always notice it as a user, as a developer you need to spend a LOT of time optimizing so users will not notice it.
Xamarin I do not have experience with, but I heard is is basically Titanium, but a smaller community and much more expensive. I would consider that a no-go as opposed to Titanium.
So, I would recommend Titanium. But even though you build the app in JavaScript/XML it still will be compiled to use the Native API's, and the UI is actually native code manipulated by JavaScript in the backend. All UI interactions and building of UI will happen on native ground and will be much quicker.
Another alternative you haven't mentioned is React Native. Also in the same space as Titanium and Xamarin, but I personally do not really like the code structure for it. Titanium (by using Alloy, not classic) is pretty solid, and MVC.
Be sure to check out the following slideshow:
http://www.slideshare.net/joshcjensen/connectjs-2015-building-native-mobile-applications-with-javascript
It gives you a good overview about Titanium, Native Script and React Native.
And its good to know, that Appcelerator is creating "Hyperloop" (demo code: https://speakerdeck.com/fokkezb/titanium-develop-native-mobile-apps-with-javascript?slide=19 ) and there is a preview already. That allows you to use native code in Javascript without creating external modules and gives you even more system access.(use xcode projects inside your app, use CocoaPods, ...)
Sencha is really good Framework to make cross plateform web mobile and native application. You can go with this but before gone through you should read about this.
https://www.sencha.com/
https://www.sencha.com/business-web-applications-why-sencha/#developers
Intel’s Multi-OS Engine is a technology that enables developers using their Java expertise to develop native mobile applications for iOS and Android on Windows and/or OS X development host machines without compromising the native look, feel and performance. This technology is a stand-alone plug-in that can be integrated into Android Studio.
It's free and let's you write code and create UI easily in Android Studio. You can generate API for 3rd party libraries in Java etc.
More details and the download link are here: https://software.intel.com/en-us/multi-os-engine
One more tool it called XDK. The Intel XDK cross-platform development environment enables software developers to develop, test, preview and deploy HTML5 web and hybrid apps: https://software.intel.com/en-us/intel-xdk
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 8 years ago.
Improve this question
Want to create an app which can run on both ios and android without modifications.
Cider (http://engineering.columbia.edu/sync-columbia-engineering-team-first-run-ios-apps-android-platform)
seems to be promising. But couldn't find any examples.
Are there any other means of getting this to work? We don't want to maintain 2 codebases for the same app for ios and android.
I am used the following steps to convert
http://www.apportable.com/ please refer this link.Using this sdk we can
directly convert Xcode project into Android project.
I tested this sdk.It is give amazing output.
It is only need four steps for converting.
this is for your reference , in before i never used ,bz i don't knw JAVA.if u need this convert Android to iOS use this link
http://www.androidcentral.com/google-develops-tool-translate-java-ios-friendly-objective-c-code
ok try to develop app in phonegap(cordova) by using html,css and JavaScript programming language
Have a look at Apache Cordova. Supports almost any platform you like and is open source.
http://cordova.apache.org/
Other option would be Xamarin. Has a commercial license for both platforms.
http://xamarin.com/
You can use PhoneGap, you will have one app for platforms other than Android and iOS also.
PhoneGap is a mobile development framework produced by Nitobi, purchased by Adobe Systems in 2011.[3][4] It enables software programmers to build applications for mobile devices using JavaScript, HTML5, and CSS3, instead of device-specific languages such as Objective-C.[5] It enables wrapping up of HTML, CSS and Javascript code depending upon the platform of the device. It extends the features of HTML and Javascript to work with the device. The resulting applications are hybrid, meaning that they are neither truly Mobile native application native (because all layout rendering is done via web views instead of the platform's native UI framework) nor purely web-based (because they are not just web apps, but are packaged as apps for distribution and have access to native device APIs). From version 1.9 onward it is even possible to freely mix native and hybrid code snippets.
The link u provided is an on going research,it will take more than 3-4 yrs before it can come in market,However u can use the existing technologies like
phonegap
titanium .... to do what u want
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
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 8 years ago.
Improve this question
I am curious to know if there are any drawbacks or limitations of using Phonegap as compared to using Android. What else can we do that cannot be accomplished using the other platform?
Why would one specifically choose Phonegap over Android (besides budget or cross platform compatibility) or vice versa ? I am looking for clear scenarios with justifications.
Full disclosure I'm one of the core committers to PhoneGap's Android implementation so my opinion may be biased but I like to think I'm fair.
To answer your question it really depends on what your requirements are. You've already dismissed budget and cross platform which are two of PhoneGap's key benefits. For instance if I never intended to target any platform but Android I would probably go with native Android development but if we were going to other platforms I'd pick PhoneGap. Also, I'd take a look at my team, are they hard core Java programmers? Go Android. Are they HTML developers? Go PhoneGap or pure HTML5.
Also, it depends on what type of application you are writing. A first person shooter, go Android. A table driven data applicaiton, PhoneGap is the way to go.
Anyway, without knowing what type of app you are trying to develop it's hard to be specific.
PhoneGap Pros
PhoneGap is an excellent solution in a number of situations:
Multiple platforms: Since the front end of the application is built using web technologies, a PhoneGap application with the exact same source code can be deployed across different platforms.
Access basic native functionality: If the application requires minimal access to the native APIs such as camera, geolocation and contacts PhoneGap allows access to these APIs with just a few lines of JavaScript code.
Offline usage: Although the app is built using web technologies, it can still provide offline functionality and has access to the browser’s local cache.
PhoneGap Cons
Since the front end of the application is built in JavaScript, it causes a number of limitations.
Data processing: Native languages are much faster than JavaScript for data processing on the device.
Background processing: A large number of applications rely on background threads to provide a smooth user experience: calculating the GPS positions in the background, for example. PhoneGap APIs are built using JavaScript which is not multi-threaded and hence do not support background processing.
Access advanced native functionality: A number of native APIs are not yet supported by PhoneGap’s APIs.
Complex Business Logic: A number of applications such as enterprise applications are quite complex. In this scenario it is simply better to have a certain amount of native code.
Advanced Graphics: Apps that use advanced graphics which can only be accessed using third-party libraries are best done natively.
Benefits of building mobile web app:
1) Just need HTML5/CSS/Javascript skills vs Objective-C or Java. We made things even simpler by using Mobl (http://www.mobl-lang.org), a domain-specific language for creating mobile web applications that compiles to javascript/html.
2) Single code base for all platforms (iOS, Android, Windows 7, mobile web)
3) Rapid testing and deployment (up until you Phonegap it, at which point you're subject to App Store review conditions, etc)
4) With Phonegap, you can still take advantage of distribution and integrated payment via the App Store or Android Market
Drawbacks:
1) Poor performance, esp if your app is graphically intense, i.e. a game. You can implement caching or leverage some 3rd party solutions (i.e. Sibblingz) for native graphics acceleration but for the most part a native app is much faster/smoother than mobile web app
2) Lack of pre-built UI widgets, transitions, standard controls, etc. Your development time can take longer, especially if you want a polished-looking app with a native look and feel. You can try using Sencha Touch, JQ Touch, or similar tools with pre-built UI elements, but you'll probably still need to spend a good amount of time styling the app to look native.
So, should you build a mobile web app or a native one? If you're building an app that's graphically involved or involves any computationally expensive operations, go native for sure as the tools aren't quite there yet to make the job easy for mobile web apps. If you're building something fairly simple and you don't need any native styling or design polish, go the mobile web route.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I've been playing around with developing Android apps in Java for a while and am starting to get a handle on it. However if I want to on start on an iOS version I need to code everything from scratch - which is, well, undesirable.
I was wondering on what cross platform solutions there are available and how well they work in practice. I've been thinking about web applications - perhaps using jQuery Mobile or Titanium, or Adobe Flash/Flex/Air. I also don't yet have a Mac, which I'll probably have to invest in.
So my Questions :
What cross-platform development environments exist for iOS / Android (and/or other devices)?
What has your experience been with these tools? (this is what I'm really keen to know)
Disclaimer: I work for a company, Particle Code, that makes a cross-platform framework. There are a ton of companies in this space. New ones seem to spring up every week. Good news for you: you have a lot of choices.
These frameworks take different approaches, and many of them are fundamentally designed to solve different problems. Some are focused on games, some are focused on apps. I would ask the following questions:
What do you want to write? Enterprise application, personal productivity application, puzzle game, first-person shooter?
What kind of development environment do you prefer? IDE or plain ol' text editor?
Do you have strong feelings about programming languages? Of the frameworks I'm familiar with, you can choose from ActionScript, C++, C#, Java, Lua, and Ruby.
My company is more in the game space, so I haven't played as much with the JavaScript+CSS frameworks like Titanium, PhoneGap, and Sencha. But I can tell you a bit about some of the games-oriented frameworks. Games and rich internet applications are an area where cross-platform frameworks can shine, because these applications tend to place more importance of being visually unique and less on blending in with native UIs. Here are a few frameworks to look for:
Unity www.unity3d.com is a 3D games engine. It's really unlike any other development environment I've worked in. You build scenes with 3D models, and define behavior by attaching scripts to objects. You can script in JavaScript, C#, or Boo. If you want to write a 3D physics-based game that will run on iOS, Android, Windows, OS X, or consoles, this is probably the tool for you. You can also write 2D games using 3D assets--a fine example of this is indie game Max and the Magic Marker, a 2D physics-based side-scroller written in Unity. If you don't know it, I recommend checking it out (especially if there are any kids in your household). Max is available for PC, Wii, iOS and Windows Phone 7 (although the latter version is a port, since Unity doesn't support WinPhone). Unity comes with some sample games complete with 3D assets and textures, which really helps getting up to speed with what can be a pretty complicated environment.
Corona www.anscamobile.com/corona is a 2D games engine that uses the Lua scripting language and supports iOS and Android. The selling point of Corona is the ability to write physics-based games very quickly in few lines of code, and the large number of Corona-based games in the iOS app store is a testament to its success. The environment is very lean, which will appeal to some people. It comes with a simulator and debugger. You add your text editor of choice, and you have a development environment. The base SDK doesn't include any UI components, like buttons or list boxes, but a CoronaUI add-on is available to subscribers.
The Particle SDK www.particlecode.com is a slightly more general cross-platform solution with a background in games. You can write in either Java or ActionScript, using a MVC application model. It includes an Eclipse-based IDE with a WYSIWYG UI editor. We currently support building for Android, iOS, webOS, and Windows Phone 7 devices. You can also output Flash or HTML5 for the web. The framework was originally developed for online multiplayer social games, such as poker and backgammon, and it suits 2D games and apps with complex logic. The framework supports 2D graphics and includes a 2D physics engine.
NB:
Today we announced that Particle Code has been acquired by Appcelerator, makers of the Titanium cross-platform framework.
...
As of January 1, 2012, [Particle Code] will no longer officially support the [Particle SDK] platform.
Source
The Airplay SDK www.madewithmarmalade.com is a C++ framework that lets you develop in either Visual Studio or Xcode. It supports both 2D and 3D graphics. Airplay targets iOS, Android, Bada, Symbian, webOS, and Windows Mobile 6. They also have an add-on to build AirPlay apps for PSP. My C++ being very rusty, I haven't played with it much, but it looks cool.
In terms of learning curve, I'd say that Unity had the steepest learning curve (for me), Corona was the simplest, and Particle and Airplay are somewhere in between.
Another interesting point is how the frameworks handle different form factors. Corona supports dynamic scaling, which will be familiar to Flash developers. This is very easy to use but means that you end up wasting screen space when going from a 4:3 screen like the iPhone to a 16:9 like the new qHD Android devices. The Particle SDK's UI editor lets you design flexible layouts that scale, but also lets you adjust the layouts for individual screen sizes. This takes a little more time but lets you make the app look custom made for each screen.
Of course, what works for you depends on your individual taste and work style as well as your goals -- so I recommend downloading a couple of these tools and giving them a shot. All of these tools are free to try.
Also, if I could just put in a public service announcement -- most of these tools are in really active development. If you find a framework you like, by all means send feedback and let them know what you like, what you don't like, and features you'd like to see. You have a real opportunity to influence what goes into the next versions of these tools.
MonoTouch and MonoDroid but what will happen to that part of Attachmate now is anybody's guess. Of course even with the mono solutions you're still creating non cross platform views but the idea being the reuse of business logic.
Keep an eye on http://www.xamarin.com/ it will be interesting to see what they come up with.
My experience with making something very simple in PhoneGap+jQuery Mobile was fine. I was able to do it quickly for iOS. However, it didn't work on my Android phones without making some changes. The project was a very simple app to take pictures and post them to a web site. And at the end of the day it felt "clunky" compared to a true native app.
I don't believe there will ever be easy cross platform development. I think the browser is as close as you will get. By choosing something like PhoneGap I think you are just trading one set of pain points for a different set of pain points.
In case you do not want to use a full-fledged framework for cross-platform development, take a look at C++ as an option. iOS fully supports using C++ for your application logic via Objective-C++. I don't know how well Android's support for C++ via the NDK is suited for doing your business logic in C++ rather than just some performance-critical code snippets, but in case that use case is well supported, you could give it a try.
This approach of course only makes sense if your application logic constitutes the greatest part of your project, as the user interfaces will have to be written individually for each platform.
As a matter of fact, C++ is the single most widely supported programming language (with the exception of C), and is therefore the core language of most large cross-platform applications.
Although I've just begun looking at this area of development, I think it comes down to this basic difference: some tools retain the original code, and some port to native...
for instance, PhoneGap just keeps the HTML/CSS/JS code that you write, and wraps it in sufficient iOS code to qualify as an app, whereas Appcelerator delivers you an XCode project...so if you're not familiar with iOS, then that wouldn't really provide any benefit to you over PhoneGap, but if you DO know a bit, that might give you just a bit more ability to tweak the native versions after your larger coding effort.
I haven't used appcelerator myself, but worked on a project a couple weeks ago where one of our team members made an entire iPad app in about 24 hours using it.
And yes, to actually submit to apple, you'll have to get a mac, but if that's not your primary work platform you can go cheap.
Cappuccino or PhoneGap.
Sometimes though trying to find a shortcut does not save you time or give you a comparable end product.
There's also MoSync Mobile SDK
GPL and commercial licensing. There's a good overview of their approach here.
If you've ever used LUA, you might try Corona SDK can create apps that run on IOS and Android
https://coronalabs.com/
I've downloaded it and messed around some, I find LUA a very easy to learn scripting language without the usual scripting language hassles/limitations....
There is also BatteryTech which we've been using for the past 18 months and have released several games off of it. http://www.batterypoweredgames.com/batterytech
All C++, Android and iOS support, all users get full source. The new v2 includes lua bindings.