Today I ran into a small problem that might happen sometimes : trying to benefit from a 2 day-only offer to download for free Duke Nukem 3d (just for fun, I don’t think it’s going to be the killer app this year ;-), I found out that my phone had not enough free memory to install it (Market told me : 56MB required).
After having removed several apps from the memory to free enough space to install the game - and after a first failed attempt to download the 28MB archive - I was able to download the .apk from the Market (that was “phase 1 : download”).
Immediately after the file was downloaded, I started up my Open Advanced Task Killer to free more memory for the installation process.
Unfortunately I got the very bad idea to kill the Android Market process, while it was already installing the app (“phase 2 : installation”).
From there, even though Duke Nukem 3d was listed in my installed apps, I only had the option to install it, not to launch nor uninstall it. Even launching the Market again was not triggering the installation anymore.
Luckily, after a short introspection into the SD card and device filesystem, I was able to get the downloaded .apk file and start the app without using more (of my limited) bandwith.
Here is what I could observe :
- the original downloaded .apk was stored as
/cache/downloadfile-2.apk, and fully functional
- there was
/data/app/com.machineworksnorthwest.duke3d.zip, probably interrupted reconstruction or copy of the apk into its final destination And the procedure I used to get it working (type the given commands) :
adb shell(adb is a command from the Android sdk, which is therefore required)
su(root access is required, look for it on xda forums)
cat /cache/downloadfile-2.apk > /sdcard/com.machineworksnorthwest.duke3d.apk(this simply copies from cache to SD card)
- Finally, use any file browser like Astro to go to the root of the SD card and click on the .apk to uninstall/install/start it
I didn’t look for more details, as I already got what I wanted, but this event made me curious about the internals of the Android Market app, and I might come back later to add more to this article…