What is TINY_ANDROID

!!!!Warning!!! The Tiny Android project is no longer supported or active. This page remains for information and historical purposes only.!!!!!!

TINY_ANDROID is a super minimal Android build that can be used for kernel development, toolchain work and other development where users only need a console.

Users are able to get source, build it and start running a Linux system with a shell in 10 min (WOW!).

== How can I use TINY_ANDROID? ==

You can get started now with a TINY_ANDROID Panda build using the prebuilt binaries at:

https://android-build.linaro.org/builds/~linaro-android/panda-jb-gcc47-tilt-tracking-blob-tiny/#build=6

(Instructions on the build page)

Or you can build everything from source using:

wget http://snapshots.linaro.org/android/~linaro-android/\
panda-jb-gcc47-tilt-tracking-blob-tiny/6/linaro_android_build_cmds.sh
wget http://snapshots.linaro.org/android/binaries/open/20120716/build-info.tar.bz2
chmod +x linaro_android_build_cmds.sh
export BUILD_TINY_ANDROID=true
export SOURCE_OVERLAY=$PWD/build-info.tar.bz2
./linaro_android_build_cmds.sh -t

Follow the instructions at https://android-build.linaro.org/builds/~linaro-android/panda-jb-gcc47-tilt-tracking-blob-tiny/#build=6 to program an SD card with the resulting images. adb sync can be used to push updates to the unit after boot.

What runs?

On this build a ps will show all kernel services plus:

  • binder
    • kernel service, but listed anyway
  • /init
  • /sbin/ueventd
  • /system/bin/sh
    • Shell
  • /system/bin/debuggerd
    • Generate a backtrace and wait
  • /sbin/adbd
    • Allow connections by adb from the host.

What Doesn't Run in TINY_ANDROID

The following Android services run in a normal Jellybean build

(other services run based on target)

  • android.process.acore
  • android.process.media
  • com.android.calendar
  • com.android.deskclock
  • com.android.email
  • com.android.exchange
  • com.android.gallery3d
  • com.android.inputmethod.latin
  • com.android.launcher
  • com.android.mms
  • com.android.phone
  • com.android.providers.calendar
  • com.android.settings
  • com.android.smspush
  • com.android.systemui
  • /system/bin/dbus-daemon
  • /system/bin/drmserver
  • /system/bin/gatord
  • /system/bin/installd
  • /system/bin/keystore
  • /system/bin/mediaserver
  • /system/bin/netd
  • /system/bin/servicemanager
  • /system/bin/surfaceflinger
  • /system/bin/uim
  • /system/bin/vold
  • system_server (handles binder calls and registration)
  • zygote (root of all JVMs)

What Gets Built

Only the following projects get built:

 * bionic 
 * system/core 
 * system/extras/ext4_utils 
 * system/extras/su 
 * build/libs 
 * build/target 
 * build/tools/acp 
 * external/mksh 
 * external/yaffs2 
 * external/zlib

Executables

  • mksh
  • adb
  • gzip
  • logwrapper
  • sdcard
  • run-as
  • logcat
  • toolbox
    • ln -sf toolbox to
      • /system/bin/cat
      • /system/bin/chmod
      • /system/bin/chown
      • /system/bin/cmp
      • /system/bin/date
      • /system/bin/dd
      • /system/bin/df
      • /system/bin/dmesg
      • /system/bin/getevent
      • /system/bin/getprop
      • /system/bin/hd
      • /system/bin/id
      • /system/bin/ifconfig
      • /system/bin/iftop
      • /system/bin/ioctl
      • /system/bin/insmod
      • /system/bin/ionice
      • /system/bin/kill
      • /system/bin/ln
      • /system/bin/log
      • /system/bin/ls
      • /system/bin/lsmod
      • /system/bin/lsof
      • /system/bin/md5
      • /system/bin/mkdir
      • /system/bin/mount
      • /system/bin/mv
      • /system/bin/nandread
      • /system/bin/netstat
      • /system/bin/newfs_msdos
      • /system/bin/notify
      • /system/bin/ps
      • /system/bin/printenv
      • /system/bin/r
      • /system/bin/reboot
      • /system/bin/renice
      • /system/bin/rm
      • /system/bin/rmdir
      • /system/bin/rmmod
      • /system/bin/route
      • /system/bin/schedtop
      • /system/bin/sendevent
      • /system/bin/setconsole
      • /system/bin/setprop
      • /system/bin/smd
      • /system/bin/sleep
      • /system/bin/start
      • /system/bin/stop
      • /system/bin/sync
      • /system/bin/top
      • /system/bin/touch
      • /system/bin/umount
      • /system/bin/uptime
      • /system/bin/vmstat
      • /system/bin/watchprops
      • /system/bin/wipe
  • debuggerd

SharedLib

  • libdl
  • libz
  • libc
  • libstdc++
  • libm
  • libc_malloc_debug_leak
  • libc_malloc_debug_qemu
  • libthread_db
  • liblog
  • libgccdemangle
  • libctest
  • libext4_utils
  • libcutils
  • libusbhost
  • libcorkscrew
  • libpixelflinger
  • libnetutils

StaticExecutable

  • linker
  • init
  • adbd
  • su

StaticLib

  • dereferencing
  • function
  • liblog
  • libcutils
  • libunz
  • libthread_db
  • libzipfile
  • libc_nomalloc
  • libc

How Can I Extend TINY_ANDROID

TINY_ANDROID is extensible. Android uses a manifest to organized all its components. The manifest specifies a set of gits and optionally branches of those gits or commits of those gits. The manifest can point to any git (github or android.git.linaro.org or git.linaro.org). To extend a build, simply add the git to the manifest and edit build/core/main.mk to include it in the build.

Platform/Android/UseTinyAndroid (last modified 2015-07-08 14:21:53)