Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 8 years ago.
Improve this question
I've recently ran into an error with an Android app I'm developing. It requires me to have a device with an exact version of Android installed. (specifically 4.1.1 or 4.1.2) I've been looking around for the exact answer to my question and so far I have found nothing useful.
Can you install ANY stock version of Android on ANY android device? Or are their restrictions/compatibility issues that limit your options?
My original plan was to use fastboot to flash 4.1.2 factory image onto my Nexus 7 (2013 Edition). However, I discovered that google doesn't provide an image that goes back to 4.1.2 for this device. Does this mean it isn't possible or is there another way to accomplish this (shy of purchasing a device that can).
It requires me to have a device with an exact version of Android installed. (specifically 4.1.1 or 4.1.2)
Why?
Moreover, what is "an exact version of Android"? Samsung's 4.1.2 is different than HTC's 4.1.2, which is different than LG's 4.1.2, which is different than Motorola's 4.1.2, etc. Android is open source; device manufacturers and ROM modders can and do tweak the innards. Whether those differences matter for your situation, I cannot say, because you have not explained what your specific problem is.
Can you install ANY stock version of Android on ANY android device?
No.
Or are their restrictions/compatibility issues that limit your options?
Drivers, for one.
However, I discovered that google doesn't provide an image that goes back to 4.1.2 for this device.
Among other reasons, that device never had 4.1.2 on it. It initially shipped with Android 4.3 (or some patchlevel of 4.3).
TL;DR: No.
Longer answer: Android OS consists of several different "layers" (or "facets" is a better word?). These include, but are not limited to...
Linux kernel, under GPL
Android Open Source Project, under Apache/MIT
Hardware drivers, mix of open source and proprietary
Proprietary Google apps (Google Play, Gmail, Google Maps, etc.), proprietary
In order for a specific version of Android to be built for a particular device, the OEM has to potentially license specific drivers for some of the hardware components, like for example camera or Bluetooth chip used in the phone. These licenses cost money, and since most OEMs operate on very thin margins, they don't bother to license these for distribution in any other form than as part of a whole system package. This precludes the OEM from offering a download version of these apps and drivers so you could build your own version of the Android Open Source Project for their devices.
At the same time, a big part of releasing a device is going through Google's certification process (part of the Google license). This is time, effort, and money costly process, so OEMs try to minimize the number of system images they produce that need to go through it. This typically is done only for the version of Android the device is shipping with, and maybe one or two versions after that, if the device is incredibly successful, and there are millions of it sold, and the OEM feels generously and is willing to update the OS. Most OEMs couldn't care less though.
In addition, the device also has to go through carrier certification, which is yet another time, effort, and money consuming process. This is an additional incentive for the OEM to not care about producing additional system images, since Google and carriers are the only ones that really continue to monetize the user, and anything done past the device sale is a sunk cost for the OEM.
Specifics: In particular, the issue with the Nexus 7 is that Google has never produced 4.1 system images for it. And in general, Google has never produced backported images for any of their development devices.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 6 years ago.
Improve this question
Im developing an Android app and I would like to test it on a real device so that I'd like to get a phone, on which a different version of Android can be installed, upgraded and downgraded.
Which phone can run most of Android versions? How should I choose it ?
Thank you.
[This answer applies to official Google releases of the Android software, not to alternate distros like Cyanogen.]
There are very few devices that even support more than one or two versions of the Android system. Carriers and OEMs seem reluctant to upgrade devices at all, and when devices do receive major upgrades, they rarely get more than one.
Of course, Android is open source, so you can build whatever version you want, right? Not really. Although the base OS is open source, OEMs have no obligation to release the actual source used to build the kernel and userland for any particular device. With a closed-source device, upgrading is out of the question. The best you can hope for is a downgrade, if you can find the right binaries.
As one commenter noted, Nexus devices are in general a good choice. They are usually supported for at least three OS revisions, and can be upgraded and downgraded easily. With few exceptions, they run 100% open source software.
If you're willing to get your hands dirty, the device that supports the most versions is the Panda board, which for many years was the standard test board for the Android Open Source Project. It was recently replaced by the HiKey board, which is more powerful and less expensive. If you don't mind building a device out of raw components, the combination of a HiKey and a Panda will cost less than a single Nexus device and likely remain valid for years to come.
I recommend you to go with the emulators but if you want a real device you should test on a Nexus device, but even nexus devices can't cover all the platforms
You can find most of the Android official versions here
Also you can find custom ROMs for different phones here
Note
Even if you flash ROMs on some devices, you still might get into different issues on different platforms because Android is customized by each phone manufacturers. For example, the Android that runs on the Nexus devices is the official Google version, but is different than the one that runs on a Samsung, HTC, Sony, etc.
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 6 years ago.
Improve this question
I'm in the market for a basic Android device. My main reason for buying one is for learning to develop mobile apps. While the Eclipse IDE offers a virtual Android device for testing apps, it's not the same thing as a real Android device and won't put me on the same wavelength as Android device users. (The most obvious example: Visibility is poorer in a bright outdoor environment than indoors.)
Some questions:
Is a tablet PC the type of device I should get? I get the impression that it's more versatile than other devices. I don't need a smartphone, because my dumbphone works well for me, and I don't even use it that much. And I HATE the idea of being locked into a specific wireless provider. I'm not interested in ebooks, because I still like books on paper better.
Should I get a device with Android 2.3 or 4.0? On the one hand, over 90% of current Android users are using version 2.3.3 or earlier. On the other hand, 4.0 is better and will be gaining market share. (Would buying an Android 2.3 device now and buying an Android 4.0 device later be my best bet?)
In addition to wifi, what else should I look for?
Are there any brands/models I should avoid? I remember hearing that the Packard Bell PCs were the most unreliable. The Yugo was a terrible value. (An old Oldsmobile Cutlass clunker was a better value - at least as reliable but MUCH cheaper to buy.)
Is there any point in buying used? The listings on Ebay and Google Shopping don't show the used tablet PCs to be that much cheaper than new ones, and there are more new tablets than used ones available.
Ebay listings currently (5-23-2012) show over 200 Android 2.3 tablets selling for $55-$90:
http://www.ebay.com/sch/iPads-Tablets-eBook-Readers-/171485/i.html?Operating%2520System=Android%25202%252E3%252Ex%2520Gingerbread&LH_BIN=1&Internet%2520Connectivity=Wi%252DFi%7CWi%252DFi%2520%252B%25203G%7CWi%252DFi%2520%252B%25204G&_nkw=android+2.3&_dmpt=US_Tablets&rt=nc&LH_ItemCondition=1000
Ebay listings currently (5-23-2012) show over 200 Android 4.0 tablets selling for $83-$107:
http://www.ebay.com/sch/iPads-Tablets-eBook-Readers-/171485/i.html?Operating%2520System=Android%25204%252Ex%2520Ice%2520Cream%2520Sandwich&LH_BIN=1&LH_ItemCondition=1000&Type=Tablet&_pppn=r1&_dmpt=US_Tablets&Internet%2520Connectivity=Wi%252DFi%7CWi%252DFi%2520%252B%25203G%7CWi%252DFi%2520%252B%25204G
What do you think?
This question is probably off topic.
But here are my thoughts:
If you want to develop the truth is you should try to have access (be it ownership or just access) to any devices that you intend to support with your applications. This is certainly not possible for everyone, but there are ways that you can maximize your value while building a device collection by aiming to hit the largest swath of different types of devices.
You have no obligation to be locked into a contract (or even any service) for a telephone. If you go to a carrier store you can purchase a device at full price and leave the store without activating any service on it (In general, subject to change at the whim of whatever store you are in =) If you intend to by a phone for full price expect the range of prices to be $380-$600. From what I can tell about your situation I would think that a phone is best route for you to start off with. In addition to being able to buy from a carrier, Google also from time to time directly sells a "Nexus" device which is released with stock(ish) android OS (no skins etc..) The current device in this line is the Galaxy Nexus which is being sold directly through the (former) Android Market That is a good choice because it is more or less the latest generation of hardware, and the newest OS (these Nexus devices tend to receive their OS updates in a more timely manner than carrier tied devices). In fact the first Nexus device was marketed heavily toward developers, this line of phones was meant to be used for development.
Is a tablet PC the type of device I should get?
If you intend to create applications for tablets then yes. If you intend to develop phone applications you should really be testing on a phone.
Should I get a device with Android 2.3 or 4.0?
Ideally both on different devices. If you must pick one, then it depends on your budget 4.0 is only on the newest devices right now so they are likely going to be more expensive than some of the devices you can find with 2.3. (although $399 for the Galaxy Nexus might be hard to beat in price, even for some of the 2.3 devices for sale)
In addition to wifi, what else should I look for?
On phones that can be readily purchased in the US your choices are basically boiled down to only a few things. Screen Size (anywhere from tiny to pretty damn big for a phone), HardwareKeyboard(in a few different shapes and sizes), Camera (if you care about it). In general most of the other features are fairly standard (i.e. bluetooth, gps, accelerometer, etc..) The other thing to consider would be "Oomph", despite being called phones what people are carrying around today are small computers. They have CPU, GPU and RAM just the same as PCs. Battery life is the last major divisor, there is a fairly wide range of battery life expectancy (hint, massive screen and multiple cores need lots of battery). However since you don't seem to want to use this device as your phone some of this stuff may not matter as much to you.
Are there any brands/models I should avoid?
Anything in the list of your first ebay link. In general (in the US) the major phone manufactures are: HTC, Motorola, Sony, LG, Samsung. There are many other devices out there that are nice as well. But these guys are generally the ones consistently pumping out the most used phones. Idealy you should aim for a spread of device's made by different manufacturers. The custom skins and addons they like to use in their versions of the OS tend to like extra testing. Having one of each will help you help the largest chunk of your users.
Is there any point in buying used?
There are good deals to be had on nice but slightly dated phones. If you don't know what you are looking at I'd stay away though, it could be easy to get ripped off.
Well it does not seem like you need a very expensive device. Guess you could buy Google's and Samsung's old Nexus S which is not the newest around but still has android 4 because it's Google's "offcial" or something. And since it rolled out with 2.3, you should be able to download the old version somewhere and flash it. That phone should be cheaper, especially second-hand.
I mean since there are so many devices with different screen sizes and all you can't really find one that will reveal what other device-users will think of your apps.
Carrier options should be a non-issue for development. You can buy any Android phone for any
carrier including unlocked, and that should not affect your development flexibility.
Get the lowest version you can have. 2.3 and 2.2 have the most market shares right now. There is no reason to get 4.0, unless you are developing specifically for Android OS 4.0 and above (meaning that you actually use API that only exist on 4.0 and above and not lower).
Your development platform also affects what phone model to use. If you use Windows, get a phone that comes with Windows drivers. It'd be a bummer to buy one only to find out that Windows can't detect it. Mac and Linux do not need drivers, as they are both UNIX based.
You should get a phone. If you don't want to use it you don't have to... but most likely the majority of your users will be on a device. If you want a device that is always up to date and is great for testing I recommend the Galaxy Nexus.
Since most Android phone users are not on the most up to date os version, I prefer testing on a phone with 2.3
If you temporarily need a phone to test your app, Sony Mobile developer program has a phone loaner program in US and Canada where you can borrow a device for up to 30 days.
http://developer.sonymobile.com/wportal/devworld/phones/borrow-a-phone
/Magnus E
Sony Mobile
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'm going to be writing my Android app soon, and thinking about buying a solid android device to develop on and play with. My question is for you guys, assuming you wanted to develop and test your app on an Adroid device, what would you recommend?
Samsung Galaxy looks promising, but I know choosing a good dev phone is one of those things you definitely need to choose wisely on. The Android device landscape seems to be broadening every day, so it'd be good to hear about the latest devices for developing. Perhaps I could just get a cheap clunker and it won't make a difference?
I'm sort of a nerd, so if the device is pricey, but has some cool features that others don't, then I'd still consider it. However, I don't want to waste too much money on features that I may not need (or that may distract me ;)), like HD video, although it looks like a lot of phones have HD support anyways.
Tablets seem a bit much, but I'm still open to it... if you're loving your Android tablet for developing, let me know about it. I could see some benefits like being sure my app will run on Android tablets and different resolutions.
Any caveats I should be worried about? I have a buddy who was developing Android when it first came out and I remember him complaining that he could never update his device, since the updates were always restricted for some reason. Is that still the case?
If you can speak to any of these points, I'd be happy to hear them.
Also concerned about using the location based stuff, like gps, will I need a contract?
I'll be developing on my Macbook Air OSX, if you have any additional input as far as devices go, and using a Mac, that would be great too. Thanks!
You should develop against the Android 4 platform, but during the course of development, you will figure out which APIs you are using. The level of APIs you are using determines which minimal OS you will support. There's 2 manifest settings in play here: target API (15 aka ICS), and minimal API (depends on what you use).
To get a good mix of API support and broad coverage in the consumer market (using the dashboard that #Basic pointed to), I tend to point people at API level 8, which is Android 2.2 (aka Froyo). You'll hit roughly 93% of people out there and you'll get the APIs you need for most development. If you know you need newer APIs, by all means use them. The world will catch up, it may just take some time.
I typically point people to get a Nexus phone or XOOM tablet. You need the reference design so you can stay on top of the official releases from Google as quickly as they come out. The AOSP builds are important to follow, but they aren't the only game in town. After that, if you want to be serious about it, you should pick up one phone each from the major OEMs so you can deal with the differences in the customized platforms (Sense, Blur, Touchwiz, etc.)
Disclaimer: I work for Motorola. MOTODEV Studio is my teams' product (thanks Basic!)
Samsung Galaxy Nexus, Good because it is a phone that is supported directly from Google.
Samsung Galaxy S2, it just has all the features you need
One of those two for spec heavy phones, but you also need a cheaper not so good phone so you can get both ends of the device range, so get something like a IDEOS as well.
All you need to remember is that there is never going to be just one type of device being used, there are hundreds, if you have a phone thats close to the bottom and your app works almost as well as a phone as the top it will be good, because you will be able to catch the whole range of customers.
Also for location based things all you need to do is put permissions in the android manifest and it should be good, users are notified about these when they download the application
Mac can be good for development, its supported by Android as well so I dont think you will have a problem, when I went to the Android devs lab it seemed to be that all the Google guys had macs anyway
It depends what you want to support. There's a whole spectrum from the HTC Wildfire up to Galaxy S2 / HTC One.
What versions of Android are you going to target? Some people are still on 1.5!
Regarding updates: Google releases updates at their own speed. The problem is that before that update reaches a given device, the carrier usually customises it to include branding, mandatory aspps, etc... Which can take an indeterminate length of time or may not happen at all. This was one huge benefit of the Nexus One - it wasn't branded so updates were available as soon as they were released.
Regarding Development: eclipse is available for almost every platform and is a great starting place. MOTODev Studio is based on eclipse and is excellent as it comes with templates, pre-configured emulators, etc...
Location Services: Android uses 3 approaches to get your location: GPS (Works poorly indoors, can be slow to get a fix, quite a battery hog), Wifi (Google have mapped the location of a lot of wifi networks - thus if it can see a known wifi network, it knows roughly where it is) and finally network (It knows the location of the cell tower(s) your phone is talking to).
None of the above needs a contract but Wifi requires an internet connection (to perform the lookup) and Network obviously requires your phone to be in range of and allowed to talk to a cell tower - which usually just means getting a sim for a network which covers your area.
Note that when getting location on the device, you can opt to have coarse of fine-grained location information. Coarse doesn't fire up the GPS (They also require different permissions)
See this page for more info about location
Personally, I would recommend the Toshiba Thrive 10.1 Inch Android Tablet.
It has:
1 GHz Nvidia Tegra
1 GB RAM
Full Size USB Port
Full Size SD Card Slot
Full Size HDMI Port
Mini USB Port
Can be upgraded from Android 3.1 to 3.2 or 4.0
And it usually only costs about $200-250 depending on how much memory you want.
I've recently purchased Samsung Galaxy Android phone after using Openmoko phone for 2 years.
One of the reasons for choosing Android was is that it's open sourced.
I don't want to depend on phone maker to provide updates for my phone. I'd like to do it myself.
Right now I'm in research stage if it's worth the time or not. So here are the questions:
I found some tutorials for building ROM images from source. They tell that Android build script will ask for make of the phone before building kernel. Does it mean that all the phone specific stuff is handled by the script or I will have to do some voodoo before I can flash it onto my phone?
Drivers. How are they handled? Are they included in the source as binaries and added automatically (question 1) or will I have to dissect old firmware to get them and put in my build? I realize that would mean some problems with module/kernel versions compatibility.
Is there is something I'm not aware of that would prevent me from building my custom firmware or make it very time-consuming?
I'm not afraid of installing SDK's and toolchains, after all I'm an Openmoko owner.
It's gonna be a little more complicated than that.
On any consumer Android phones I've seen, the user doesn't have root access to the OS. So step one, would be finding an exploit to get root.
Even after you get root, all consumer Android phones "lock" the bootloader to prevent unauthorized OS images from being booted.
The Android OpenSource project only contains device drivers for a small number of phones (Google dev phones, possibly the Nexus One?). For other phones, the drivers are proprietary binaries that the manufacturer loads on the phone. They generally aren't available separately.
Even with all of those obstacles, some enterprising smart guys have managed to create custom "ROM's" that blend the OpenSource release with drivers ripped OEM install on the phone, etc. CyanogenMod is one of the best known and is available for several different Android devices, but unfortunately the Samsung Galaxy does not currently appear to be one of the device supported by Cyanogen.
I found an old link here to a guide to getting root on the Galaxy and loading a custom ROM on it, but unfortunately the ROM they link to doesn't seem to be actively maintained anymore. It might be worth doing some more exhaustive google searches to see if you can find anyone doing active development on the Galaxy.
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've been intrigued by all the android world since I first learned about it and would like to get my hands dirty developing for it. The question that comes to mind is if it's worth buying the unlocked phones that Android sells directly or not.
Those phones (link) quoting the Android page:
Run and debug your Android™
applications directly on a device.
Modify and rebuild the Android
operating system, and flash it onto a
phone. The Android Dev Phone 1 is
carrier independent, and available for
purchase by any developer registered
with Android Market™.
Please note that this device is
intended for development purposes, and
may not include certain features found
on consumer Android devices.
So will it be worth it to purchase one of those as a tool for app testing as opposed to developing and testing just on Eclipse or one of the other IDEs and emulators.
-Have you tried it, do you own one?
I'm assuming they have the same specs as the HTC Dream and the HTC Magic, since they look exactly the same although they have a 'developers edition' custom black design not that I really care about the design for this particular item.
All comments are welcomed,
Thanks in advance.
Update:
I'll leave it open until tomorrow to see if there are any more answers, then I'll just pick the most voted since it's really a subjective question with no good or bad answer.
It depends what sort of applications you wish to develop. I find that the emulators very accurately reflect how things work on genuine devices; you can seamlessly connect to either an emulator or a dev phone using the command line tools, the Eclipse tools, the debugger etc.
Also, while you can flash your dev phone to a new OS version, HTC often lag behind (e.g. there's still no 2.0 image available) and it's much easier and faster to just use the emulators. The emulators also allow you to create and test with different screen resolutions, whereas the two dev phones available are only "standard" resolution.
I find it's quite rare that I need to use my ADP1 dev phone for development -- my rooted consumer HTC Hero works fine for most of the development I do.. allowing me to pull files from the device etc. Though the only reason I use my Hero rather than an emulator is because I've been working on an app that uses audio recording functionality.
However, where having a physical device would help is where you need to do specific stuff regarding the camera, audio hardware, orientation and compass sensors, GPS, wireless network access and so on. Should you need to connect a debugger to work on hardware-related issues like the above, then you would definitely need a dev phone.
Overall, it's definitely worth buying an Android phone for testing and demonstration purposes, but whether it's a development phone is up to your requirements.
If you plan on developing apps that you intend to put on the Android marketplace, it's absolutely critical to test on real hardware. You can get away with developing on the emulator for quite a while, but at some point, you'll want to use a real device.
That being said, you can use any android phone for development. There are some restrictions on locked devices, but if you're simply developing against the SDK, any phone will work. With android, you can install an apk directly on the phone without special permissions, so the only real advantage to a dev phone is that you can install new roms without having to root the phone.
Personally, I'd hold off on purchasing one of the older dev phones. From what I understand, they only support up to SDK 1.6, whereas the Droid and some of the other new phones are supporting SDK 2.0 ++.
Wait for the release of the Nexus One from G. The latest rumors are that it'll be released on Jan 5th. So it's just a week or so.
I think that you need a real android device whether it's the dev phone or another handset but a real phone is primordial. The emulator is great but you can't get an idea about the execution speed of your app until you use it on a real phone.
As said before there are a lot of rumors about the nexus one so wait and see!
As for which phone to buy (assuming you're going to get one) I think ablerman is right. I'd wait until January to see if there is going to be some new hardware available.
With regards to the more general question of should you buy one, I think it depends on what you're doing. For the most part, the emulators are fine. They can emulate GPS (you can even load KML to simulate a path), SMS, phone calls, etc. They cannot however emulate acclerometer/compass/orientation sensor data and actually will crash (actually I believe it hangs...) if you try to run code that relies on it. Also, it's difficult to actually debug phone-call related functionality without the dev phone.
They're good phones, I've used the Dev phone 1 (the G1/Dream) and it's nice. It also is a bit faster than the emulators and if you're writing something like a game, it would be really good to test it on the actual hardware.
All in all, it just depends on what you're writing. They're definitely fun to play with regardless as you can do pretty much ANYTHING you want on them.
Good luck with the decision!
I've been developing with the emulator since June. I've found it to be a very near substitute for the real deal, and it's easier to switch between handset configurations/versions. However, not knowing how quickly my apps will run is a concern for me.
The reason I've personally held off buying a handset is that 2009 was the wrong year to buy one. I have a feeling 2010 will very much be the long-awaited "Year of the Android".
+1 to Christopher and I will add - the emulators are great but having a physical phone will give you instant access to the Android Market to verify publishing, statistics and user comments. I also believe using your own app on a physical phone will help you to develop a better app. You do not need a development phone - but at least one physical phone - absolutly.
FYI. Belgium is one of the few countries where it is possible to buy any mobile unlocked. Indeed, the Belgian regulators forbid the forced bundling.
One more Pros for buying a real developer phone :
HierarchyViewer does not work on user builds (i.e. with devices
available in stores.) This is for security reasons.
See the original thread
Hierarchy viewer can be very useful if you have problems with layout being slow, although I don't think it would worth buying a real Developer phone only for this.
As some people made workaround for that problem : https://stackoverflow.com/a/7801475/62921.