Tag Archives: cli

Android

How to compile Android SDK samples

Recently I came across a Stackoverflow question about sample code in Android SDK.
The user was asking how to import code in an Eclipse project.

I’m not using Eclipse in my Android projects so I answered with command line instructions. My development environment is based on vim and bash.

My answer was a bit off topic, but can be useful to someone else.

Let’s presume you want to compile LunarLander sample.
You need to copy the directory recursively to a new path and work on it with the android command:
$ cp -r $ANDROID_SDK/samples/android-15/LunarLander .
$ android update project --path LunarLander/ --target 3 --subprojects
$ cd LunarLander/
$ ant debug install

You have to check the targets available to your system with the following command:
$ android list targets

References

Raspberry Pi tip: mount Raspbmc images

The problem

When you download a Raspmc (Raspberry Pi Media Center) image it’s a .zip file.
If you want to check the content of the file you must find a way to mount the image.

Prerequisites

  • a pc with GNU/Linux
  • a user with root permissions on the pc
  • the image you want to analyze (download from the site)

Procedure

  1. first of all unzip the archive$ unzip installer.zip
  2. you’ll notice one file: installer.img that’s an image of a block device:$ file installer.img
    installer.img: x86 boot sector; partition 1: ID=0xc, starthead 0, startsector 2048, 131072 sectors; partition 2: ID=0x83, starthead 3, startsector 133120, 251904 sectors, code offset 0xb8
  3. create a mount point$ mkdir /tmp/mnt-installer
  4. if your “file” output gives you less informations, you can examine the image structure (sizes in Sectors) with the following command$ sfdisk -uS -l installer.img
    Disk installer.img: cannot get geometry
    Disk installer.img: 24 cylinders, 255 heads, 63 sectors/track
    Warning: The partition table looks like it was made
    for C/H/S=*/4/32 (instead of 24/255/63).
    For this listing I'll assume that geometry.
    Units = sectors of 512 bytes, counting from 0
    Device Boot Start End #sectors Id System
    installer.img1 2048 133119 131072 c W95 FAT32 (LBA)
    installer.img2 133120 385023 251904 83 Linux
    installer.img3 0 - 0 0 Empty
    installer.img4 0 - 0 0 Empty
  5. take a note of what you want to mount, i.e. img2 (Linux filesystem) as I highlighted
  6. with root permissions, mount the desired partition on the previous created path (133120 is the Start sector taken from the last output)$ sudo mount -o loop,offset=$(( 512 * 133120)) installer.img /tmp/mnt-installer
  7. check the content$ ls -lAtr /tmp/mnt-installer
    total 96
    drwxr-xr-x 2 root root 4096 Jul 21 2010 selinux
    drwxr-xr-x 2 root root 4096 Mar 27 23:44 sys
    drwxr-xr-x 2 root root 4096 May 7 17:28 proc
    drwxr-xr-x 2 root root 4096 May 7 17:28 mnt
    drwxr-xr-x 2 root root 4096 May 7 17:28 home
    drwxr-xr-x 2 root root 4096 May 7 17:28 boot
    drwx------ 2 root root 16384 Jun 18 02:26 lost+found
    drwx------ 2 root root 4096 Jun 18 02:27 root
    drwxr-xr-x 2 root root 4096 Jun 18 02:27 srv
    drwxr-xr-x 2 root root 4096 Jun 18 02:27 opt
    drwxr-xr-x 2 root root 4096 Jun 18 02:27 media
    drwxr-xr-x 13 root root 4096 Jun 18 02:27 var
    drwxr-xr-x 10 root root 4096 Jun 18 02:27 usr
    drwxrwxrwt 2 root root 4096 Jun 18 02:27 tmp
    drwxr-xr-x 2 root root 4096 Jun 18 02:31 sbin
    drwxr-xr-x 9 root root 12288 Jun 18 02:31 lib
    drwxr-xr-x 43 root root 4096 Jun 18 02:31 etc
    drwxr-xr-x 2 root root 4096 Jun 18 02:31 bin
    drwxr-xr-x 4 root root 4096 Jun 18 02:31 dev
  8. when you have done, unmount the filesystem$ sudo umount /tmp/mnt-installer