2008年12月3日 星期三

readme


Android Init Language
---------------------

The Android Init Language consists of four broad classes of statements,
which are Actions, Commands, Services, and Options.

All of these are line-oriented, consisting of tokens separated by
whitespace.  The c-style backslash escapes may be used to insert
whitespace into a token.  Double quotes may also be used to prevent
whitespace from breaking text into multiple tokens.  The backslash,
when it is the last character on a line, may be used for line-folding.

Lines which start with a # (leading whitespace allowed) are comments.

Actions and Services implicitly declare a new section.  All commands
or options belong to the section most recently declared.  Commands
or options before the first section are ignored.

Actions and Services have unique names.  If a second Action or Service
is declared with the same name as an existing one, it is ignored as
an error.  (??? should we override instead)


Actions
-------
Actions are named sequences of commands.  Actions have a trigger which
is used to determine when the action should occur.  When an event
occurs which matches an action's trigger, that action is added to
the tail of a to-be-executed queue (unless it is already on the
queue).

Each action in the queue is dequeued in sequence and each command in
that action is executed in sequence.  Init handles other activities
(device creation/destruction, property setting, process restarting)
"between" the execution of the commands in activities.

Actions take the form of:

on <trigger>
   <command>
   <command>
   <command>


Services
--------
Services are programs which init launches and (optionally) restarts
when they exit.  Services take the form of:

service <name> <pathname> [ <argument> ]*
   <option>
   <option>
   ...


Options
-------
Options are modifiers to services.  They affect how and when init
runs the service.

critical
   This is a device-critical service. If it exits more than four times in
   four minutes, the device will reboot into recovery mode.

disabled
   This service will not automatically start with its class.
   It must be explicitly started by name.

setenv <name> <value>
   Set the environment variable <name> to <value> in the launched process.

socket <name> <type> <perm> [ <user> [ <group> ] ]
   Create a unix domain socket named /dev/socket/<name> and pass
   its fd to the launched process.  <type> must be "dgram" or "stream".
   User and group default to 0.

user <username>
   Change to username before exec'ing this service.
   Currently defaults to root.  (??? probably should default to nobody)
   Currently, if your process requires linux capabilities then you cannot use
   this command. You must instead request the capabilities in-process while
   still root, and then drop to your desired uid.

group <groupname> [ <groupname> ]*
   Change to groupname before exec'ing this service.  Additional
   groupnames beyond the (required) first one are used to set the
   supplemental groups of the process (via setgroups()).
   Currently defaults to root.  (??? probably should default to nobody)

oneshot
   Do not restart the service when it exits.

class <name>
   Specify a class name for the service.  All services in a
   named class may be started or stopped together.  A service
   is in the class "default" if one is not specified via the
   class option.

onrestart
    Execute a Command (see below) when service restarts.

Triggers
--------
   Triggers are strings which can be used to match certain kinds
   of events and used to cause an action to occur.

boot
   This is the first trigger that will occur when init starts
   (after /init.conf is loaded)

<name>=<value>
   Triggers of this form occur when the property <name> is set
   to the specific value <value>.

device-added-<path>
device-removed-<path>
   Triggers of these forms occur when a device node is added
   or removed.

service-exited-<name>
   Triggers of this form occur when the specified service exits.


Commands
--------

exec <path> [ <argument> ]*
   Fork and execute a program (<path>).  This will block until
   the program completes execution.  It is best to avoid exec
   as unlike the builtin commands, it runs the risk of getting
   init "stuck". (??? maybe there should be a timeout?)

export <name> <value>
   Set the environment variable <name> equal to <value> in the
   global environment (which will be inherited by all processes
   started after this command is executed)

ifup <interface>
   Bring the network interface <interface> online.

import <filename>
   Parse an init config file, extending the current configuration.

hostname <name>
   Set the host name.

chmod <octal-mode> <path>
   Change file access permissions.

chown <owner> <group> <path>
   Change file owner and group.

class_start <serviceclass>
   Start all services of the specified class if they are
   not already running.

class_stop <serviceclass>
   Stop all services of the specified class if they are
   currently running.

domainname <name>
   Set the domain name.

insmod <path>
   Install the module at <path>

mkdir <path> [mode] [owner] [group]
   Create a directory at <path>, optionally with the given mode, owner, and
   group. If not provided, the directory is created with permissions 755 and
   owned by the root user and root group.

mount <type> <device> <dir> [ <mountoption> ]*
   Attempt to mount the named device at the directory <dir>
   <device> may be of the form mtd@name to specify a mtd block
   device by name.
   <mountoption>s include "ro", "rw", "remount", "noatime", ...

setkey
   TBD

setprop <name> <value>
   Set system property <name> to <value>.

setrlimit <resource> <cur> <max>
   Set the rlimit for a resource.

start <service>
   Start a service running if it is not already running.

stop <service>
   Stop a service from running if it is currently running.

symlink <target> <path>
   Create a symbolic link at <path> with the value <target>

trigger <event>
   Trigger an event.  Used to queue an action from another
   action.

write <path> <string> [ <string> ]*
   Open the file at <path> and write one or more strings
   to it with write(2)


Properties
----------
Init updates some system properties to provide some insight into
what it's doing:

init.action
   Equal to the name of the action currently being executed or "" if none

init.command
   Equal to the command being executed or "" if none.

init.svc.<name>
   State of a named service ("stopped", "running", "restarting")


Example init.conf
-----------------

# not complete -- just providing some examples of usage
#
on boot
   export PATH /sbin:/system/sbin:/system/bin
   export LD_LIBRARY_PATH /system/lib

   mkdir /dev
   mkdir /proc
   mkdir /sys

   mount tmpfs tmpfs /dev
   mkdir /dev/pts
   mkdir /dev/socket
   mount devpts devpts /dev/pts
   mount proc proc /proc
   mount sysfs sysfs /sys

   write /proc/cpu/alignment 4

   ifup lo

   hostname localhost
   domainname localhost

   mount yaffs2 mtd@system /system
   mount yaffs2 mtd@userdata /data

   import /system/etc/init.conf

   class_start default

service adbd /sbin/adbd
   user adb
   group adb

service usbd /system/bin/usbd -r
   user usbd
   group usbd
   socket usbd 666

service zygote /system/bin/app_process -Xzygote /system/bin --zygote
   socket zygote 666

service runtime /system/bin/runtime
   user system
   group system

on device-added-/dev/compass
   start akmd

on device-removed-/dev/compass
   stop akmd

service akmd /sbin/akmd
   disabled
   user akmd
   group akmd

Debugging notes
---------------
By default, programs executed by init will drop stdout and stderr into
/dev/null. To help with debugging, you can execute your program via the
Andoird program logwrapper. This will redirect stdout/stderr into the
Android logging system (accessed via logcat).

For example
service akmd /system/bin/logwrapper /sbin/akmd

2008年11月25日 星期二

2008年11月20日 星期四

OpenBinder is running on UBuntu (error)

make test (result)

ming@ming-desktop:~/pkg.android/openbinder$ make test
(. build/scripts/setup_env.sh; smooved -e /home/ming/pkg.android/openbinder/build/scripts/test.bsh)
LOCK DEBUGGING ENABLED! LOCK_DEBUG=15 LOCK_DEBUG_STACK_CRAWLS=1
Opening '/dev/binder' failed: No such file or directory
SmooveD is entering the picture...
BecomeContextManager(): true
[PackageManager]: adding package directory '/home/ming/pkg.android/openbinder/build/packages'
Current environment: SValue({
"_" -> "/home/ming/pkg.android/openbinder/build/bin/smooved",
"PWD" -> "/",
"ECHO" -> int32_t(1 or 0x1),
"HOME" -> "/home/ming",
"LANG" -> "en_US.UTF-8",
"PATH" -> "/home/ming/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/ming/morphine.tv/bin/:/home/ming/pkg.android/android-sdk-linux_x86-1.0_r1/tools/:/home/ming/pkg/jperf2/bin/:/home/ming/pkg.eclipse/agents/bin/:/home/ming/pkg.android/openbinder/build/bin",
"SELF" -> wptr(0x40805d9c),
"TERM" -> "xterm",
"USER" -> "baron",
"WILD" -> wild,
"SHELL" -> "/bin/bash",
"SHLVL" -> "2",
"MFLAGS" -> "",
"CONTEXT" -> sptr(0x8061764 8BCatalog),
"DISPLAY" -> ":0.0",
"LDFLAGS" -> "-lssl",
"LOGNAME" -> "ming",
"GDM_LANG" -> "en_US.UTF-8",
"LESSOPEN" -> "| /usr/bin/lesspipe %s",
"USERNAME" -> "ming",
"WINDOWID" -> "52428880",
"CLASSPATH" -> "/home/ming/workspace.ming/HelloGundam/bin/:",
"COLORTERM" -> "gnome-terminal",
"LESSCLOSE" -> "/usr/bin/lesspipe %s %s",
"LS_COLORS" -> "no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.svgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:",
"MAKEFLAGS" -> "",
"MAKELEVEL" -> "1",
"GDMSESSION" -> "default",
"GIT_EDITOR" -> "vim",
"WINDOWPATH" -> "7",
"XAUTHORITY" -> "/tmp/.gdmARHWKU",
"XMODIFIERS" -> "@im=SCIM",
"HISTCONTROL" -> "ignoreboth",
"BSH_HOST_PWD" -> "/home/ming/pkg.android/openbinder",
"GTK_RC_FILES" -> "/etc/gtk/gtkrc:/home/ming/.gtkrc-1.2-gnome2",
"QT_IM_MODULE" -> "xim",
"GTK_IM_MODULE" -> "scim-bridge",
"SRC_LIBRARIES" -> "libraries",
"SSH_AUTH_SOCK" -> "/tmp/keyring-Jl2RM8/ssh",
"XDG_DATA_DIRS" -> "/usr/local/share/:/usr/share/:/usr/share/gdm/",
"BSH_SCRIPT_DIR" -> "",
"GPG_AGENT_INFO" -> "/tmp/seahorse-AAWri0/S.gpg-agent:5975:1",
"BSH_SCRIPT_FILE" -> "",
"DESKTOP_SESSION" -> "default",
"GIT_AUTHOR_NAME" -> "Ming-der Wang",
"LD_LIBRARY_PATH" -> "/home/ming/workspace.ming/HelloGundam/bin/:/usr/local/lib/:/usr/lib/:/mnt/katapi86/lib/://home/ming/pkg.eclipse/agents/lib/:/home/ming/workspace.ming/android_jni/bin:/home/ming/pkg.android/openbinder/build/lib",
"PKG_CONFIG_PATH" -> "/usr/lib/pkgconfig/:/usr/local/lib/pkgconfig/:/usr/share/pkgconfig/:/home/ming/morphine.tv/lib/pkgconfig/",
"SESSION_MANAGER" -> "local/ming-desktop:/tmp/.ICE-unix/5909",
"BINDER_DIST_PATH" -> "/home/ming/pkg.android/openbinder/.",
"GIT_AUTHOR_EMAIL" -> "ming@katdc.com",
"SYSTEM_DIRECTORY" -> "/home/ming/pkg.android/openbinder/build",
"GNOME_KEYRING_PID" -> "5908",
"DESKTOP_STARTUP_ID" -> "",
"GIT_COMMITTER_NAME" -> "Ming-der Wang",
"XDG_SESSION_COOKIE" -> "dcf1338cc348047cd4cc046d48b3704a-1227235107.217432-1097584640",
"BINDER_PACKAGE_PATH" -> "/home/ming/pkg.android/openbinder/build/packages",
"GIT_COMMITTER_EMAIL" -> "ming@katdc.com",
"PALMSOURCE_PLATFORM" -> "DEVICE_ARM",
"GDM_XSERVER_LOCATION" -> "local",
"GNOME_KEYRING_SOCKET" -> "/tmp/keyring-Jl2RM8/socket",
"PALMSOURCE_BUILDTYPE" -> "DEBUG",
"DBUS_SESSION_BUS_ADDRESS" -> "unix:abstract=/tmp/dbus-yc3K7LDmDG,guid=bf3acc8cf48c5e14d51cba3a49261f25",
"GNOME_DESKTOP_SESSION_ID" -> "Default"
})
Running binder performance tests...
VALIDATION ENABLED
Iterations: 1000
Thread priority: 80
Payload size: Random (seed 0)

Operation us/op Total us Iterations
Overhead 0.00729923 72992 10000000
Random Overhead 0.0461547 46154 1000000
Add int32_t -0.00389968 -38996 10000000
Global int32_t Access -0.00376249 -37624 10000000
Extern Global int32_t Access -0.00457844 -45784 10000000
SysAtomicInc32() 0.00606161 60616 10000000
sysThreadDirectFuncs.atomicInc32() 0.00685385 68538 10000000
SysAtomicDec32() 0.00618398 61839 10000000
sysThreadDirectFuncs.atomicDec32() 0.0065386 65385 10000000
SysAtomicAdd32() 0.00734086 73408 10000000
sysThreadDirectFuncs.atomicAdd32() 0.00721907 72190 10000000
SysAtomicCompareAndSwap32() 0.00992122 99212 10000000
sysThreadDirectFuncs.atomicCompareAndSwap32() 0.0100774 100773 10000000
SysTSDGet() 0.00868514 86851 10000000
sysThreadDirectFuncs.tsdGet() 0.0107337 107337 10000000
SysTSDSet() 0.0205322 205322 10000000
sysThreadDirectFuncs.tsdSet() 0.0216009 216008 10000000
2x-SysAtomicInc32() 0.0500149 500148 10000000
2x-sysThreadDirectFuncs.atomicInc32() 0.0494547 494546 10000000
2x-SysAtomicDec32() 0.042947 429470 10000000
2x-sysThreadDirectFuncs.atomicDec32() 0.0552987 552986 10000000
2x-SysAtomicAdd32() 0.0522535 522535 10000000
2x-sysThreadDirectFuncs.atomicAdd32() 0.0578333 578332 10000000
2x-SysAtomicCompareAndSwap32() 0.0333325 333325 10000000
2x-sysThreadDirectFuncs.atomicCompareAndSwap32() 0.0419239 419239 10000000
2x-SysTSDGet() 0.018393 183929 10000000
2x-sysThreadDirectFuncs.tsdGet() 0.0187129 187128 10000000
2x-SysTSDSet() 0.00770535 77053 10000000
2x-sysThreadDirectFuncs.tsdSet() 0.00827997 82799 10000000
Local Function -0.00230435 -23043 10000000
Local Param Function -0.00212046 -21204 10000000
Library Function -0.00212046 -21204 10000000
Function Pointer -0.00270521 -27052 10000000
Function Pointer With Param 0.000224235 2242 10000000
Virtual Function 0.000177837 1778 10000000
SysGetRunTime() 1.32272 132271 100000
SysGetRunTime() 1.32336 132335 100000
SysGetRunTime() 1.31992 131992 100000
Context Switch 1.0276 10275 10000
Spawn+Destroy Thread 12.9222 116 9
Key Allocation: only implemented on PalmOS
Malloc (pair) 0.131193 13119 100000
New Message (pair) 0.128523 12852 100000
New Binder (pair) 1.31116 131115 100000

New Component (pair) 173.907 17390709 100000
SysCriticalSection (pair) 0.100518 10051 100000
SLocker (pair) 52.9154 5291541 100000
SLocker::Autolock (pair) 60.8568 6085675 100000
SNestedLocker (pair) 52.4579 5245790 100000
SAtom::Inc/DecStrong() (pair) 0.342099 342098 1000000
sptr<> (pair) 0.351724 351724 1000000
Mutex test: only implemented on PalmOS
SSimpleValue() (pair) 0.0259433 259432 10000000
SValue::Int32() (pair) 0.0233681 23368 1000000
SValue::Int64() (pair) 0.171049 17104 100000
SValue Simple Blob (pair) 0.707435 70743 100000
SValue Join 2 240.542 24054191 100000
SValue Join Many 3876.93 186092 48
Array Lookup Int 0.000755639 7556 10000000
SVector Lookup Int 0.0248628 248628 10000000
SKeyedVector Lookup Int 0.534036 53403 100000
SValue Lookup Int 0.819099 81909 100000
SKeyedVector Lookup Str 0.83075 83075 100000
SValue Lookup Str 1.11793 111793 100000
Array Build Static 2 Int 0.0942135 4710 50001
SVector Build Static 2 Int 0.263043 13152 50001
SVector Build Dynamic 2 Int 0.352327 17616 50001
SKeyedVector Build 2 Int 0.876768 43839 50001
SValue Build 2 Int 238.727 11936589 50001
Array Build Static 10 Int 0.144402 1444 10001
SVector Build Static 10 Int 0.447843 4478 10001
SVector Build Dynamic 10 Int 1.44728 14474 10001
SKeyedVector Build 10 Int 4.22679 42272 10001
SValue Build 10 Int 365.408 3654443 10001
Array Build Static 100 Int 0.642609 643 1001
SVector Build Static 100 Int 0.957646 958 1001
SVector Build Dynamic 100 Int 9.68684 9696 1001
SKeyedVector Build 100 Int 46.485 46531 1001
SValue Build 100 Int 471.385 471855 1001
Array Build Static 1000 Int 5.2307 528 101
SVector Build Static 1000 Int 5.86484 592 101
SVector Build Dynamic 1000 Int 85.6938 8655 101
SKeyedVector Build 1000 Int 541.127 54653 101
SValue Build 1000 Int 1849.11 186759 101
SVector Build Static 2 Str 0.603293 30165 50001
SVector Build Static 2 Copy Str 0.957545 47878 50001
SVector Build Dynamic 2 Str 0.520443 26022 50001
SKeyedVector Build 2 Str 1.50766 75384 50001
SValue Build 2 Str 236.934 11846918 50001
SVector Build Static 10 Str 2.17091 21711 10001
SVector Build Static 10 Copy Str 3.73807 37384 10001
SVector Build Dynamic 10 Str 2.2611 22613 10001
SKeyedVector Build 10 Str 6.68189 66825 10001
SValue Build 10 Str 366.493 3665298 10001
SVector Build Static 100 Str 17.721 17738 1001
SVector Build Static 100 Copy Str 36.5924 36628 1001
SVector Build Dynamic 100 Str 18.609 18627 1001
SKeyedVector Build 100 Str 76.7691 76845 1001
SValue Build 100 Str 552.234 552785 1001
SVector Build Static 1000 Str 157.807 15938 101
SVector Build Static 1000 Copy Str 362.154 36577 101
SVector Build Dynamic 1000 Str 184.818 18666 101
SKeyedVector Build 1000 Str 988.012 99789 101
SValue Build 1000 Str 7299.09 737207 101
fadd 0.0400773 40077 1000000
fmul 0.0417919 41791 1000000
fdiv 0.118562 118562 1000000
ARM's memcpy(16 bytes) return value is correct
ARM's memcpy (congruent), MB/s
1 142.574
4 497.548
8 1062.89
16 1989.93
32 3171.32
64 4860.65
128 5587.51
256 6039.35
1024 4923.55
2048 4927.69
4096 6408.69
8192 6530.97
12288 6545.84
32768 9283.91
49152 4088.2
65536 3538.58
131072 3483.17
524288 1358.8
PalmOS's memcpy (congruent), MB/s
ARM's memcpy (non congruent), MB/s
1 132.861
4 531.443
8 882.521
16 985.01
32 2878.75
64 3940.29
128 5025.33
256 5694.91
1024 6327.22
2048 6446.51
4096 6518.5
8192 6549.7
12288 6173.26
32768 6303.63
49152 2905.51
65536 2442.15
131072 2477.57
524288 1355.19
PalmOS's memcpy (non congruent), MB/s
strlen (uncached, alignment=0), MB/s
0 367.421
1 745.661
5 2262.45
6 2638.34
11 4518.73
17 6797.72
28 10944.3
45 17139.4
73 27890.1
118 44769.8
291 109168.0
409 152800.0
700 259376.0
1109 406174.0
1809 642034.0
2918 980681.0
4727 1.53128e+06
strlen (uncached, alignment=1), MB/s
0 370.382
1 745.77
5 2234.89
6 2584.5
11 4411.52
17 6765.12
28 10871.6
45 17350.2
73 27871.1
118 44769.8
291 108877.0
409 152231.0
700 259376.0
1109 402172.0
1809 632111.0
2918 1.00477e+06
4727 1.53128e+06
strlen (uncached, alignment=4), MB/s
0 371.185
1 748.307
5 2237.09
6 2566.34
11 4428.23
17 6145.19
28 10839.9
45 17350.2
73 27441.1
118 44769.8
291 109169.0
409 152800.0
700 257739.0
1109 402172.0
1809 642034.0
2918 1.00472e+06
4727 1.53128e+06
strlen (uncached, alignment=5), MB/s
0 370.386
1 747.993
5 2214.56
6 2585.65
11 4217.75
17 6778.57
28 10944.3
45 17350.2
73 27890.1
118 44769.8
291 109169.0
409 152800.0
700 257739.0
1109 406166.0
1809 642034.0
2918 980632.0
4727 1.53128e+06
strlen (cached, alignment=0), MB/s
0 338.852
1 679.969
5 2019.72
6 2409.44
11 4032.32
17 6124.03
28 9999.91
45 14329.6
73 25475.8
118 40918.5
291 99842.2
409 139751.0
700 236849.0
1109 372849.0
1809 595309.0
2918 914871.0
4727 1.47601e+06
strlen (cached, alignment=1), MB/s
0 338.818
1 676.226
5 2066.24
6 2389.45
11 4033.12
17 6180.47
28 9948.83
45 15857.1
73 25475.7
118 40918.5
291 99842.2
409 139750.0
700 236849.0
1109 369481.0
1809 586786.0
2918 935760.0
4727 1.4246e+06
strlen (cached, alignment=4), MB/s
0 340.91
1 669.158
5 2026.42
6 2398.84
11 4015.7
17 6187.01
28 9999.91
45 14339.6
73 25475.8
118 40918.5
291 99842.8
409 139751.0
700 236846.0
1109 372849.0
1809 595327.0
2918 914871.0
4727 1.4247e+06
strlen (cached, alignment=5), MB/s
0 341.414
1 680.331
5 1957.76
6 2360.91
11 3971.64
17 6181.4
28 9948.83
45 15850.9
73 21773.8
118 40918.5
291 100087.0
409 139275.0
700 236846.0
1109 369481.0
1809 595327.0
2918 935804.0
4727 1.47601e+06
Pulse Handler 89.687 1345305 15000
PingPong Handler 475.673 2378367 5000
Local Instantiate 1974.41 1974410 1000
Remote Instantiate:
Local Empty Transaction 0.13616 13615 100000
Local Transaction 4.88354 488354 100000
Remote Empty Transaction:
Remote Transaction:
Remote 20xSize Transaction:

======================================================================
FATAL ERROR in libraries/libbinder/support/SupportUtils.cpp(336) process 14321:
Bad type supplied to acquire_object()
----------------------------------------------------------------------
0x40468c85: +0x40468c3c
0x404f749a: +0x404f7312
0x404c90e2: +0x404c8f24
0x4049f9dc: +0x4049f97a
0x404a3695: +0x404a35fa
0x409da492: +0x409d9db8
0x409c55bb: +0x409c4e3c
0x409d189c: +0x409cf5a0
0x409d40aa: const&)>+0x409d2c08
0x4096e137: const&, sptr const&, bool*)>+0x4096d8f6
0x4096b3b7: const&, sptr const&, bool*)>+0x4096b2b8
0x4096cf93: const&, sptr const&, bool*)>+0x4096cf38
0x4096ca5f: const&, sptr const&, bool*)>+0x4096c9cc
0x4096ac4e: const&, sptr const&, bool*)>+0x4096ac00
0x409670cb: const&)>+0x40966e50
0x40957d93: const&)>+0x40956560
0x40960b42: const&, SString const&, bool*)>+0x409608c0
0x4096d8e7: const&, SString const&, bool*)>+0x4096d8b2
0x4096f90b: const&, sptr const&, bool*)>+0x4096f790
0x4096dddf: const&, sptr const&, bool*)>+0x4096d8f6
0x4096b3b7: const&, sptr const&, bool*)>+0x4096b2b8
0x4096cf93: const&, sptr const&, bool*)>+0x4096cf38
0x4096ca5f: const&, sptr const&, bool*)>+0x4096c9cc
0x4096ac4e: const&, sptr const&, bool*)>+0x4096ac00
0x409670cb: const&)>+0x40966e50
0x40957d93: const&)>+0x40956560
0x4046d6d2: +0x4046d490
0x4004d450: <__libc_start_main>+0x4004d370
0x08053071: +0x08053024
======================================================================

Abort, or Ignore and continue? [Ai] - Aborting on fatal error -
/bin/sh: line 1: 14321 Aborted smooved -e /home/ming/pkg.android/openbinder/build/scripts/test.bsh
make: *** [test] Error 134

2008年10月30日 星期四

Google Notebook for Android.

http://www.google.com/notebook/public/07454133468172869619/BDQKlIgoQo8y9uJwj

my Google Notebook for Android.

Ming

2008年10月23日 星期四

Android source is release.

Anyone looking for Android OS running on TV STB, which is using Sigma Design for example.
Contact us. We have TV application UIs on MediaWalker. Anyone interest to run great 2D or 3D GUI on TV STB, or IPTV. Please contact us.

Ming (ming@katdc.com)

I'm looking for...this solution.

making Android Widgets from the Flex builder!!

Anyone plans to do so, please notice me.

Ming (ming@katdc.com)

2008年10月2日 星期四

Speed up UI design for your Android programs

First day on Android Programming? Check this out (http://www.droiddraw.org/)

Andriod Gallery

http://code.google.com/android/adc_gallery/

2008年6月19日 星期四

2008年6月3日 星期二

What's else do we need for Andriod OS to run on TV?

When IPTV or smartphone SoC suppliers start to unvel a chip with HDMI interface output and support up to HD MPEG.4 or H.264 decode. It's time to blur the worlds of smartphone and smartTV?

I think we can call smartTV for TV which can go online and do many other thing as a triple-play terminal at home. As long as you want to go out, just take your handheld "mobileSTB" go with you. You still have voice, video, and data along with you.

There are many IPTV STB SoC cadidates, such as Sigma Design, ST, TI, Intel, Philips, AMD ATI, nVIDIA, Broadcom, IBM, Mavell, 3Dlabs, NEC, Toshiba, even SiS and VIA.

Which can support HD video decode on the TV screen and also portable? That's why Android are not so worry about to support IPTV at this moment. All IPTV middlewares and CA/DRM softwares will port to Android OS eventially.

Which set-top boxes could be the winner? I should say which mobile phone can suppor TV output as a IPTV first?

Don't forget the reason terminate PDAs. Smartphones need a larger screen to be more smart and do more thing. If smartphones can make our TV go on Internet, we don't need IPTV STB anymore.

Ming

2008年5月22日 星期四

$10,000,000 美金(=新台幣3億元) 等您來拿

如果您還沒來的及參加第一屆 Android 開發者挑戰賽, 你只剩1億5千萬.
但無論如何, 您還有機會利用此機會籌措您第一筆創業基金.

別忘了第二屆將在2008H2, 也就是2008年下半年會舉行:
常留意http://code.google.com/android/adc.html網站.
或用Google 快訊(http://www.google.com/alerts) 登記 "Android Developer Challenge"
一有新消息, Google 就會通知您.

要看看得獎的50個作品嗎? 請到
http://android-developers.blogspot.com/2008/05/top-50-applications.html

動心了嗎? 請開始動作 (ACTION!)

1. 下載Android SDK (http://code.google.com/android/download.html)
2. 您要先安裝 Eclipse 3.2, 3.3 (Europa), 且確定有裝 JDK 5 or JDK 6 (JRE 是不夠的)
3. 執行Eclipse, 再依以該網頁之步驟安裝 Android Development Tools plugin
4. 利用Eclipse File>New>Project>Android>Android Project .. 等步驟產生一個新Android程式.
5. 按執行(小綠三角型), 您就可以玩整台 Google Android 手機了.

有任何安裝的問題可email 給我(mingderwang@gmail.com), 或留言.

Good Luck!.

Where can I found the source code for Android porting (Google)

http://code.google.com/p/android/downloads/list

Everything run on top of Dalvik VM, so you only need to port Linux kernel first.

Goodgle Luck!

Ming