How to dump your Whatsapp chat messages to a csv file

Linux pc with java jdk installed (Does not work with oracle jdk).
adb in the path

First get your whatsapp database:
adb pull /sdcard/WhatsApp/Databases/msgstore.db.crypt12
Decrypt the file:
git clone
javac -classpath “lib/whatsapp_spongycastle.jar:.”
Now pull the key for whatsapp from your phone (Requires root):
adb shell
cp /data/data/com.whatsapp/files/key /sdcard
adb pull /sdcard/key
java -cp “lib/whatsapp_spongycastle.jar:.” crypt12

sqlite> .open msgstore.db
sqlite> .tables
chat_list messages_fts_content
frequents messages_fts_segdir
group_participants messages_fts_segments
group_participants_history messages_links
media_refs messages_quotes
media_streaming_sidecar messages_vcards
message_thumbnails messages_vcards_jids
messages props
messages_edits receipts
messages_fts status_list
sqlite> .schema messages
sqlite> .mode csv
sqlite> .headers on

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Preparing Ubuntu or Debian for dsixda android kitchen

You need to clone the repo:

git clone

Install java jdk:

sudo apt-get install openjdk-7-jdk

If java installation stalls, you may need to update your apt sources:

#cat /etc/apt/sources.list
deb oneiric main restricted universe
deb oneiric-updates main restricted universe
deb oneiric-security main restricted universe multiverse
deb oneiric partner
deb oneiric main restricted universe
deb oneiric-updates main restricted universe
deb oneiric-security main restricted universe multiverse
deb oneiric partner


apt-get update
sudo apt-get install openjdk-7-jdk

Install other necessary packages:

apt-get install zip build-essential

Debian squeeze apparently does not have a package for openjdk, and requires installation from source (which I havent explored yet). I found it easier to upgrade squeeze to wheezy. The latter does have the package:

The method is:

sed -i 's/squeeze/wheezy/g' /etc/apt/sources.list
apt-get update
apt-get upgrade ; apt-get dist-upgrade
apt-get install openjdk-7-jdk


You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Install Oracle Java JDK on Debian

Get the source file from Oracle.Since I used JDK 7, I visited this page and downloaded jdk-7u10-linux-i586.tar.gz (for Linux x86).

Extract it somewhere

curl -J -O -C -
mv jdk-7u10-linux-i586.tar.gz?AuthParam=1355492655_c33bc95a6d13e7345ba318a0b46bcc4a jdk-7u10-linux-i586.tar.gz
tar -xvvf jdk-7u10-linux-i586.tar.gz

Perform the installation:

sudo mv ./jdk1.7.0_10 /usr/lib/jvm/jdk1.7.0
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0/bin/javaws" 1

Now choose the correct version of the programs if you have more than installed (as is most likely the case as the OS often comes with a version, and you install another). This is to avoid the error message that states that the version of java and javac clash (or something similiar).

sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javaws


[[email protected] droidzone]# sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                            Priority   Status
  0            /usr/bin/gij-4.4                 1044      auto mode
  1            /usr/bin/gij-4.4                 1044      manual mode
* 2            /usr/lib/jvm/jdk1.7.0/bin/java   1         manual mode

Press enter to keep the current choice[*], or type selection number:

As noted, I’ve chosen the version I just installed, which is jdk1.7.0.

Depending on the versions you have installed, you may need to repeat similiarly for:

[[email protected] droidzone]# sudo update-alternatives --config javac
There is only one alternative in link group javac: /usr/lib/jvm/jdk1.7.0/bin/javac
Nothing to configure.


[[email protected] droidzone]# sudo update-alternatives --config javaws
There is only one alternative in link group javaws: /usr/lib/jvm/jdk1.7.0/bin/javaws
Nothing to configure.

You will notice that since I had only single versions of javac and javaws, I didnt need to choose another one. It may just be worthwhile to try these commands anyway.

Confirm that the version of java and javac correspond:

[[email protected] droidzone]# `which java` -version
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) Server VM (build 23.6-b04, mixed mode)

[[email protected] droidzone]# `which javac` -version
javac 1.7.0_10
[[email protected] droidzone]#


You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Installing javac for Apktool on linux

The build steps of the latest Apktool is detailed below


It uses something called gradlew to build the latest version of the binary.

The instructions are as follows:

We use gradle to build. Its pretty easy. First clone the REPO.

git clone git://
Move into the directory.

cd Apktool
Issue the build.

./gradlew build
Then look in

Other commands such as clean are

./gradlew clean

If you attempt that and dont have JDK installed, it will error out.

You need to download the latest version of the JDK available as a .tar.gz file at

I used jdk-7u9-linux-i586.tar.gz

Once extracted, set the path as the path of the folder containing the bin folder (which contains javac). Note that the path should be the parent of the bin folder, and not include the bin folder itself.

export JAVA_HOME=/home/droidzone/android/java/jdk1.7.0_09

Here, jdk1.7.0_09/bin contains javac.

The final file will be produced in a location brut.apktool/apktool-cli/build/libs/ relative to the parent and named of the form apktool-cli-1.5.1-SNAPSHOT.jar


cp brut.apktool/apktool-cli/build/libs/*jar ./

should get you the latest file.

Note that you need the wrapper too.

tar -jxvvf apktool-install-linux-r04-brut1.tar.bz2

Finally since the apktool refers to a file named apktool.jar, create a symlink.


Possible errors:

Exception in thread "main" java.lang.UnsupportedClassVersionError: brut/apktool/Main : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(
        at Method)
        at java.lang.ClassLoader.loadClass(
        at sun.misc.Launcher$AppClassLoader.loadClass(
        at java.lang.ClassLoader.loadClass(
        at java.lang.ClassLoader.loadClassInternal(
Could not find the main class: brut.apktool.Main. Program will exit.

That happens when your main system version java is older than version 7.

You can solve it either by:

1. Upgrading your main java version

2. Setting the PATH of your local java to override your system java.

Eg: If PATH is :/usr/bin:~/bin, make it ~/bin:/usr/bin

3. Creating a symlink in /usr/bin, point it to your version

cd /usr/bin


mv java java.old

ln -s /home/droidzone/android/java/jdk1.7.0_09/bin/java java



You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Downloading files in linux with Curl and Wget – Some simple examples

How to download files with Curl

The simplest format for curl is:

curl -O [URL]

That’s a capital “O” (Oh)


curl -O


will download the file from remote and store it in the same name in the current location.


Resuming a Broken download with curl:

curl -C - -O android-ndk-r8c-linux-x86.tar.bz2

will resume downloading from to the local file android-ndk-r8c-linux-x86.tar.bz2

Note that that is a capital C and a small O (Oh)

Now here’s an interesting observation. Wget and curl can resume download of a download started by the other too!

How to download files with Wget

The basic syntax for downloading a file with wget is:

wget [URL]




Resuming a Broken download with wget:

wget -c[/code]
will resume the download into the same filename received from server, i.e, and will not overwrite it.

Specify a destination directory with wget:

This is done with the -P option. Eg: Getting a specific patch from Github
[email protected]:~/Note2Core-GT-N710x_Kernel$ wget -P ../patches/
--2012-11-27 22:21:17--
Connecting to||:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1177 (1.1K) 
Saving to: `../patches/2c305d77b1ebd8a45242312ae693764de11630a9.patch'

100%[============================================================================================================================>] 1,177       --.-K/s   in 0s      

2012-11-27 22:21:18 (461 MB/s) - `../patches/2c305d77b1ebd8a45242312ae693764de11630a9.patch' saved [1177/1177]

Download using proper file name from server

Often, while using curl or wget to download files with urls like, you will find that it actually downloads file with a filename like 7u9-b05/jdk-7u9-linux-i586.tar.gz?AuthParam=1354451808_536b13c3c7c8eb652e674f6f7c23467b. Frankly it's a chore to rename it back to the correct filename jdk-7u9-linux-i586.tar.gz and wreaks havoc with any sort of automation you had in mind.

So it turns out that both wget and curl have experimental options to resolve the correct filename from server.

If we want to use curl to get a file with proper filename and also resume it if the file already exists, and get the proper filename from server we might do something like:

curl -C - -O -J

Here, -C is the flag to "Continue (resume) a file download if a partial file already exists"

-O specifies the output is to a file rather than stdout

-J makes sure that filename is resolved properly


The corresponding option for wget is to use the --content-disposition flag.

So our command would be:

wget --content-disposition -c



You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Compiling ICS- Official Android instructions – Part 2 – Building the System

Building the System

The basic sequence of build commands is as follows:


Initialize the environment with the[/code] script. Note that replacing "source" with a single dot saves a few characters, and the short form is more commonly used in documentation.

$ source build/ [/code][/code]

$ . build/ [/code][/code]

Choose a Target

Choose which target to build with 

lunch[/code]. The exact configuration can be passed as an argument, e.g.

$ lunch full-eng [/code][/code]
The example above refers to a complete build for the emulator, with all debugging enabled.

If run with no arguments 

lunch[/code] will prompt you to choose a target from the menu.

All build targets take the form BUILD-BUILDTYPE, where the BUILD is a codename referring to the particular feature combination:

Build name Device Notes
full emulator fully configured with all languages, apps, input methods
full_maguro maguro
full[/code] build running on Galaxy Nexus GSM/HSPA+ ("maguro")
full_panda panda
full[/code] build running on PandaBoard ("panda")

and the BUILDTYPE is one of the following:

Buildtype Use
user limited access; suited for production
userdebug like "user" but with root access and debuggability; preferred for debugging
eng development configuration with additional debugging tools

For more information about building for and running on actual hardware, see Building for devices

Build the Code

Build everything with 

make[/code]. GNU make can handle parallel tasks with a 

-jN[/code] argument, and it's common to use a number of tasks N that's between 1 and 2 times the number of hardware threads on the computer being used for the build. E.g. on a dual-E5520 machine (2 CPUs, 4 cores per CPU, 2 threads per core), the fastest builds are made with commands between 

make -j16[/code] and 

make -j32[/code].

$ make -j4 [/code][/code]

Run It!

You can either run your build on an emulator or flash it on a device. Please note that you have already selected your build target with 

lunch[/code], and it is unlikely at best to run on a different target than it was built for.

Flash a Device

To flash a device, you will need to use 

fastboot[/code], which should be included in your path after a successful build. Place the device in fastboot mode either manually by holding the appropriate key combination at boot, or from the shell with

$ adb reboot bootloader [/code][/code]
Once the device is in fastboot mode, run

$ fastboot flashall -w [/code][/code]

-w[/code] option wipes the 

/data[/code] partition on the device; this is useful for your first time flashing a particular device, but is otherwise unnecessary.

For more information about building for and running on actual hardware, see Building for devices

Emulate an Android Device

The emulator is added to your path automatically by the build process. To run the emulator, type

$ emulator [/code][/code]

Using ccache

ccache is a compiler cache for C and C++ that can help make builds faster. In the root of the source tree, do the following:

$ export USE_CCACHE=1 $ export CCACHE_DIR=/<path_of_your_choice>/.ccache $ prebuilt/linux-x86/ccache/ccache -M 20G [/code][/code]
You can watch ccache being used by doing the following:

$ watch -n1 -d prebuilt/linux-x86/ccache/ccache -s [/code][/code]
On OSX, you should replace 

linux-x86[/code] with 


Troubleshooting Common Build Errors

Wrong Java Version

If you are attempting to build froyo or earlier with Java 1.6, or gingerbread or later with Java 1.5, 

make[/code] will abort with a message such as

************************************************************ You are attempting to build with the incorrect version of java. Your version is: WRONG_VERSION. The correct version is: RIGHT_VERSION. Please follow the machine setup instructions at ************************************************************ [/code][/code]
This may be caused by

  • failing to install the correct JDK as specified on the Initializing page. Building Android requires Sun JDK 5 or 6 depending on which release you are building.
  • another JDK that you previously installed appearing in your path. You can remove the offending JDK from your path with:
    $ export PATH=${PATH//path/to/jdk/dir:/} [/code][/code]

Python Version 3

Repo is built on particular functionality from Python 2.x and is unfortunately incompatible with Python 3. In order to use repo, please install Python 2.x:

$ apt-get install python [/code][/code]

Gmake Version 3.82

There is a bug in 

make[/code] version 3.82 on Mac OS that prevents building Android.

TODO: what the error looks like with GNU make 3.82 on older builds that don't explicitly detect it.

Follow the instructions on the Initializing page for reverting GNU make from 3.82 to 3.81.

Case Insensitive Filesystem

If you are building on an HFS filesystem on Mac OS X, you may encounter an error such as

************************************************************ You are building on a case-insensitive filesystem. Please move your source tree to a case-sensitive filesystem. ************************************************************ [/code][/code]
Please follow the instructions on the Initializing page for creating a case-sensitive disk image.

No USB Permission

On most Linux systems, unprivileged users cannot access USB ports by default. If you see a permission denied error, follow the instructions on the Initializingpage for configuring USB access.

If adb was already running and cannot connect to the device after getting those rules set up, it can be killed with 

adb kill-server[/code]. That will cause adb to restart with the new configuration.

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Compiling AOSP Cyanogenmod for the Desire, from ssh-sourceforge

After setting up ssh client access,

follow the instructions for bravo:


Prepare the Build Environment

NOTE: You only need to do these steps the first time you build. If you previously prepared your build environment, skip to Copy proprietary files.

Install the ADB

Install the Android SDK.

Install the Build Packages

Install using the package manager of your choice:

For 32-bit & 64-bit systems:

git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool[/code]

For 64-bit only systems:

g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib[/code]


gcc-4.3-multilib g++-4.3-multilib[/code] is no longer available for Ubuntu 11.04 64-bit, but should still build without issue.
NOTE: On Ubuntu 10.10, and variants, you need to enable the parter repository to install sun-java6-jdk:

add-apt-repository "deb maverick partner"[/code]

Create the Directories

You will need to set up some directories in your build environment.

To create them:

mkdir -p ~/bin[/code]
mkdir -p ~/android/system[/code]

Install the Repository

Enter the following to download make executable the "repo" binary:

curl > ~/bin/repo[/code]
chmod a+x ~/bin/repo[/code]

NOTE: You may need to reboot for these changes to take effect.

Now enter the following to initialize the repository:

cd ~/android/system/[/code]
repo init -u git:// -b gingerbread[/code]
repo sync -j16[/code]

I'm modifying this code. git:// is not supported on most proxies and ssh via sourceforge, so if you do a default repo init, it will fail. Instead, you have to replace the git:// with http://

Repo actually makes a hidden folder names .repo under ~/android/system/ the first time you run it. Thereafter it runs those scripts. You can do a grep/sed to replace all instances of git:// with http://

Copy proprietary files

NOTE: This only needs done the first time you build. If you have already done these steps, you may skip to Download RomManager.

You will need to have a Bravo with a working copy of CyanogenMod install and ADB working on the computer. This script will copy the proprietary files from the device.

Connect the device to the computer and ensure that ADB is working properly.

cd ~/android/system/device/htc/bravo/[/code]

NOTE: If some hardware isn't working, like camcorder or FM radio, you will need to find the updated prop blobs.

Download RomManager

NOTE: This only needs to be done when an update to RomManager is released. If you are-up-to date, you may skip to Building CyanogenMod.

Download RomManager which is needed by the build:


Building CyanogenMod

Check for updates

First, check for updates in the source:

cd ~/android/system/[/code]
repo sync[/code]

Configure Build & Compile

Now, the environment must be configured to build and the ROM compiled, from code, for the Bravo.

. build/ && brunch bravo[/code]
Here, I hit a snag. It started giving errors saying java wasnt installed. So I got a self installing .bin, and installed it.


  1. Copy your .zip file from ~/android/system/out/target/product/bravo/ to the root of the SD card.
    Optional: Download Google Apps for CyanogenMod 7 and place it on the root of the SD card.
  2. Flash both of these .zip files from recovery.

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.

Building an AOSP Rom – Baby steps

16 Oct 2011


Setting up a Linux build environment


sudo add-apt-repository "deb lucid partner" 
sudo add-apt-repository "deb-src lucid partner" 
sudo apt-get update 
sudo apt-get install sun-java6-jdk

curl > ~/bin/repo $ chmod a+x ~/bin/repo[/code][/code]

The repo was missing on the site, so got it from an alternate location: [/code][/code]

curl "" > ~/bin/repo[/code]


[email protected]:~/android_source$ repo init -u git://
Getting manifest ...
from git://[0:]: errno=Connection refused
fatal: unable to connect a socket (Connection refused)
fatal: cannot obtain manifest git://[/code]

Seems the manifest is missing. But fortunately, Google has mirrored it to[/code]

(Thanks, gen_scheisskopf at Xda for the info)[/code]

[email protected]:~$ repo init -u[/code]

Getting repo ...
from git://
remote: Counting objects: 1116, done.
remote: Compressing objects: 100% (420/420), done.
remote: Total 1116 (delta 681), reused 1068 (delta 674)
Receiving objects: 100% (1116/1116), 392.38 KiB | 104 KiB/s, done.
Resolving deltas: 100% (681/681), done.
From git://
* [new branch] master -> origin/master
* [new branch] stable -> origin/stable
* [new tag] v1.6.8.1 -> v1.6.8.1
* [new tag] v1.7.5 -> v1.7.5
From git://
* [new tag] v1.0 -> v1.0
* [new tag] v1.0.1 -> v1.0.1
* [new tag] v1.0.2 -> v1.0.2
* [new tag] v1.0.3 -> v1.0.3
* [new tag] v1.0.4 -> v1.0.4
* [new tag] v1.0.5 -> v1.0.5
* [new tag] v1.0.6 -> v1.0.6
* [new tag] v1.0.7 -> v1.0.7
* [new tag] v1.0.8 -> v1.0.8
* [new tag] v1.0.9 -> v1.0.9
* [new tag] v1.1 -> v1.1
* [new tag] v1.2 -> v1.2
* [new tag] v1.3 -> v1.3
* [new tag] v1.3.1 -> v1.3.1
* [new tag] v1.3.2 -> v1.3.2
* [new tag] v1.4 -> v1.4
* [new tag] v1.4.1 -> v1.4.1
* [new tag] v1.4.2 -> v1.4.2
* [new tag] v1.4.3 -> v1.4.3
* [new tag] v1.4.4 -> v1.4.4
* [new tag] v1.5 -> v1.5
* [new tag] v1.5.1 -> v1.5.1
* [new tag] v1.6 -> v1.6
* [new tag] v1.6.1 -> v1.6.1
* [new tag] v1.6.10 -> v1.6.10
* [new tag] v1.6.10.1 -> v1.6.10.1
* [new tag] v1.6.10.2 -> v1.6.10.2
* [new tag] v1.6.2 -> v1.6.2
* [new tag] v1.6.3 -> v1.6.3
* [new tag] v1.6.4 -> v1.6.4
* [new tag] v1.6.5 -> v1.6.5
* [new tag] v1.6.6 -> v1.6.6
* [new tag] v1.6.7 -> v1.6.7
* [new tag] v1.6.7.1 -> v1.6.7.1
* [new tag] v1.6.7.2 -> v1.6.7.2
* [new tag] v1.6.7.3 -> v1.6.7.3
* [new tag] v1.6.7.4 -> v1.6.7.4
* [new tag] v1.6.7.5 -> v1.6.7.5
* [new tag] v1.6.8 -> v1.6.8
* [new tag] v1.6.8.10 -> v1.6.8.10
* [new tag] v1.6.8.11 -> v1.6.8.11
* [new tag] v1.6.8.2 -> v1.6.8.2
* [new tag] v1.6.8.3 -> v1.6.8.3
* [new tag] v1.6.8.4 -> v1.6.8.4
* [new tag] v1.6.8.5 -> v1.6.8.5
* [new tag] v1.6.8.6 -> v1.6.8.6
* [new tag] v1.6.8.7 -> v1.6.8.7
* [new tag] v1.6.8.8 -> v1.6.8.8
* [new tag] v1.6.8.9 -> v1.6.8.9
* [new tag] v1.6.9 -> v1.6.9
* [new tag] v1.6.9.1 -> v1.6.9.1
* [new tag] v1.6.9.2 -> v1.6.9.2
* [new tag] v1.6.9.3 -> v1.6.9.3
* [new tag] v1.6.9.4 -> v1.6.9.4
* [new tag] v1.6.9.5 -> v1.6.9.5
* [new tag] v1.6.9.6 -> v1.6.9.6
* [new tag] v1.6.9.7 -> v1.6.9.7
* [new tag] v1.6.9.8 -> v1.6.9.8
* [new tag] v1.7 -> v1.7
* [new tag] v1.7.1 -> v1.7.1
* [new tag] v1.7.2 -> v1.7.2
* [new tag] v1.7.3 -> v1.7.3
* [new tag] v1.7.3.1 -> v1.7.3.1
* [new tag] v1.7.4 -> v1.7.4
* [new tag] v1.7.4.1 -> v1.7.4.1
* [new tag] v1.7.4.2 -> v1.7.4.2
* [new tag] v1.7.4.3 -> v1.7.4.3
Getting manifest ...
remote: Counting objects: 874, done.
remote: Compressing objects: 100% (359/359), done.
remote: Total 874 (delta 369), reused 853 (delta 351)
Receiving objects: 100% (874/874), 284.60 KiB | 99 KiB/s, done.
Resolving deltas: 100% (369/369), done.
* [new branch] android-1.5 -> origin/android-1.5
* [new branch] android-1.5r2 -> origin/android-1.5r2
* [new branch] android-1.5r3 -> origin/android-1.5r3
* [new branch] android-1.5r4 -> origin/android-1.5r4
* [new branch] android-1.6_r1 -> origin/android-1.6_r1
* [new branch] android-1.6_r1.1 -> origin/android-1.6_r1.1
* [new branch] android-1.6_r1.2 -> origin/android-1.6_r1.2
* [new branch] android-1.6_r1.3 -> origin/android-1.6_r1.3
* [new branch] android-1.6_r1.4 -> origin/android-1.6_r1.4
* [new branch] android-1.6_r1.5 -> origin/android-1.6_r1.5
* [new branch] android-1.6_r2 -> origin/android-1.6_r2
* [new branch] android-2.0.1_r1 -> origin/android-2.0.1_r1
* [new branch] android-2.0_r1 -> origin/android-2.0_r1
* [new branch] android-2.1_r1 -> origin/android-2.1_r1
* [new branch] android-2.1_r2 -> origin/android-2.1_r2
* [new branch] android-2.1_r2.1p -> origin/android-2.1_r2.1p
* [new branch] android-2.1_r2.1p2 -> origin/android-2.1_r2.1p2
* [new branch] android-2.1_r2.1s -> origin/android-2.1_r2.1s
* [new branch] android-2.2.1_r1 -> origin/android-2.2.1_r1
* [new branch] android-2.2.1_r2 -> origin/android-2.2.1_r2
* [new branch] android-2.2.2_r1 -> origin/android-2.2.2_r1
* [new branch] android-2.2_r1 -> origin/android-2.2_r1
* [new branch] android-2.2_r1.1 -> origin/android-2.2_r1.1
* [new branch] android-2.2_r1.2 -> origin/android-2.2_r1.2
* [new branch] android-2.2_r1.3 -> origin/android-2.2_r1.3
* [new branch] android-2.3.1_r1 -> origin/android-2.3.1_r1
* [new branch] android-2.3.2_r1 -> origin/android-2.3.2_r1
* [new branch] android-2.3.3_r1 -> origin/android-2.3.3_r1
* [new branch] android-2.3.3_r1.1 -> origin/android-2.3.3_r1.1
* [new branch] android-2.3.4_r0.9 -> origin/android-2.3.4_r0.9
* [new branch] android-2.3.4_r1 -> origin/android-2.3.4_r1
* [new branch] android-2.3.5_r1 -> origin/android-2.3.5_r1
* [new branch] android-2.3_r1 -> origin/android-2.3_r1
* [new branch] android-adt-0.9.8 -> origin/android-adt-0.9.8
* [new branch] android-adt-0.9.9 -> origin/android-adt-0.9.9
* [new branch] android-cts-2.1_r2 -> origin/android-cts-2.1_r2
* [new branch] android-cts-2.1_r3 -> origin/android-cts-2.1_r3
* [new branch] android-cts-2.1_r4 -> origin/android-cts-2.1_r4
* [new branch] android-cts-2.1_r5 -> origin/android-cts-2.1_r5
* [new branch] android-cts-2.2_r1 -> origin/android-cts-2.2_r1
* [new branch] android-cts-2.2_r2 -> origin/android-cts-2.2_r2
* [new branch] android-cts-2.2_r3 -> origin/android-cts-2.2_r3
* [new branch] android-cts-2.2_r4 -> origin/android-cts-2.2_r4
* [new branch] android-cts-2.2_r5 -> origin/android-cts-2.2_r5
* [new branch] android-cts-2.2_r6 -> origin/android-cts-2.2_r6
* [new branch] android-cts-2.2_r7 -> origin/android-cts-2.2_r7
* [new branch] android-cts-2.3_r1 -> origin/android-cts-2.3_r1
* [new branch] android-cts-2.3_r2 -> origin/android-cts-2.3_r2
* [new branch] android-cts-2.3_r3 -> origin/android-cts-2.3_r3
* [new branch] android-cts-2.3_r4 -> origin/android-cts-2.3_r4
* [new branch] android-cts-2.3_r5 -> origin/android-cts-2.3_r5
* [new branch] android-sdk-1.5-pre -> origin/android-sdk-1.5-pre
* [new branch] android-sdk-1.5_r1 -> origin/android-sdk-1.5_r1
* [new branch] android-sdk-1.5_r3 -> origin/android-sdk-1.5_r3
* [new branch] android-sdk-1.6-docs_r1 -> origin/android-sdk-1.6-docs_r1
* [new branch] android-sdk-1.6_r1 -> origin/android-sdk-1.6_r1
* [new branch] android-sdk-1.6_r2 -> origin/android-sdk-1.6_r2
* [new branch] android-sdk-2.0.1-docs_r1 -> origin/android-sdk-2.0.1-docs_r1
* [new branch] android-sdk-2.0.1_r1 -> origin/android-sdk-2.0.1_r1
* [new branch] android-sdk-2.0_r1 -> origin/android-sdk-2.0_r1
* [new branch] android-sdk-2.1_r1 -> origin/android-sdk-2.1_r1
* [new branch] android-sdk-2.2_r1 -> origin/android-sdk-2.2_r1
* [new branch] android-sdk-2.2_r2 -> origin/android-sdk-2.2_r2
* [new branch] android-sdk-2.3.4_r1 -> origin/android-sdk-2.3.4_r1
* [new branch] android-sdk-adt_r12 -> origin/android-sdk-adt_r12
* [new branch] android-sdk-tools_r12 -> origin/android-sdk-tools_r12
* [new branch] android-sdk-tools_r2 -> origin/android-sdk-tools_r2
* [new branch] android-sdk-tools_r3 -> origin/android-sdk-tools_r3
* [new branch] android-sdk-tools_r4 -> origin/android-sdk-tools_r4
* [new branch] android-sdk-tools_r5 -> origin/android-sdk-tools_r5
* [new branch] android-sdk-tools_r6 -> origin/android-sdk-tools_r6
* [new branch] android-sdk-tools_r7 -> origin/android-sdk-tools_r7
* [new branch] cdma-import -> origin/cdma-import
* [new branch] cupcake -> origin/cupcake
* [new branch] cupcake-release -> origin/cupcake-release
* [new branch] donut -> origin/donut
* [new branch] donut-plus-aosp -> origin/donut-plus-aosp
* [new branch] eclair -> origin/eclair
* [new branch] froyo -> origin/froyo
* [new branch] froyo-plus-aosp -> origin/froyo-plus-aosp
* [new branch] gingerbread -> origin/gingerbread
* [new branch] master -> origin/master
* [new branch] release-1.0 -> origin/release-1.0
* [new branch] tools-adt_r11 -> origin/tools-adt_r11
* [new branch] tools_r10 -> origin/tools_r10
* [new branch] tools_r11 -> origin/tools_r11
* [new branch] tools_r12 -> origin/tools_r12
* [new branch] tools_r13 -> origin/tools_r13
* [new branch] tools_r7 -> origin/tools_r7
* [new branch] tools_r8 -> origin/tools_r8
* [new branch] tools_r9 -> origin/tools_r9
* [new tag] android-1.5 -> android-1.5
* [new tag] android-1.5r2 -> android-1.5r2
* [new tag] android-1.5r3 -> android-1.5r3
* [new tag] android-1.5r4 -> android-1.5r4
* [new tag] android-1.6_r1 -> android-1.6_r1
* [new tag] android-1.6_r1.1 -> android-1.6_r1.1
* [new tag] android-1.6_r1.2 -> android-1.6_r1.2
* [new tag] android-1.6_r1.3 -> android-1.6_r1.3
* [new tag] android-1.6_r1.4 -> android-1.6_r1.4
* [new tag] android-1.6_r1.5 -> android-1.6_r1.5
* [new tag] android-1.6_r2 -> android-1.6_r2
* [new tag] android-2.0.1_r1 -> android-2.0.1_r1
* [new tag] android-2.0_r1 -> android-2.0_r1
* [new tag] android-2.1_r1 -> android-2.1_r1
* [new tag] android-2.1_r2 -> android-2.1_r2
* [new tag] android-2.1_r2.1p -> android-2.1_r2.1p
* [new tag] android-2.1_r2.1p2 -> android-2.1_r2.1p2
* [new tag] android-2.1_r2.1s -> android-2.1_r2.1s
* [new tag] android-2.2.1_r1 -> android-2.2.1_r1
* [new tag] android-2.2.1_r2 -> android-2.2.1_r2
* [new tag] android-2.2.2_r1 -> android-2.2.2_r1
* [new tag] android-2.2_r1 -> android-2.2_r1
* [new tag] android-2.2_r1.1 -> android-2.2_r1.1
* [new tag] android-2.2_r1.2 -> android-2.2_r1.2
* [new tag] android-2.2_r1.3 -> android-2.2_r1.3
* [new tag] android-2.3.1_r1 -> android-2.3.1_r1
* [new tag] android-2.3.2_r1 -> android-2.3.2_r1
* [new tag] android-2.3.3_r1.1 -> android-2.3.3_r1.1
* [new tag] android-2.3.3_r1a -> android-2.3.3_r1a
* [new tag] android-2.3.4_r0.9 -> android-2.3.4_r0.9
* [new tag] android-2.3.4_r1 -> android-2.3.4_r1
* [new tag] android-2.3.5_r1 -> android-2.3.5_r1
* [new tag] android-2.3_r1 -> android-2.3_r1
* [new tag] android-adt-0.9.8 -> android-adt-0.9.8
* [new tag] android-adt-0.9.9 -> android-adt-0.9.9
* [new tag] android-cts-2.1_r2 -> android-cts-2.1_r2
* [new tag] android-cts-2.1_r3 -> android-cts-2.1_r3
* [new tag] android-cts-2.1_r4 -> android-cts-2.1_r4
* [new tag] android-cts-2.1_r5 -> android-cts-2.1_r5
* [new tag] android-cts-2.2_r1 -> android-cts-2.2_r1
* [new tag] android-cts-2.2_r2 -> android-cts-2.2_r2
* [new tag] android-cts-2.2_r3 -> android-cts-2.2_r3
* [new tag] android-cts-2.2_r4 -> android-cts-2.2_r4
* [new tag] android-cts-2.2_r5 -> android-cts-2.2_r5
* [new tag] android-cts-2.2_r6 -> android-cts-2.2_r6
* [new tag] android-cts-2.2_r7 -> android-cts-2.2_r7
* [new tag] android-cts-2.3_r1 -> android-cts-2.3_r1
* [new tag] android-cts-2.3_r2 -> android-cts-2.3_r2
* [new tag] android-cts-2.3_r3 -> android-cts-2.3_r3
* [new tag] android-cts-2.3_r4 -> android-cts-2.3_r4
* [new tag] android-cts-2.3_r5 -> android-cts-2.3_r5
* [new tag] android-sdk-1.5-pre -> android-sdk-1.5-pre
* [new tag] android-sdk-1.5_r1 -> android-sdk-1.5_r1
* [new tag] android-sdk-1.5_r3 -> android-sdk-1.5_r3
* [new tag] android-sdk-1.6-docs_r1 -> android-sdk-1.6-docs_r1
* [new tag] android-sdk-1.6_r1 -> android-sdk-1.6_r1
* [new tag] android-sdk-1.6_r2 -> android-sdk-1.6_r2
* [new tag] android-sdk-2.0.1-docs_r1 -> android-sdk-2.0.1-docs_r1
* [new tag] android-sdk-2.0.1_r1 -> android-sdk-2.0.1_r1
* [new tag] android-sdk-2.0_r1 -> android-sdk-2.0_r1
* [new tag] android-sdk-2.1_r1 -> android-sdk-2.1_r1
* [new tag] android-sdk-2.2_r1 -> android-sdk-2.2_r1
* [new tag] android-sdk-2.2_r2 -> android-sdk-2.2_r2
* [new tag] android-sdk-2.3.4_r1 -> android-sdk-2.3.4_r1
* [new tag] android-sdk-adt_r12 -> android-sdk-adt_r12
* [new tag] android-sdk-tools_r12 -> android-sdk-tools_r12
* [new tag] android-sdk-tools_r2 -> android-sdk-tools_r2
* [new tag] android-sdk-tools_r3 -> android-sdk-tools_r3
* [new tag] android-sdk-tools_r4 -> android-sdk-tools_r4
* [new tag] android-sdk-tools_r5 -> android-sdk-tools_r5
* [new tag] android-sdk-tools_r6 -> android-sdk-tools_r6
* [new tag] android-sdk-tools_r7 -> android-sdk-tools_r7
* [new tag] android-1.0 -> android-1.0
* [new tag] android-2.3.3_r1 -> android-2.3.3_r1

Your Name [Droid Zone]: dz
Your Email [[email protected]]: [email protected]

Your identity is: dz <[email protected]>
is this correct [y/n]? y

Testing colorized output (for 'repo diff', 'repo status'):
black red green yellow blue magenta cyan white
bold dim ul reverse
Enable color display in this user account (y/n)? y

repo initialized in /home/droidzone[/code]

Ok, test is a success.[/code]

Once again, I'll try because I want only Gingerbread[/code]

repo init -u -b gingerbread[/code]


repo sync again lands in trouble[/code]

[email protected]:~/android_source$ repo sync[0:]: errno=Connection refused
fatal: unable to connect a socket (Connection refused)
error: Cannot fetch platform/bionic[/code]




You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.