Looking for write once deploy across multiple platforms, is there such a thing? Also looking for an tools that would help speed up mobile development, OSX/Linux based preferred.
No, there really isn't such a thing. There are some tools that are out or upcoming (Unity3D, Flash CS5, MonoTouch, etc) that allow you to share substantial amounts of code between mobile platforms, but if you want to write once and deploy you will end up with a pretty poor app.
The big issue is the devices are wildly different. Some have accelerometers, some don't. Some have hard keyboard, some have soft keyboard, some are multitouch capable, some are not. They range for 64MB to 256MB of ram, their CPUs vary wildly, and their screen sizes and resolutions are highly variable. The interface you design for multitouch with a 480x320 screen is completely differen than what you design for a pressure sensitive (stylus) based device with a 320x240 screen.
Even if you are only looking at Android you really need to tune your interface for many different devices (on iPhone it is a bit simpler because there are only a few different devices and their capabilities/features are fairly similiar).
Related
I'm making an Android game and the performance difference between single core phones such as Galaxy S and dual-core Galaxy S2 is comparable to night and day. Thus instead of making different versions for single cores and dual/quad-cores, I thought about using the processor count of the device to turn off and on certain graphical features.
But how reliable is getting the processor count? Do some single core phones have threading like Intel Hyperthreading which shows one core as two? Or are some dual-core phones a lot slower than the Galaxy S2?
While I recognize your good intentions behind the idea of checking for cores and automatically adjusting settings, so the user doesn't have to adjust settings themselves & to improve performance, it won't work in practice.
This is because there are too many devices and corner cases to cover. For example:
Some multi-core devices will have core parking and might not be detected by whatever core detection you use.
Some single-core devices may or may not have hyperthreading, but won't display as multiple cores.
If the user has their phone on power-save mode, you'll still detect multiple cores, but not recognize that they're running at limited capacity.
I'm sure many other examples exist. The point is, it would probably be a nightmare for you to cover most/all of these cases in order to automatically adjust your app's settings, especially given a relatively simpler solution: ask the user what settings they want at the app's launch, and make it easy to adjust these settings at any time.
Sometimes it's better to just put a burden on the user's lap, especially if it takes little to no effort for them to do it, and proportionally waaay more effort for the developer to do it. Good luck!
Graphic effects should be drawn by GPU, not CPU.
I'm looking to get back into Android development as a hobby, and I'd like to have a device to use for testing. Seeing as the only Android handset I currently own is the original Motorola DROID, however, I'd like to get something a little less... dated.
Buying a new Android handset on a plan with a carrier is an option, as is a used handset. However, I've seen a lot of much cheaper Android tablets that make that route far more appealing from a financial standpoint.
Developing for iOS lets you use an iPad as a test platform for your app that's optimized for a phone, and you have the option to either run in a windowed mode at the resolution your app is optimized for or to run it in a magnified 2X mode.
How does Android handle this kind of thing? Do you design a single app and the interface scales itself in some fashion? Or, as in the default iOS behavior, will it center itself at the resolution that your app is optimized for?
You could skip relying on devices, use Chrome, and change your User Agent. You can even target specific iOS and Android versions 'User Agent', as well as setting the windows resolution 'Device Metrics'
Right click a window, inspect element, sprocket at bottom right, 'Overrides'.
No, to date there's no standard mechanism for an Android device to simulate a different size device.
However, most apps will want to work on a range of devices anyway. You may find it expeditious to do 90% of your work on whatever available device is fastest at installing and running builds while moving the development forward, and then less frequently use a variety of other devices and/or emulators to test for compatibility with other sizes, dpis, Android versions, etc.
I know there are guides for android developers to learn iphone programming, and they try and compare and contrast differences between the two platforms to help developers learn, but is there a guide for the opposite? A guide/introduction to android development for developers coming from an iphone dev background?
I dont think there is a guide that compare iphone and android developement (May be I am wrong). From my experience (I started on iphone, now working on both) you should be aware of these things
iphone OS targets some standard devices which has fixed resolution and screen size. So we can align widgets in places by giving absolute pixel values. But in the case of android, we have to target different kind of devices, by different vendors, with different screen size and resolution. So to design and program UI you will need to learn about the concept called layouts.
For iphone we know there is only one soft keyboard. Different android devices comes up with hard and soft keyboards. And let me tell you handling android soft keyboard event can be most frustrating(From my experience).
memory management in ios is tough to learn, there is no garbage collector there, but easy if you understood the concepts. There is garbage collector in android(java) so we dont have to think about memory.
For learning android some links I have bookmarked.(not comparisons between iphone and android)
http://www.devx.com/wireless/Article/39101
http://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-androidwidget/index.html?ca=dgr-eclipse-1
http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts
http://saigeethamn.blogspot.com/2010/05/table-of-contents.html
If you want to get something up and running quickly to get a feel of things, I found this short series of articles, Android for iOS developers to be pretty good. There are a couple of errors here and there and you'll have to get past the author's style but I had a quick and dirty port of a similar iOS app up and running in a few hours.
As an aside, the Android SDK is a bit of a faff to get running on Mac OS X. I skipped it and installed on a Windows PC but you'll want a good guide tailored for that as well. There are a lot of steps compared to "install xcode".
There are many low-end Android devices that have really miserable OpenGL performance, like the HTC Wildfire. How can I figure out what percentage of the users has such devices with bad OpenGL performance?
These two links should help:
Android screens and densities
Android Platform Versions
Usually, those with older versions of android (1.x) and small screen sizes are the ones with low-end hardware.
You can't figure that out, unless you have accurate statistics.
I'm recommending (instead of trusting statistics) that you should have a target device as your goal when you're developing. For example -> G1, Hero, Nexus One, Nexus S etc...
Make your application work on the target device and after that you can continue building on your application based on its behaviour from your target device.
Think of android game development like PC game development. If the user's device is slower than the device you developed for, make sure you have a settings implementation that allows them to reduce the quality of the game.
Creating a little benchmark would help too, just run the camera through a typical scenario in the game and assess the fps at the end to decide on quality.
It doesn't even need to be that complex, just 3 levels of quality maybe, based on lighting/textures: low, medium, high.
I would like to start doing some Android development, and would like a cheap device to deploy apps to, just for testing and demo purposes. Is it possible to deploy apps to, for instance, an Archos 28? I don't know much about Android development yet, and haven't found a good answer to this question elsewhere. Thanks.
I can recommend the A28 for development. The user experience is rather crashy, part of the problem lies in the low RAM (128Mb is very little for an Android device). But I developed JGame on an A28 and did not run into firmware bugs. It also runs Flash 10.x in case you want to experiment with that.
I second that you should in particular worried about devices with a larger display. I found that graphical performance can be much worse on those devices. The A28 has a pretty good GPU considering it has several times fewer pixels than the average Android device.
Yes, it is running android 2.2 froyo. That should work fine for development purposes. Just keep in mind that some people will be using your app on cell phones that may be "larger" than the archos' screen size.