Usually Android updates are distributed to devices by device manufacturers since they need to adjust the patches they get from Google to their tweaked interfaces/drivers.
Is it same with Android "Vanilla" OS or do the devices with those versions get updates straight from Google servers without manufacturer's interference?
Let's say my phone's manufacturer goes bankrupt. Will I still get automatic updates to my Vanilla Android 5.1? Or even OS upgrades (5 -> 6)? Or is the device doomed to be outdated from then on?
If you are using a "google phone", nexus or pixel, then you can get the OTA update from Google. Otherwise the update will come from the manufacturer to the carrier and then to you. Are you using a non-google phone with Vanilla Android? If so, did you install the OS on your own?
Related
I was just curious to know few basic behavior of the google play-store.
Tried to find the answers of below questions:
1) If my phone network is switched from cellular to WI-FI while i am downloading an app from the play-
store. How google manages the connection as it resumes the download from where it stopped, because as
far as i know the IP address will change and TCP connection restarts the session.
2) What are the detailed steps involved right from requesting for an app from play-store till it is
installed in our device. I mean what are the factors of the device google crosschecks, for instance,
if the minimum version of the app is 7.0 and i have a device of 6.0, will the .apk gets downloaded and
then the version is verified or it is verified before the download starts.
Couldn't able to find a document on these. Please share if you have one.
Regarding 2)
The Play Store won't offer you an app for download if your phone doesn't meet it's requirements. This means you won't be able to download the app via the play store if:
Your phone doesn't meet the required minimum android version
Your phone doesn't support one of the features that are marked with uses-feature required="true" in the manifest (see reference)
e.g. NFC, camera
The vendor explicitly excluded your phone from the list of supported devices
e.g. some Samsung apps are only available for Samsung smartphones, like Gear 360 app. Some games are only available for Nvidia Shield like Half Life 2
The vendor doesn't release the app in your region
We are the software development department of a company that makes industrial equipment and we have some Samsung Galaxy-Tab 4 tablets that we use as "remote controls" for the manufacturing equipment, using an app we wrote ourselves for the purpose and installed directly from Android Studio. This app is not distributed to other devices. We bought these tablets online, right out of the box from Samsung, i.e., there is no phone company or common carrier involved. These tablets are not registered with Google, i.e., there is no gmail account associated with them; in fact we can't even access Google Play with them. I unboxed these tablets myself and never registered them with with Google or Samsung.
So I was surprised when I came in this morning and saw a notice on the screen of one that a scheduled software update has been downloaded and was ready to go. It says it's 876.87 MB and it wants to do an OS upgrade to Lollipop.
I have no idea where the upgrade is coming from or how it's initiated. My concern is that if this happens at a customer site or trade show an unexpected upgrade could break our software or cause other mischief. Is there a way I can programmatically disable software upgrades?
As an app developer, no you cannot control firmware upgrades. They come from either the carrier, or if it's a wi-fi tablet, the manufacturer.
Your only option is to control the firmware. That means building your own firmware dist of Android for your chosen hardware. You can then disable (or otherwise control) the firmware update schedule / process my making changes in the firmware.
Owning the firmware is a very big deal compared to deploying an app.
I was surprised when I came in this morning and saw a notice on the screen of one that a scheduled software update
as a software developer I cannot understand your surprise. It's a very well known (and often criticise feature due to slow/delayed roll out) feature of the OS
I have no idea where the upgrade is coming from or how it's initiated
Those come from the device manufacturer (you said Samsung, right?) and do not need a login or account of any type. It's coded somewhere deep inside the OS to check the manufacturer server for updates. Same that happens with Windows, Mac OS, Linux or iOS.
There is absolutely nothing an app can do to disable the OS update from an API point of view. This would be a major security flaw. One can easily imagine a malicious app exploiting a known OS vulnerability and blocking the OS from update itself that would patch the vulnerability.
possible solutions for your case
Apart from creating your own custom OS to control the process the only possible way that I can think of, is to host your own VPN server that blocks the update server (or blocks the whole internet expect the resources you want to access from your app) and configure the device to this VPN under Settings -> WiFi.
ps.: I saw the mentioned link and I would advise against disabling system services (or at least test A LOT after you diable it) because that could cause other issues.
I wish to test my Android application against different versions of the Android OS on physical hardware. The need comes from testing interactions of my program with 3rd party hardware (barcode scanners).
In order to "switch" between Android OSs, I assume in order to "reimage" my phone, that I will have to root the phone then set the particular OS version with various images.
There seems to be much discussion on how to root the phones, however I'm curious if there is a easy/standard way to do this for developers (e.g. standard hardware which allows for this process to happen quickly/easily)? If not, how can I proceed?
Unfortunately, other than rooting your phone and flashing it w/ various OSs, you don't have a lot of options. My company keeps a tone of devices on hand running various different versions of android to address this exact challenge.
Otherwise, there are services out there that may be of help to you. Take a look at these:
http://www.deviceanywhere.com/
http://www.perfectomobile.com/
I'm sure there are others as well.
If it is just a testing of release candidate (not your BAU testing development), you may publish your app on Google Play as closed beta and then ask your friends (or some other community you trust) to play with the app.
My company makes a tablet Android app to control an industrial process. We had been using a Galaxy Tab 10.1, but as that's no longer available in the US we're evaluating the Galaxy Tab 2 10.1, running 4.03. We ship the tablet pre-installed with our app, and the app is carefully tested with the version of Android software running on the tablet.
As I was setting up one of the new tablets the setup wizard put up a message saying "You agree that your tablet may receive and install updates from Google" It wasn't asking me, it was telling me; there was no place to say "no" or disagree. Auto update is DISabled in settings.
How can I programmatically prevent a force-feed update to the tablet? Our users are connected to a local area net because the tablets are used to control other industrial products, but there is never any need to connect to the web beyond the factory walls, but we have no way to enforce that on our customers. The risk is that Google could force a change onto the tablet that might break our app.
Thanks in advance.
How can I programmatically prevent a force-feed update to the tablet?
Build your own firmware and use that rather than the stock firmware.
The risk is that Google could force a change onto the tablet that might break our app.
The risk of blocking the firmware updates is that Samsung (not Google) could deliver an update to the tablet that fixes flaws in the firmware that your customers would appreciate (e.g., better WiFi connectivity).
Please understand that the devices that you are using are consumer devices. Such devices are not intended for use "to control an industrial process". The expectation is that if you are using Android in such settings, that you would source your own device and have control over your firmware. Alas, there is not a whole lot of support for that at the moment, something I blogged about recently.
As long as you target your desired API, an update to the system should not break any functionality of your app. To answer your question, you cannot programatically disable automatic updates, it is a user function.
Check this link as well: Programatically enable/disable market auto-update
My boss recently gave me an HTC Wildfire phone for doing an Android version of one of our mobile apps, which is all fine and good, except that the app requires API level 8 (ie Android 2.2), and the phone itself only has Android 2.1 installed. After much googling, I discovered that this phone does support Android 2.2, and carriers will be rolling out updates over the air for this model phone "in the near future".
Since I'm not entirely certain what our lazy carrier's definition of "near future" is, it would be nice if I could download images for particular releases and install them on my phone. Coming from the world of the iPhone, it seems that this should be something rather necessary in order to successfully develop an Android app.
Yet, it doesn't seem that Google offers any Android OS updates themselves. Have I no choice but to wait for the carrier to release an update?
Edit: Thanks for the suggestions regarding the emulator, but I'm asking about testing on hardware only. I already have a working 2.2 emulator image, but I need to test on hardware now, since the emulator does a very poor job of things like video playback and audio processing.
There's a few ways you can test your application on Android 2.2:
1) You can use the Emulator provided by Google in the SDK. It is possible to create a virtual machine of any version of Android with various hardware options. However, the emulator does have some limitations such as not supporting certain hardware options (such as bluetooth) and it's also dreadfully slow to boot.
2) If you have to use an actual phone with 2.2, you can root your phone and flash a custom ROM. I'm not particularly familiar with how to root the Wildfire, or what custom ROMs are available for that specific phone, but Cyanogen Mod has pretty good ROM support for HTC phones, as well as an active forum with tutorials.
No, it's not possible to download images before OTA. You could check CyanogemMod from time to time - they're working on Wildfire support. Also you could use an emulator.
If you are wanting to bounce around with newer versions, I recommend the Nexus One as a dev phone if you can get your hands on one. Or, if you can deal with the constraints, start with a built-in AVD emulator with API 8 until your phone gets the OTA update.
The Motorola Droid is also getting/has 2.2 on it. At least in the States, in seems that most of the phones on Verizon already have it (non-scientific, just from talking to people I know). So if that phone is available, it may be a decent choice.