A client is releasing a product (employee training/guide), and have contracted us to create a companion application for the Android OS.
Being a global entity that routinely has employees in areas without network access, they are releasing their product via CD.
They would like the ability for their users to optionally install this companion application to their personal Android devices (their own cell phones/tablets etc).
Since some will be in areas without network/internet access, they would really like the ability for an installer to be on this CD to install the Android application.
I am somewhat familiar with being able to install applications onto Android using ADB, but was under the impression this would require root.
Is there a method by which an application could be installed from a computer, in such a way that a non-tech savvy user could use it (IE classic installer application, just different target).
Don't want to be asking these people to root their devices, install ADB and so forth.
I think the ADB route is asking for trouble as you're reliant on the right drivers being present on the machine. Sometimes it'll work fine, sometimes it won't.
You could potentially provide the APK on an SD card for the phone, but there's no consistent app to use to open the APK from the phone, so that's unlikely to be any better.
Surely if they are using phones they do SOMETIMES have network access? I suspect you're going to struggle to find a nice solution, and although not ideal maybe better to just require that users install the app when they do get a connection?
Going down that route, you could provide the APK via email, a web link, Android Market, or any alternative market.
Do remember that the cost of a solution isn't just building it, but the support too. My sense is when you're looking at the possibility you might have to help users install the right driver, you need to look for a better solution as that's the road to hell.
I am somewhat familiar with being able to install applications onto Android using ADB, but was under the impression this would require root.
No.
Is there a method by which an application could be installed from a computer, in such a way that a non-tech savvy user could use it (IE classic installer application, just different target).
There is the Sideload Wonder Machine, but I haven't tried it, and it is Windows-specific. It also would still require adb-compatible drivers, which the user may or may not have installed on their Windows machine.
Otherwise, there are no network-less options at this time that I am aware of.
Well, there is still another option that nobody mentioned, which does not involve dealing with USB drivers. BTW, this is only a Windows problem, in most Linux distros ADB works out-of-the-box.
This option is through WiFi:
configure Tethering & portable hotspot
connect the computer to the hotspot
start some kind of web server on the computer (apache will do, probably microapache could be of help if using Windows)
on the phone open the URL containing the APK (the IP was given by the hotspot)
download
install
Voila !
Related
I am trying my hands on the android app development and need your suggestions to mitigate my current situation.
My organization has disabled USB for the desktop and I wouldn't be able to connect my phone through USB to test my application as I code.
I have installed genymotion but since it is behind proxy, in all the ways I could configure it, it gives proxy authentication error.
The avd is comparitively slower and the app which am trying needs internet connectivity at every step. I have tried these too and my impression is that we can make
the avd work for connecting to internet through its webbrowser but it cannot connect to internet within the apps. I might be wrong here. Please let me know if it is not the case.
Is there any other way where we can install the app in the phone as and when we code to test it..?
One option can be to export an apk file everytime and install them on the phone by sending this apk through a mail. But this will be a cumbersome activity if we have to test as and when we code.
Any suggestions on this..?
PS: I do not want to hack the desktop to enable the USB.Also using an external laptop with USB enabled is out of option in my case.
Many thanks.
Another way is using AirDroïd. You just need to install it on your test device, and you can manage it with a webapp :
your.static.ip.xx:8888
You can install your app with that way, it's really easy, you don't need any account in a local network.
For testing... no idea without usb, or without the emulator. Maybe you can log everything in a text file & get it (with airdroid for example).
EDIT
I think if you create an account you can use it external of you network.
http://web.airdroid.com/
Just create an account, & log on web & on the app, you could use it on the external way.
Why are you even bothering to use the desktop PC when your organization has made it unsuitable for development.
It will be hard work, but you could do all your development on the Android device itself, using AIDE
(Actually AIDE is pretty practical as a IDE if you have a large screen tablet, and pair it with a full size bluetooth keyboard).
Quote: "Inside your project bin folder there is an apk file. If you copy that file to a device you can then install the app from it.
When I am in your situation I throw my apk into dropbox and send out links for people to download it."
from this link
I doubt that if your company has disabled USB they still allow Bluetooth, but because you did not state it specifically:
If you can use Bluetooth, the best way would be to use it for running and debugging your App.
There are some Tutorials on the web.
For Example: http://zcourts.com/2013/07/19/android-debugging-over-bluetooth-without-root/
We want to install our application on to (thousands of)phones and these phones will be later delivered to clients. Do we have to do this manually? Is there a faster way to do this?
For example, in Windows Mobile, if you put your installation files in a certain folder on SD card and when you insert that SD card to the phone the app is installed automatically to the device. Any similar mechanism on Android?
Thanks in advance.
You can create an update.zip file on an sdcard that will install an application, but you have to boot the phone into recovery mode to run it. I haven't used update.zip this way, but I saw it here: http://www.londatiga.net/it/how-to-create-android-update-zip-package/
Unfortunately it's much more complicated and slow than the old 2577\Autorun.exe method from WindowsMobile.
Other ideas...
ADB + USB hubs: Hook up a bunch of the phones at the same time using USB hubs, run a script to find the device ids with adb devices and execute adb install your_app.apk for each one.
(Requires taking the time to enable USB debugging on each device)
Install from the web: Host the .apk publicly or locally. Now you have to pull up the URL on the phone.
(Requires taking the time to checking that checkbox for installing from unknown sources on each device)
TinyUrl: host the .apk anywhere, shrink the URL, type it into the browser.
QR Code: If the devices happen to have a QR Code Reader like Google Goggles pre-installed, you could save yourself the typing of the URL.
SMS: If all of these phones have service and you have the numbers handy, you could broadcast an SMS to all of them.
Best of luck!
Basically, yeah. See this question for details. You essentially need an army of button-pressers.
I found this:
http://www.harmonyhollow.net/android_injector.shtml
So far it is the best solution I found. I guess it uses adb behind scenes.
For some reason on Windows you need a different driver for every device to work with ADB. In Linux you just add the ID's to a file. We have been trying to figure out how to make a more universal ADB driver for windows, as we use ADB in a 2 part program that has a desktop component and an android component. We do not want to install 100 different device drivers to make sure our program works for every device, however we have Windows OS as a requirement so we can't just switch to Linux.
Why is it so simple to make ADB work on all kinds of devices on Linux (by simply adding the manu ID to a file), but on Windows we need a different device driver for every single device? What direction can we take to come up with a universal ADB driver that works for every android device on Windows as it already does on Linux?
Thanks very much, please let me know what I can do to clarify if this is unclear.
While I cannot provide a definitive answer I can offer these words that may provide some explanation:
Taken from Linux Device Drivers, 3rd Edition, O'Reilly, Chapter 1 "Classes of Devices and Modules"
The Linux way of looking at devices distinguishes between three fundamental device
types. Each module usually implements one of these types, and thus is classifiable as a
char module, a block module, or a network module. This division of modules into different types, or classes, is not a rigid one; the programmer can choose to build huge
modules implementing different drivers in a single chunk of code.
From a Linux User's point of view what this means is that very often they will find that a Linux system will very often now 'recognise' a given device without need for specific drivers, or (hopefully) at least basic OS support will automatically be provided for these devices enabling applications to use them. I'm no expert on Windows having moved to Linux after the Vista debacle (and have never looked back) but I ALWAYS remember having to load device drivers whenever I got a new device even if it were a memory stick (yet had already used other types of memory stick on the computer!)
I believe it's just the way Windows was designed but why that particular way I do not have any idea. I would assume therefore that under Linux, ADB recognises all Android devices under one device type whereas Windows cannot hence the need for numerous device drivers in Windows.
I contacted Archos and they said they don't give developer support because they use straight Android, so I am posting this question here. If someone knows of a better place, please let me know.
The company I work for is reselling the Archos 4.3 as a platform for our product. We have several APKs that we are installing in our production facility. I have some questions about different ways to do this. Can someone point me to a forum or maybe here is the place that can answer some specific questions about the Startup Wizard that can install 3rd party apps?
Our process is currently:
Connect Archos to PC
Touch screen calibration
Skip wizard
Mount as a drive on PC
Copy files to the .system/APK folder
Go to settings / recovery and turn on the startup wizard to run again
Reboot device
touch screen calibration (again)
Perform wizard including installing 3rd party apps
Now we are ready to ship
The problem is that his process takes a long time. We would like to shorten it. We did originally plan on using ADB to install our applications, but that was very unreliable. Sometimes ADB would get mixed up and we had to reboot the computer. Keep in mind we are making about 100 per day. ADB was really made for developers to debug and test and doesn't seem to be a real hardened production tool.
If we could change our process to be this:
Connect Archos to PC
Touch screen calibration
Complete wizard
Mount as drive on PC
Copy files to .system/APK
and here is the change if someone can tell me how to do it:
Just run the part of the wizard that installs 3rd party apps
Then we would be done. This would save us the reboot and having to do the touch screen calibration over again.
Does anyone know how to trigger just the process that the startup wizard uses to install 3rd party apps from the .system/apk folder?
I tried writing my own app that installs the APKs, but it makes you go through the UI of approving each app and installing them manually and that takes longer than the startup wizard. The startup wizard is somehow able to install everything in the .system/APK folder without asking the user to go through and approve each one. It assumes that since the user ran the wizard and said yes that they approve. It just shows a toast window that iterates through all of the APKs. There is also a .txt file for each APK that contains the work "shortcut" or "noshortcut" that puts a shortcut or doesn't on the home page.
Thanks....
What do you mean "part of the wizard that installs apps from the .system/apk folder"? There is no such part of that in the standard setup wizard. The closest thing I can think of is at the end of setup when you have configured your account, the restore of your installed apps from an older device. I'm also not sure what you mean by a ".system/apk" folder. Do you mean /system/app? If so, any .apks in there are automatically scanned and "installed" during the early boot of the device, well before setup wizard.
In general, currently Android is intended to be customized by building system images that are installed on devices. There are no facilities in the standard platform for automatically configuring a device without doing that by flashing an updated system image.
The stuff you are talking about installing from a .system/APK folder doesn't sound like anything that is in the standard platform. The only ways to install apps in the standard platform are through the app installer UI, through the shell with "adb install", and of course if you have the Google apps through the Market app. Manufacturers can certainly add their own customizations for installing apps other ways, though.
I am looking generally in to Android development.
I keep seeing information on root however I am unclear how this relates to general android app development.
I understand that there is an emulator however when I get to actually test the software on a phone does that phone have to be a rooted device or is this only required if you wish to edit the core features of the os?
Finally are there are any development disadvantages to rooting the device such as that is no longer behaves like other android phones I may deploy too?
Thank you
You don't need root to develop for Android.
The easiest setup is to run Eclipse with the Android Development Tools installed. Then, you can debug your application in the emulator, or register your phone with the SDK and debug directly on your phone. The only thing you need to do on your phone is check the development mode under Settings -> Applications
I can understand the allure of having a rooted device, but I can't really see a reason for changing the bootloader or os binaries. You can, however, change most of the default applications (including the Home application) with other applications available on the Market. For instance, OpenHome is about $5 and allows you to replace the home app, add themes, and replace many of the core apps (e.g. clock).
Rooting is only required, if you want to play around with advanced features or update your firmware, etc.
If you develop your software using the Android SDK you will be able to use it on your phone regularly (as long as you have the corresponding version). No rooting needed.
I have never heard of any problems according to your concerns. But I cannot deny that there are none. Though I personally don't expect that there are any problems with rooted phones.
On the Nexus S running Android 2.3, the /data folder is not visible in the DDMS File Explorer or the ADB shell, but it is visible in the emulator. This occurred with debug turned on in both the manifest and on the phone. I confirmed that debug mode was properly enabled by successfully stepping through the app using breakpoints and also by receiving messages from logcat.
Not being able to see the /data folder means that you will not be able to get your application's private data.