Google
Showing posts with label Android. Show all posts
Showing posts with label Android. Show all posts

2012-07-20

Upgrading Android Nexus S to Jelly Bean 4.1.1

It's been quite a while since I embarked on getting my Nexus S upgrade to ICS early. I blogged that journey here. For the last 1.5 months I am carrying both my Nexus S and an iPhone 4S, and frankly I prefer using iPhone for battery life if not for anything else. My favorite activity on Nexus S is tethering my iPad Wi-Fi during my work commute. Anyway, iPhone 4S vs Android 4.x Nexus S discussion is for another day.

Today, Google released 4.1.1 for Nexus S (T-Mobile) and it's officially available if you want to download the binaries: http://android.clients.google.com/packages/ota/google_crespo/9ZGgDXDi.zip

I downloaded the zip file and renamed it to update.zip (renaming is optional)
Then connected phone to my pc and transferred the update.zip to SD Card
Powered off the phone
Pressed Power + Volume Up keys to bring the boot menu
Selected recovery
...and wait for it...

No cigar! I got the infamous red triangle with a black  exclamation mark on a green Android picture.

Apparently, one of the updates from 4.0 to 4.0.4 changed the boot files I had for custom booting before.

Interestingly, I found out that I was able to bypass this screen if I keep on trying to press Power + Volume UP key a couple of times (usually the 3rd was the charm).

I then got into the recovery mode where I was presented with the option I was looking for:
"apply update from /sdcard" (to select the option use Power button. Volume up/down to go up/down)

After selecting update.zip, install started and ...



-- Install /sdcard ...
Finding update package...
Opening update package...
Verifying update package...
Installing update...
Verifying current system...
assert failed: apply_patch_space(16570800)
E:Error in /tmp/sideload/package.zip
(Status 7)
Installation aborted.

failed :(

At this point, I thought I might be low on sdcard space and perhaps that was causing this issue. I did some clean up and free space jumped up from 700MB to 5GB. Unfortunately, the next attempt did not result in anything different.

So tried a couple of other options, all failed:

  • Wiped cache partition... 
  • Wiped cache partition + Wiped data/factory reset (which means you lose everything on the phone!)...
  • Wiped SDCard...


At this point, I started looking at Nexus S XDA forums. People suggested using ClockWorkMod to patch. I used it before, it's a great tool but instead I chose to use this trick to get official OTA update from Google. Steps (I changed the order a bit) are as follows:


  1. System settings
  2. Apps > All (If "all" is not displayed, pull the top bar that reads "running" to the left)
  3. Google-Service-Framework
  4. Force stop
  5. Clear Data
  6. Go to Homescreen
  7. System settings
  8. About Phone
  9. System updates (last time of update checking should be before 1970)
  10. Check now
  11. if you do not get the update, go to step 1.


After the second try I got offered the update. Rest, as they say, is history:





I am dying to try this trick, which is clearly quite harmless, on my wife's nexus S but she explicitly prohibited me from installing Jelly Bean / 4.1.1 until I confirm that it had been working without any hiccups on my phone for about a week :)

Now it's time check out  Highlights and read what's new?

2011-11-08

Installing Android 4.0 on Nexus S

The latest version of Android, Ice Cream Sandwich (ICS), is not officially available for Nexus S yet. However, there are some talented developers who managed to use available SDK and some dump data to port ICS to Nexus S. For this post, I used Drew Garen's Beta v10 port (no longer available - 11/30/2011. See updates at the bottom of the post).

As I explained in my "On Rooting Android" post, I spent the last few days to understand a bit more about inner-workings of Android and rooting landscape. As I now have a good backup of everything I have and I tested that I can restore everything back to that point, it is time to test ICS.

ICS Installation for Nexus S is quite simple but make sure you have read the previous article and have Pre-reqs as described there:
Now you are ready to install ICS:
  • Download the latest Beta from Drew's site
  • Rename the downloaded zip file to update.zip (Optional)
  • Connect Your android via USB in USB Mass Storage Mode and copy update.zip to the root.
  • Disconnect USB Storage Mode
  • Launch ROM Manager
  • Boot into Recovery Mode
  • Wipe Dalvik Cache in Advanced Mode
  • Wipe Data/Factory Reset
  • Wipe Cache
  • Select Install from zip file and point to /sdcard/update.zip
  • Watch it do its magic.


If all goes well, you should have ICS up and running on your Nexus S in 5 mins!


This is the new boot screen. It takes about the same time it used to boot. If there is an improvement, I did not notice it. In fact, it's great that this 'beta' version is able to match Stock 2.3.6 speeds.

Once boot process finishes, you will see a welcome screen. Simply Tap "Start" to kick off Google initialization process.




Then, you can allow or disallow Google location services. Tap "Next" to continue.
At his point , you can either sign in with your Google account or create a new one.






Once the wizard is done, you are going to notice that your apps will start coming down from Android Market. As far as I can tell most of the apps came down just fine. I was however missing the apps that I had installed from Amazon Market. This of course makes sense.

The only surprise I had was about the Google Authenticator App. It did not come down and I had to download and log into it by generating an Application-Specific Password in Two-factor Authentication page.


If you are using two-factor authentication, you might want to make sure your recovery methods for two-factor authentication are still valid before diving into this process.

I've been using ICS Beta Port for a day now and apart from known issues like GPS, the only issue I noticed was the battery killing Google+ app. See the screenshot.

It basically drained the battery to half in only 5hrs. I have not yet looked into what exactly in Google+  is causing this and have not seen any other reports from testers in the related xda-developer forum.


Update: 11/30/2011

After Google released ICS source code, devs at XDA forums started working on it and porting it to different phones. Koushing Dutta, who also owns other popular apps like ClockworkMod Recovery and ROM Manager, was one of the first who came up with a build for Nexus S.

There are several ICS ports right now and many other tweaked the works of rom developers or came up with mixes of those. There are also several kernel releases at this point all available from Nexus S XDA forums here (usually under Development).

Drew Garen has also used Koushik and other's work adding his own stuff on top and his work is available from his new (blogger) site.

By the way, a few times I got  "Random Offset {some number}" when flashing roms but apparently this is NOT an error but related to a new security feature "Address Space Layout Randomization" as mentioned here.

2011-11-06

On Rooting Android

When I got my iPod Touch, I immediately started looking for methods to  root it, but never felt the need on my Android Nexus S, as I was already able to do pretty much anything including free-of-charge tethering (thank you T-mobile).

The newest Android version (v4 or Ice Cream Sandwich, a.k.a ICS),  has been announced a few weeks back and smart folks at xda forums have already managed to port the SDK version for my phone. Of course, phone needs to be rooted to flash the new rom.

Although you probably have lots of your data like your contacts backed up to Google Cloud, there is no way you can keep 'all' your data backed up at this point and rooting wipes out your device.

A couple of funny thing happened when I looked at rooting instructions. All of them tell you to make a full back up of your system, but you will be lucky if you find any instructions on what exactly to back up and how? Most of the tools mentioned want you to be rooted to begin with. It maybe possible to use Astro File Manager or 'adb pull' commands from Android SDK but the things you can do are limited 'before' you root. In fact, this is one of the reasons people root their phones because they would like to keep their 'data' when they buy a new phone (e.g. high scores in a game, or play lists in a music app...).

At this point, applications may write their data anywhere as there is no 'designated' location to keep app data and therefore there is no easy way to back that data up even if it was possible for a user to access /data folder, which is 'usually' where apps write. There is a feature request on this but as of now, no solution.

Anyway, the other funny bit is about an SDK tool named 'fastboot'. There are tons of material on web that tell you how to use it, problem is that latest SDKs do not have this tool. If you head over to Android SDK download page, you will notice that there is only a link to android-sdk_r15-windows.zip (i.e. revision 15). The last revision that had the 'fastboot' was r13 and there is no link to it.

If you are a developer, you probably know how to get older versions of SDK using SDK manager but mere mortals do not need to despair either! Here is what you can do:

Hover over the r15 link, you will notice that it is pointing to http://dl.google.com/android/android-sdk_r15-windows.zip So, to download r13, simply replace 'r15' with 'r13' in the link and you should be able to download the r13 version. Once you download it, you can extract the fastboot.exe from 'tools' folder. In the current revision, Google has moved adb.exe from 'tools' folder to 'platform-tools' folder. You might want to put this one there too.

One more thing. You need to install USB drivers on your machine. When you download SDK, you will be able to get the Google USB drivers for your device. The catch is that it won't work when you are in 'fastboot' mode (at least for Nexus S) if your windows is 64bit. You will then need to install PDANet drivers so that your Nexus S is detected. You can find those links here. Good luck!

Btw, what do you get out of all this hassle? Here is a pretty good video from NexusHacks.

Update: 2011-11-06 - Root-ed

I finally found an easy to use hack to root my Nexus S without destroying/wiping any data (i.e. without unlocking the bootloader). I would like to emphasize this again, because I have read tons of so called 'guides' which seems to use 'rooting' and 'bootloader unlocking' interchangeably.

If you are like me, you may want to understand why do you need to do these things mentioned in the 'guides' instead of blindly following them. There is a lot of mumbo-jumbo to confuse the hell out of a regular user like myself. So, I had to look deeper into whole Android boot process and architecture to make sense of it. Hope this helps others as well.

Root - Super User
As in any other unix/linux variant, your purpose is to become the most powerful user with no restrictions on your Android. I.e. you want to become 'root' or 'super user'. That way you can install any application or even a totally new Android system (e.g. CyanogenMod). It's your device, your do whatever you like with it.

Well, you wish! Android will not just allow a regular user to become root. From a security perspective, you really would not want that anyway. Imagine any software messing with your device? Yep, that would be malware.

But you own the device and "you" want to become root! Well, you have two options:

1) You will need to find an exploit, as malware does. A hack, that elevates your privileges to become root. This is exactly what the 'zergRush Exploit' mentioned below does.

2) If there is no known hack, the other option is to go through steps in those rooting guides. Most of them will tell you that you will need to "unlock your boot loader".

Why unlock your boot loader?
Well, you are trying to become root in the Android Operating System but it does not allow you and boot loader is the software that comes "before" the (Android) Operating System. In other words, it's the initialization code that loads the (Android) OS and if you can mess with it, you can hack into that Android OS or replace it all together with a modified version perhaps.

Bootloader has two stages. The first stage of the bootloader (also referred as 'IPL' or "Initial Program Load") provides support for loading recovery images to the flash memory of the device.

If boot loader detects certain keypress (in Nexus S this would be Power button + Volume up), it goes in to a special mode called 'fastboot mode' where you can use 'recovery' option to flash a new (or old) image. From this point on you are on the second phase of the boot process. You may see acronyms like 'SPL', which means 'Secondary Program Loader' and refers to this second phase.

This is also why you usually see instructions for manually installing OTA (Over The Air) update files where you are told to drop the update.zip file in the root of sdcard, and then turn your device on while pressing 'special keys' for your phone and choose 'recovery' option. Upgrading your firmware is basically flashing a new (firmware) image.

However, we have a problem there. Usually, the boot-loader is "locked" so that it will load only recovery images that are signed by a certain authority. This might be Google or your wireless carrier.

So, if we can unlock the boot loader, then we can use a 'custom recovery image' like ClockworkMod Recovery, which allows us to install a 'custom firmware' like CyanogenMod (a.k.a CyanogenMod ROM). As these ROMs may include not only Android OS but IPL/SPL as well, there is a risk of making your phone unusable, commonly referred as 'bricking' the phone in case there is a bug in the IPL/SPL code.

Phones like my Nexus S are pure Android Devices. Wireless carrier does not install any customized software on it, it does not cripple any of the abilities and Google allows us to 'unlock' the bootloader by running a simple command:

"fastboot oem unlock"

I explained above how to get fastboot.exe. So you get that and other pre-reqs and then issue the command to unlock your boot-loader, which apparently voids your warranty and "WIPES YOUR DEVICE" including your SDCard.

In my case, I did not want that to happen without taking a full back up of the system, which was not really possible because I did not have root access. A bit of a chicken and egg problem...

Solution: Exploit to become Root
This method depends on DooMLoRD's Easy Rooting Toolkit v1.0, which is using what's called "zergRush Exploit".

The whole process took me less than a minute:


---------------------------------------------------------------

              Easy rooting toolkit (v1.0)

                   created by DooMLoRD

        using exploit zergRush (Revolutionary Team)

   Credits go to all those involved in making this possible!

---------------------------------------------------------------

 [*] This script will:

     (1) root ur device using zergRush exploit
     (2) install Busybox (1.18.4)
     (3) install SU files (3.0.5)

 [*] Before u begin:

     (1) make sure u have installed adb drivers for ur device
     (2) enable "USB DEBUGGING"
           from (Menu\Settings\Applications\Development)
     (3) enable "UNKNOWN SOURCES"
           from (Menu\Settings\Applications)
     (4) [OPTIONAL] increase screen timeout to 10 minutes
     (5) connect USB cable to PHONE and then connect to PC
     (6) skip "PC Companion Software" prompt on device

---------------------------------------------------------------

 CONFIRM ALL THE ABOVE THEN

Press any key to continue . . .
--- STARTING ----
--- WAITING FOR DEVICE
adb server is out of date.  killing...
* daemon started successfully *
--- cleaning
--- pushing zergRush"
3215 KB/s (23052 bytes in 0.007s)
--- correcting permissions
--- executing zergRush

[**] Zerg rush - Android 2.2/2.3 local root
[**] (C) 2011 Revolutionary. All rights reserved.

[**] Parts of code from Gingerbreak, (C) 2010-2011 The Android Exploid Crew.

[+] Found a GingerBread ! 0x00015118
[*] Scooting ...
[*] Sending 149 zerglings ...
[+] Zerglings found a way to enter ! 0x10
[+] Overseer found a path ! 0x000151e0
[*] Sending 149 zerglings ...
[+] Zerglings caused crash (good news): 0x40119cd4 0x0054
[*] Researching Metabolic Boost ...
[+] Speedlings on the go ! 0xafd255dd 0xafd3908f
[*] Popping 24 more zerglings
[*] Sending 173 zerglings ...

[+] Rush did it ! It's a GG, man !
[+] Killing ADB and restarting as root... enjoy!
--- WAITING FOR DEVICE TO RECONNECT
if it gets stuck over here for a long time then try:
   disconnect usb cable and reconnect it
   toggle "USB DEBUGGING" (first disable it then enable it)
--- DEVICE FOUND
--- pushing busybox
4149 KB/s (1075144 bytes in 0.253s)
--- correcting permissions
--- remounting /system
--- copying busybox to /system/xbin/
2099+1 records in
2099+1 records out
1075144 bytes transferred in 0.097 secs (11083958 bytes/sec)
--- correcting ownership
--- correcting permissions
--- installing busybox
--- pushing SU binary
1276 KB/s (22228 bytes in 0.017s)
--- correcting ownership
--- correcting permissions
--- correcting symlinks
--- pushing Superuser app
4739 KB/s (762010 bytes in 0.157s)
--- cleaning
--- rebooting
ALL DONE!!!
Press any key to continue . . .
At the end of this, you get SuperUser v3.0.5(39) installed on your Nexus S. This exploit seems to be working with many other Android phones. There is a growing list in the forum linked above. It's also easy to go back if you want to unroot.

I launched SuperUser, clicked "Preferences" and tapped "Su binary v3.0" to update it to the latest version (3.0.3 as of now). I also set "Automatic Response" to "Allow". To test:


$ PS Z:\adil\scripts\powershell> adb shell

$ su

su

# whoami

whoami

whoami: unknown uid 0



This means I have root access on my Nexus S and my bootloader is still locked! What's next?

* Install Backup Software: Now that I have 'root' access, I can now install all these 'backup software' mentioned on all those rooting sites. I installed 'Titanium Backup'. Then I took a full back up of the system to my sdcard, and then mounted the phone via usb to take back up of everything on my sdcard to my hard drive.

* Install Rom Manager: This is to be able to 'flash custom ROMs (i.e. install customized Android versions). I installed 'Rom Manager' but have not done anything else yet.

One last thing tonight... Once I became root, I was able to get more information about my system and manually create backup images as shown below

$ adb shell
$ su
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00200000 00040000 "bootloader"
mtd1: 00140000 00040000 "misc"
mtd2: 00800000 00040000 "boot"
mtd3: 00800000 00040000 "recovery"
mtd4: 1d580000 00040000 "cache"
mtd5: 00d80000 00040000 "radio"
mtd6: 006c0000 00040000 "efs"

# cat /dev/mtd/mtd2 > /sdcard/mtd2.img ## Boot image
# cat /dev/mtd/mtd3 > /sdcard/mtd3.img ## Recovery image


Then connected phone to my pc using 'USB mass storage' mode and backed up these two images to my hard drive:

robocopy /mir l:\ z:\adil\Backup\Android\sdcard\

where l: refers to sdcard drive
z: is where in hard drive I backed it up to
and  /mir makes a mirror copy of everything in the sdcard (be careful with this option, if you use it incorrectly by specifying wrong target, you may wipe out the target).

I am, however, not sure if these will be enough to get things back. See the update below for proper Backup/Restore procedures.

Update 2011-11-07 More on Back up and Rom Management

Revenge of Stock ROM
Stock ROM is the original Android Image. Below, you will find how it tries to keep its integrity.

Today I wanted to use "ROM Manager" app to take a backup. To my surprise,
"ROM Manager" > "Backup Current ROM"
got me into a black screen with a yellow exclamation mark and an android icon underneath. Apparently, "ClockworkMode Recovery" (CWM) was overridden by Stock ROM after the reboot. Boot loader had detected that it was tempered with and had restored previous version.

Reinstalling ClockworkMod Recovery
This is pretty straight forward as I still have root access on my Nexus S.
  • Launch "ROM Manager"
  • Tap "Flash ClockworkMod Recovery
  • Select "Google Nexus S"
Making ClockworkMod Recovery Stick
Once done, you get a message that says "Successfully flashed ClockworkMod Recovery". This solution is temporary. One suggested solution is to rename the file that's causing this as follows:

$ adb shell   ## Use adb Android SDK tool to open a shell (see above)
$ su          ## Become root
# mv /system/etc/install-recovery.sh /system/etc/donot_install-recovery.sh  ## rename the file

failed on '/system/etc/install-recovery.sh' - Read-only file system

Unfortunately, you get an error back. The reason is that /system partition is mounted as read-only (ro) and before you can make any changes to files under it, you will need to mount it as read-write (rw).

First, we have to find out where the /system is mounted:

# mount |grep system

/dev/block/platform/s3c-sdhci.0/by-name/system /system ext4 ro,relatime,barrier=1,data=ordered 0 0

What does this mean:
  • First block is telling us about the actual directory under which /system partion will show its data
  • Second block is what we are mounting (/system)
  • Third block is the filesystem. This used to be yaffs2 but now we see it is 'ext4'
  • Fifth block are the options and what matters for us is the 'ro' parameter telling us mount is read-only
For further reading on Android partitions, take a look at this post.

With this knowledge we will use mount command to remount /system to the same location but this time with 'rw' parameter to be able to modify its content

# mount -o remount,rw -t ext4 /dev/block/platform/s3c-sdhci.0/by-name/system /system

Now we can go ahead and make the change.


# mv /system/etc/install-recovery.sh /system/etc/donot_install-recovery.sh
# ls -l /system/etc

-rw-r--r-- root     root        58357 2011-09-30 09:06 NOTICE.html.gz
-rw-r--r-- root     root       236823 2011-09-30 09:06 apns-conf.xml
drwxr-xr-x root     root              2010-11-24 16:42 bluetooth
-rw-r--r-- root     root          682 2010-11-24 16:42 contributors.css
-r--r----- bluetooth bluetooth      935 2010-11-24 16:42 dbus.conf
drwxr-xr-x root     root              2010-11-24 16:42 dhcpcd
-rw-r--r-- root     root        11865 2011-04-29 12:18 event-log-tags
-rw-r--r-- root     root          238 2010-11-24 16:42 gps.conf
-rw-r--r-- root     root           25 2010-11-24 16:42 hosts
-r-xr-x--- root     shell        1200 2010-11-24 16:42 init.goldfish.sh
-rw-r--r-- root     root         7696 2010-11-24 16:42 media_profiles.xml
drwxr-xr-x root     root              2011-09-30 09:06 permissions
drwxr-xr-x root     root              2010-11-24 16:42 ppp
-rw-r--r-- root     root          104 2010-11-24 16:42 secomxregistry
drwxr-xr-x root     root              2011-09-30 09:06 security
drwxr-xr-x root     root              2011-04-29 12:18 updatecmds
-rw-r--r-- root     root          531 2010-11-24 16:42 vold.fstab
drwxr-xr-x root     root              2010-11-24 16:42 wifi
-r-xr--r-- root     root          415 2008-08-01 08:00 donot_install-recovery.sh


Then, we should go back to Rom Manager and flash ClockworkMod Recovery one last time and it should stick around between reboots.


Using ClockworkMod Recovery for Backup

There is a long guide here explaining various options with screenshots but it's pretty basic.

1) Manual Backup

Select "ROM Manager" > "Reboot into Recovery" (for manual management). Phone will boot into ClockworkMod Recovery console.

Use "Volume down/up" buttons to move up or down and "Power" button to select an option.

As we wanted to take a full back up, we want to choose the option that says "backup and restore"

We then choose backup option and let the tool work its magic.

In my phone, the process took about 10 minutes. There is a progress bar that gives some visual feedback and when all is done you get "Backup complete!" message at the bottom.



2) Backup via ROM Manager

This is quite straightforward as it is an option in the "ROM Manager" application.

Select "ROM Manager" > "Backup Current ROM"

Enter a backup name, or tap "OK" to accept the suggested name.

Phone boots into recovery mode and starts the back up process.

After the backup is finished, phone boots back up.

Backed up files reside under /sdcard/clockworkmod/backup/{backup_name} folder. Below is the list of files after a backup

l:\clockworkmod\backup\2011-11-07-19.41.58\
 183.4 m        .android_secure.vfat.tar
   8.0 m        boot.img
   12672        cache.yaffs2.img
 478.3 m        data.ext4.tar
     298        nandroid.md5
   8.0 m        recovery.img
 174.8 m        system.ext4.tar


Testing Restore from Backup

At the end of the day, all this effort is to be able to restore from a backup to get Android back to the original (Stock) state.

So, I booted into ClockworkMod Recovery mode and
wiped cache, 
wiped dalvik cache, 
wiped data/factory-reset...

After the reboot, Nexus S came up and kicked off Google's Welcome Wizard. I skipped it and there it was. My Nexus S as if I just bought it. The only difference was that SuperUser app was still there.

To restore everything back:

  • I installed ROM Manager from Market
  • Flashed ClockworkMod Recovery 
  • Tapped "Manage and Restore Backups"
  • Selected the latest backup (the one above)
  • Phone went into Recovery Mode and recovery started
  • After about 5 minutes, phone rebooted again
  • Android came up and everything was restored successfully as if I never wiped my phone! 
It was perfect. Well, too perfect in fact because apparently I had not renamed "/system/etc/install-recovery.sh"  before taking the latest backup. So, after the restore ClockworkMod Recovery was gone, but  it only takes a minute to get it back there.

Update: - 12/02/2011

Here is a very detailed, thoughtful article from security researcher Dan Rosenberg on "Rooting and Plagiarism". It helps put things into context.

2011-11-05

Android Market App Update

The latest Android Market App v3.3.11 brings some nice features. The most important and contentious one is the 'auto-update' feature. It used to be that you could check the 'Auto Update' box for each application but with this new feature it is possible to set all apps to Auto Update.

Some people like it, others do not. Personally, I like to look at the feature set before updating apps, so I do not set any app to auto-update. That being said, if you are in the camp who likes to keep current no matter what choosing Wi-Fi only Auto Update seems like a no-brainer.

Right now, Market app is not showing up as an update but as noted by Android Police, it's possible to download the .apk (Android  Application Package) and install it manually, if you have the right tools.

Even if you are not a developer you might want to install Android SDK and take a look at the command line tools like "adb" (Android Debug Bridge), which you can also use to generate bug reports (after installing SDK, simply go to "Android-SDK\Platform Tools" folder" under Android folder and type 'adb' to get full command line options).

There are several links to where you can download the new Market app .apk that you can find by googling. After you install SDK and download the new Market app package, you can use the 'adb' tool to install it as shown below:


C:\Program Files (x86)\Android\android-sdk\platform-tools>adb install -r c:\users\adil\downloads\Market-3.3.11.apk
5428 KB/s (3296645 bytes in 0.593s)
        pkg: /data/local/tmp/Market-3.3.11.apk
Success

Of course you will have to change C:\users\Adil\Downloads\Market-3.3.11.apk with the path to the .apk you downloaded.

It's important to use "-r" as you will already have Market app installed, and you would like to 'override' it. Help for the install command is as follows:


adb install [-l] [-r] [-s] <file> - push this package file to the device and install it
                               ('-l' means forward-lock the app)
                               ('-r' means reinstall the app, keeping its data)
                               ('-s' means install on SD card instead of internal storage)

This update also makes switching google accounts easier, if you have several (as I do). It's built right into the tool. Enjoy!

2011-04-20

Nexus S Battery Awesomeness!

In my previous post, I mentioned how upset I was with Google Maps and specifically with Latitude as it was draining battery of my Nexus S. I was fully charging the phone over night and finding the battery hitting 10% in about 8 hours even if I did not use the phone at all.


OK, here is the awesome news. After 31 hours I still have 33% left on battery!!!! Just to get the screenshots of this, I installed the JDK and Android SDK (it's a shame I had to go through all that just to get a screenshot).

I updated many apps in the last couple of days so I am not really sure what exactly caused this incredible improvement but I am hoping it will stick around.

2011-04-08

Using Latitude on Android? Bad move...

Google's Latitude has been around for a while. It only made sense for me once both my wife and I started to use Android (Google Nexus S). With Google Latitude, it was possible to keep track of each other and coordinate life events better...

Unfortunately, I noticed that my battery was going down much quicker and "Battery Used" reports were pointing to "Maps". As I was not really using maps or gps, I suspected Latitude, which is part of Google Maps suite, was the cause.

I posted a question on Google Mobile forums asking if anyone else was seeing the same issue. Only one person reported the exact same issue and also suggested to log out of latitude. Tested it and confirmed that it worked well, which makes the latitude and possibly the history feature the culprit. Filed a defect here. Hopefully, they will fix it soon, I like to be able to use it again!

2011-03-22

Amazon App Stores

As expected, Amazon announced their "App Store" today for Android, and Apple sued them for using "App Store". Meh, what's new?

Here is something I did not expect though... I visited Amazon's app store and installed a couple of apps like "Wifi Analyzer". I still use AppBrain.com to find out if there are newer versions of my apps. It always detects updates faster than Google's Android Market (i.e. Google's App Store).

AppBrain showed me that there was a newer version of "Wifi Analyzer". I clicked to install, AppBrain transferred request to Google's Android Market but installation failed. I checked the error, it was something like ~"bad signature". This is troubling because it means that if I want to have the latest version, I will either have to wait for Amazon App Store to have the updated version, or uninstall it and re-install from Google's App Store.

I guess it makes sense that if you buy an app from Amazon App Store, you cannot use Google's App Store to upgrade it. I wish this was not the case for free apps though. Maybe some day Amazon and Google will work out a deal so that user may use either App Store for upgrades.

2011-01-30

Android Google Contacts: "Other Contacts"

I bought a pair of Google Nexus S phones for my wife and myself. As I use Google for my pics, contacts, docs, e-mail etc, I love the device!  Integration to all the Google services are done by simply entering your Google account the first time you power on your Android device.

I've been spending some time on Google App Market and other app sites like AppBrain.com and AndroidTapp.com to find out the apps that I need, as well as getting tips from friends who are either Android users or know about cross-platform (i.e. Blackberry - iPhone - Android) apps.

Today, while tinkering with a cross-platform messaging app named "WhatsApp", I noticed that some of my contacts were not showing up on the phone. That seemed weird. I checked Google.com/contacts and noticed that they were  showing up under "Other Contacts" instead of "My Contacts". I have the option to move them but I do not know who else is in the "Other Contacts" category.

I wondered what caused this and upon a little google'ing, I found out that both Gmail and Picasa creates accounts under "Other Contacts". Picasa has always been problematic when it came to sync'ing with Google Contacts for me. Apparently, Picasa had a bug in v3.8 and that caused all this mess. Issue is fixed in Picasa so that it does not now keep on moving contacts to "other contacts" but the damage is done. Comparing the number of "All contacts" to "My Contacts", I figured out that I am missing about ~100 contacts. They have also been removed from the groups I had created.

If worse comes to worst, I will need to export both lists and write a PowerShell script to figure out the delta that I have to move back and regroup them. Publish Post

I love Picasa but always had two gripes with it:

  • Face Recognition is excruciatingly slow when # of pics are large(have more than 50K pics) and not so intelligent (hello, I just tagged the same person 10 times already for the pics that were taken minutes apart, do the rest please?)
  • Cannot write the tagged info into the pic (have to use a third party tool called AvPicFaceXMPTagger)

Adding to the list: I really do not need other apps to mess with my Google contacts!