<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4339544753706943601</id><updated>2012-01-27T22:05:59.014-08:00</updated><category term='Runs Google Android'/><category term='Android Opensource'/><category term='Bionic libc'/><category term='Google Android Emulator'/><category term='Android device'/><category term='Motorola XOOM'/><category term='USB Host'/><category term='linux kernel'/><category term='android sh script'/><category term='Android Memory'/><category term='Java Profiling'/><category term='Android tools and tips'/><category term='Google Android apps'/><category term='Android sqlite3 and database'/><category term='Google Android Native Apps'/><category term='Flash File System'/><category term='Google Android Audio'/><category term='Android Applications Development'/><title type='text'>Let's talk about Google Android</title><subtitle type='html'>Google Android的那些事儿</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-5454602302277563616</id><published>2011-09-26T01:17:00.000-07:00</published><updated>2011-09-26T01:17:57.364-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android sh script'/><title type='text'>Android sh script, why failed with [ not found</title><content type='html'>A simple sh script, but run failure with error: [ not found.&lt;br /&gt;&lt;blockquote&gt;#!/system/bin/sh&lt;br /&gt;if [ $? eq 0 ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Command run successful"&lt;br /&gt;fi&lt;/blockquote&gt;The same script can run well on Linux.&lt;br /&gt;I dont know why, but I finally got a solution.&lt;br /&gt;Upload a busybox, change it to executable permissions, create a soft link "[" to busybox. Like the following:&lt;br /&gt;&lt;blockquote&gt;-rwxr-xr-x 500&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 500&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1877260 2011-09-22 02:42 busybox&lt;br /&gt;lrwxrwxrwx root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2011-09-26 08:15 [ -&amp;gt; /sbin/busybox&lt;/blockquote&gt;Run the sh script again, which shall give no error any more.&lt;br /&gt;Finally, make sure the searching path $PATH can find command "busybox", and "[".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-5454602302277563616?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/5454602302277563616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=5454602302277563616' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5454602302277563616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5454602302277563616'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2011/09/android-sh-script-why-failed-with-not.html' title='Android sh script, why failed with [ not found'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-5462497820434840420</id><published>2011-07-14T02:55:00.001-07:00</published><updated>2011-07-14T02:59:07.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux kernel'/><title type='text'>Disable Linux kernel version magic check</title><content type='html'>Linux kernel will refuse to load kernel module if the version magic is not match. It can be easily disabled for some ease.&lt;br /&gt;Find linux kernel kernel/module.c, find "check_modinfo" function, comment out "return -ENOEXEC;" for same_magic(...) check function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-5462497820434840420?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/5462497820434840420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=5462497820434840420' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5462497820434840420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5462497820434840420'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2011/07/disable-linux-kernel-version-magic.html' title='Disable Linux kernel version magic check'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-9107181302494297569</id><published>2011-07-14T02:45:00.000-07:00</published><updated>2011-07-14T02:54:26.592-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Host'/><title type='text'>How to get a console with root if Motorola XOOM is working as USB Host and connected with USB devices</title><content type='html'>If Motorola XOOM is connected with USB devices and working as USB Host mode, you will not be able to have adb shell work on PC. The only USB connection is used for other purpose. Here is a tip to have a console with root even the USB connection is used for USB device.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Motorola XOOM is rooted&lt;/li&gt;&lt;li&gt;Push a busybox to Motorola XOOM, make it executable&lt;/li&gt;&lt;li&gt;Connect Motorola XOOM with PC, in a PC cmd window, adb shell to the device, the shell must be a root shell.&lt;/li&gt;&lt;li&gt;Start telnetd: busybox telnetd -l /system/bin/sh&lt;/li&gt;&lt;li&gt;Download a telnet APP for Motorola XOOM, e.g. BlowTorch. Launch telnet client (BlowTorch), telnet to device, a root console is served.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-9107181302494297569?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/9107181302494297569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=9107181302494297569' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/9107181302494297569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/9107181302494297569'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2011/07/how-to-get-console-with-root-if.html' title='How to get a console with root if Motorola XOOM is working as USB Host and connected with USB devices'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-61063264797526452</id><published>2011-07-13T06:00:00.000-07:00</published><updated>2011-07-13T06:34:48.960-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Motorola XOOM'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Host'/><title type='text'>USB Host Mode on Motorola XOOM</title><content type='html'>Motorola XOOM gets USB host functionality. No software changes, this article shows you how to enable Motorola XOOM the ability of USB host functionality, which grant you the potential  to have the ability to read media from external SD card reader, USB HD, USB DVD adapter, USB LAN adapter, and etc.  Potentially, Motorola XOOM can work as a PC and access all kinds of external USB devices. Will introduce the software level changes later to enable reading from SD card reader, connect USB LAN, etc.&lt;br /&gt;Motorola XOOM works as a portable device (just like the mobile phone), provides a micro-usb to connect to PC. In this way, PC can access media in the Motorola XOOM. Motorola XOOM works as a USB client.&lt;br /&gt;Motorola XOOM can also work in Host mode, because it has the USB OTG (on-the-go). How to switch the USB OTG on the Motorola XOOM to USB Host mode? It is very simple. You just need need a USB toggle cable.  The USB toggle cable looks like the following:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-BYPjeaEMLxg/Th2af6PANUI/AAAAAAAAFsY/lXlFEM-zAa4/s1600/toggle.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; display: block; text-align: center; cursor: pointer; width: 400px; height: 103px;" src="http://3.bp.blogspot.com/-BYPjeaEMLxg/Th2af6PANUI/AAAAAAAAFsY/lXlFEM-zAa4/s400/toggle.png" alt="" id="BLOGGER_PHOTO_ID_5628824982281794882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After the Motorola XOOM plugs with this USB toggle cable, it can connect with all kinds of USB devices. To make the USB devices work on Motorola XOOM, linux drivers change may be needed. Will introduce some later.&lt;br /&gt;In the kernel log, following message will be shown after USB toggle cable connected:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-b3QLUEFTTwk/Th2eZ2b3LqI/AAAAAAAAFsg/bzHEIEnPNxE/s1600/dmesg_otg.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 100px;" src="http://2.bp.blogspot.com/-b3QLUEFTTwk/Th2eZ2b3LqI/AAAAAAAAFsg/bzHEIEnPNxE/s400/dmesg_otg.jpg" alt="" id="BLOGGER_PHOTO_ID_5628829276229283490" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-61063264797526452?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/61063264797526452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=61063264797526452' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/61063264797526452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/61063264797526452'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2011/07/usb-host-mode-on-motorola-xoom.html' title='USB Host Mode on Motorola XOOM'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-BYPjeaEMLxg/Th2af6PANUI/AAAAAAAAFsY/lXlFEM-zAa4/s72-c/toggle.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-5843028981826544101</id><published>2011-07-12T22:54:00.000-07:00</published><updated>2011-07-14T03:07:12.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Motorola XOOM'/><category scheme='http://www.blogger.com/atom/ns#' term='USB Host'/><title type='text'>Step by step to enable LAN access for Motorola XOOM</title><content type='html'>With the USB toggle cable connected with Motorola XOOM, Motorola XOOM can work with all kinds of USB devices, such as USB LAN, so to connect with Local Area Network.&lt;br /&gt;Pre-requisite:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A rooted Motorola XOOM&lt;/li&gt;&lt;li&gt;USB toggle cable&lt;/li&gt;&lt;li&gt;USB LAN adapter&lt;/li&gt;&lt;li&gt;Networking Cat5 cable&lt;/li&gt;&lt;/ul&gt;USB LAN adapter:&lt;blockquote&gt;Google USB LAN adapter, there are many USB LAN adapter. A typical USB LAN adapter is shown below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-7HfjQaydsV4/Th6xoFUuz7I/AAAAAAAAFso/S2H7amHjZ-8/s1600/usblan.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 168px;" src="http://3.bp.blogspot.com/-7HfjQaydsV4/Th6xoFUuz7I/AAAAAAAAFso/S2H7amHjZ-8/s400/usblan.png" alt="" id="BLOGGER_PHOTO_ID_5629131886441713586" border="0" /&gt;&lt;/a&gt;&lt;/blockquote&gt;Networking Cat5 cable:&lt;br /&gt;&lt;blockquote&gt;Not sure why, but looks a straight through Networking Cat5 cable does not work with the above USB LAN adapter. Make sure the cable has one end terminated with T568A scheme, the other end terminated with T568B scheme. Google them for more details.&lt;/blockquote&gt;Kernel driver changes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get to know the USB LAN adapter device ID and vendor ID. With USB LAN adapter connected with Motorola XOOM through USB toggle cable, find dmesg kernel log with following information.  Write down the device ID and vendor ID.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-KJ7-kEcixQo/Th6_jP0UqtI/AAAAAAAAFs4/ORmWvHz1CN8/s1600/dmesg.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 139px;" src="http://1.bp.blogspot.com/-KJ7-kEcixQo/Th6_jP0UqtI/AAAAAAAAFs4/ORmWvHz1CN8/s400/dmesg.jpg" alt="" id="BLOGGER_PHOTO_ID_5629147196522015442" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add "CONFIG_USB_NET_DM9601=y" into kernel config file to have drivers/net/usb/dm9601.c compiled into kernel object.&lt;/li&gt;&lt;li&gt;Add vendor ID and device ID into drivers/net/usb/dm9601.c, struct usb_device_id structure, referenced by variable products[]. e.g.&lt;/li&gt;&lt;blockquote&gt;&lt;li&gt;+    {&lt;/li&gt;&lt;li&gt;+        USB_DEVICE(0x0fe6, 0x9700),    /* XXXY */&lt;/li&gt;&lt;li&gt;+        .driver_info = (unsigned long)&amp;amp;dm9601_info,&lt;/li&gt;&lt;li&gt;+     },&lt;/li&gt;&lt;/blockquote&gt;&lt;li&gt;Compile the kernel, and apply new kernel to Motorola XOOM. New kernel will fail to load Wifi module because of un-matched kernel version magic, disable kernel version magic matching will resolve this issue.&lt;/li&gt;&lt;/ul&gt;DHCP client for USB LAN adapter interface:&lt;br /&gt;&lt;blockquote&gt;Power up Motorola XOOM with Network Cat5 cable connected with Motorola XOOM through USB LAN adapter and USB toggle cable. The connection looks like the following. After XOOM is up, run "dhcpcd eth0" in a console with root. After dhcpcd return, eth0 shall get an IP. Ping command shall work. But browser still not work.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-6kriHgZFJdc/Th64i44ZYoI/AAAAAAAAFsw/u8IIeAnBSr0/s1600/usblan_conn.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 160px;" src="http://1.bp.blogspot.com/-6kriHgZFJdc/Th64i44ZYoI/AAAAAAAAFsw/u8IIeAnBSr0/s400/usblan_conn.png" alt="" id="BLOGGER_PHOTO_ID_5629139493783691906" border="0" /&gt;&lt;/a&gt;&lt;/blockquote&gt;Make XOOM browser work in LAN:&lt;br /&gt;&lt;blockquote&gt;In a console with root, run following commands:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;getprop dhcp.eth0.dns1         # get dns1&lt;/li&gt;&lt;li&gt;getprop dhcp.eth0.dns2        # get dns2&lt;/li&gt;&lt;li&gt;setprop net.dns1 dns1&lt;/li&gt;&lt;li&gt;setprop net.dns2 dns2&lt;/li&gt;&lt;li&gt;Browser shall work now&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;How to have USB LAN work automatically:&lt;br /&gt;&lt;blockquote&gt;Write a NETLINK socket program to listen all NETLINK socket event, if eth0 interface is UP, run dhcpcd on eth0 and set net.dns1, net.dns2 with dhcp.eth0.dns1 and dhcp.eth0.dns2. If eth0 interface is DOWN, reset those properties.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-5843028981826544101?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/5843028981826544101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=5843028981826544101' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5843028981826544101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5843028981826544101'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2011/07/step-by-step-to-enable-lan-access-for.html' title='Step by step to enable LAN access for Motorola XOOM'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-7HfjQaydsV4/Th6xoFUuz7I/AAAAAAAAFso/S2H7amHjZ-8/s72-c/usblan.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-4992398225938995990</id><published>2010-08-27T01:22:00.000-07:00</published><updated>2010-08-27T01:48:51.267-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>patch the kernel image boot.img</title><content type='html'>Tools list:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://android-dls.com/files/linux/split_bootimg.zip"&gt;split_bootimg.pl&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://git.source.android.com/?p=platform/system/core.git;a=tree;f=mkbootimg"&gt;mkbootimg&lt;/a&gt;&lt;/li&gt;&lt;li&gt;mkbootfs&lt;/li&gt;&lt;/ol&gt;boot.img contains the linux kernel and the ramdisk, while the default.prop in ramdisk can enable/disable the adb root permission. following is the default.prop contents for a droid product device:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ro.secure=1                        &lt;/li&gt;&lt;li&gt;ro.allow.mock.location=0&lt;/li&gt;&lt;li&gt;ro.debuggable=0                &lt;/li&gt;&lt;li&gt;persist.service.adb.enable=0&lt;/li&gt;&lt;/ul&gt;droid product device with above default.prop has no adb root permissions if the device is not hacked. the default.prop with the following contents has the adb root permissions by default:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ro.secure=0&lt;/li&gt;&lt;li&gt;ro.allow.mock.location=0&lt;/li&gt;&lt;li&gt;ro.debuggable=1&lt;/li&gt;&lt;li&gt;persist.service.adb.enable=1&lt;/li&gt;&lt;/ul&gt;to create a boot.img with such default.prop, here is the steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;split the boot.img: split_bootimg.pl boot.img, after running the command, two files are generated: boot.img-kernel and boot.img-ramdisk.gz.&lt;/li&gt;&lt;li&gt;create a temp folder (e.g. ramdisk), change to that folder, run the following command to extract the boot.img-ramdisk.gz: cat ../boot.img-ramdisk.gz | gzip -d | cpio -idm.&lt;/li&gt;&lt;li&gt;make the changes to the ramdisk file system in ramdisk folder, e.g. change the default.prop file to get adb root permissions.&lt;/li&gt;&lt;li&gt;return the parent folder, and run the following command to recreate the ramdisk package: mkbootfs ./ramdisk | gzip &gt; ramdisk-new.gz&lt;/li&gt;&lt;li&gt;recreate the boot image: mkbootimg --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot-new.img&lt;/li&gt;&lt;/ol&gt;done. flash the boot-new.img to the device with fastboot.&lt;br /&gt;more things can be done with the above steps, such as change the boot up sequence by modify the init.rc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-4992398225938995990?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/4992398225938995990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=4992398225938995990' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/4992398225938995990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/4992398225938995990'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2010/08/patch-kernel-image-bootimg.html' title='patch the kernel image boot.img'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-9136981983629030033</id><published>2010-08-24T18:38:00.000-07:00</published><updated>2010-08-24T18:46:51.236-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash File System'/><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>unyaffs the android image</title><content type='html'>&lt;a href="http://code.google.com/p/unyaffs/"&gt;unyaffs &lt;/a&gt;is a tool to extract files from a yaffs file system image. It supports extract images created by mkyaffs2image. It is useful to patch the system.img and re-generate the system.img.&lt;br /&gt;How to get it:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;download a pre-build binary for linux: http://unyaffs.googlecode.com/files/unyaffs&lt;/li&gt;&lt;li&gt;download the source and compile with gcc -o unyaffs unyaffs.c:&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;http://unyaffs.googlecode.com/files/unyaffs.c&lt;/li&gt;&lt;li&gt;http://unyaffs.googlecode.com/files/unyaffs.h&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-9136981983629030033?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/9136981983629030033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=9136981983629030033' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/9136981983629030033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/9136981983629030033'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2010/08/unyaffs-android-image.html' title='unyaffs the android image'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-6365266593301714889</id><published>2009-09-24T01:34:00.001-07:00</published><updated>2009-09-24T01:35:02.979-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Applications Development'/><title type='text'>E-book: The Busy Coder's Guide to Android Development</title><content type='html'>&lt;the&gt;, NOT BAD. Google it to find details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-6365266593301714889?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/6365266593301714889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=6365266593301714889' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6365266593301714889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6365266593301714889'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2009/09/e-book-busy-coders-guide-to-android.html' title='E-book: The Busy Coder&apos;s Guide to Android Development'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-453881208190037639</id><published>2009-08-06T19:29:00.000-07:00</published><updated>2009-08-06T19:45:13.679-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bionic libc'/><title type='text'>Automatic Memory Leak Tracking on Android</title><content type='html'>Android provides a mechanism to track memory leakage.&lt;br /&gt;In folder bionic/libc/bionic/malloc_leak.c is compiled into /system/lib/libc_debug.so, it is a memory leakage tracking version of libc.so. To enable the memory leakage tracking, replace the /system/lib/libc.so with the /system/lib/libc_debug.so.&lt;br /&gt;&lt;blockquote&gt;&gt; adb shell mv /system/lib/libc.so /system/lib/libc_original.so&lt;br /&gt;&gt; adb shell mv /system/lib/libc_debug.so /system/lib/libc.so &lt;/blockquote&gt;Before doing that, be sure to remount the system partition to 'rw'.&lt;br /&gt;Use 'mv' command may have problem without libc.so, in that case use 'cp' command instead.&lt;br /&gt;With the memory leak tracking, you shall see something like "MALLOC_DEBUG = 1 (leak checker)" in your logcat output.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-453881208190037639?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/453881208190037639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=453881208190037639' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/453881208190037639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/453881208190037639'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2009/08/automatic-memory-leak-tracking-on.html' title='Automatic Memory Leak Tracking on Android'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-4330598096499757827</id><published>2009-06-11T23:48:00.000-07:00</published><updated>2009-06-12T00:14:44.530-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Profiling'/><title type='text'>android memory usage with hprof</title><content type='html'>Android provides some mechanisms to generate hprof data:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Dalvik VM will dump hprof file within /data/misc folder if SIGUSR1 and/or SIGQUIT signal is received. Manually send SIGUSR1 to process: kill -10 pid.&lt;/li&gt;&lt;li&gt;The android provides monkey tool (random testing tool), with --hprof option will generate hprof file within /data/misc folder.&lt;/li&gt;&lt;li&gt;In cupcake release, a new API has been introduced to generate a dump programmatically, the static method dumpHprofData(String fileName) of the Debug class. Example: Debug.dumpHprofData("xxx.hprof").&lt;/li&gt;&lt;/ol&gt;Some tips:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The folder /data/misc shall have 777 permissions.&lt;/li&gt;&lt;li&gt;The hprof file format is heap-dump-tm&lt;timestamp&gt;-pid&lt;pid&gt;.hprof-head and heap-dump-tm&lt;timestamp&gt;-pid&lt;pid&gt;.hprof if android 1.1 release is used.&lt;/li&gt;&lt;li&gt;The hprof file format is heap-dump-tm&lt;timestamp&gt;-pid&lt;pid&gt;.hprof if android 1.5 release is used.&lt;/li&gt;&lt;li&gt;If two files are generated, you need to join the two files into one: type heap-dump-tm&lt;timestamp&gt;-pid&lt;pid&gt;.hprof-head &gt;  dump.hprof; type heap-dump-tm&lt;timestamp&gt;-pid&lt;pid&gt;.hprof &gt;&gt; dump.hprof.&lt;/li&gt;&lt;li&gt;Convert the hprof to standard hprof format: hprofconv dump.hprof out_dump.hprof&lt;/li&gt;&lt;li&gt;Use JProfiler, Eclipse MAT, or other tools to open out_dump.hprof. I tried JProfiler and got the same problems as indicated in &lt;a href="http://osdir.com/ml/android-porting/2009-04/msg00597.html"&gt;http://osdir.com/ml/android-porting/2009-04/msg00597.html&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;Some resources:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Eclipse MAT: http://www.eclipse.org/mat/&lt;/li&gt;&lt;li&gt;MAT standalone: &lt;a href="http://mirror.cc.columbia.edu/pub/software/eclipse/technology/mat/0.7/rcp/MemoryAnalyzer-Incubation-0.7.0.20081210-win32.win32.x86.zip"&gt;MemoryAnalyzer-Incubation-0.7.0.20081210-win32.win32.x86.zip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Hprofconv: http://bigflake.com/HprofConv.c.txt&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-4330598096499757827?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/4330598096499757827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=4330598096499757827' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/4330598096499757827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/4330598096499757827'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2009/06/android-memory-usage-with-hprof.html' title='android memory usage with hprof'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-9180982888105180639</id><published>2009-06-08T20:01:00.000-07:00</published><updated>2009-06-08T20:08:34.956-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Memory'/><title type='text'>Android Java Space OOM</title><content type='html'>The default Android java space heap maximum limitation is 16M. If you are running multimedia applications on android, such as jpg file decoding, video decoding, you may run OOM (Out Of Memory). If memory tuning can not help you on the OOM, you can go to the file: frameworks/base/core/jni/AndroidRuntime.cpp, line 607, change opt.optionString = "-Xmx16m" to opt.optionString = "-Xmx20m" for 20M heap size or even bigger.&lt;br /&gt;The limitation is the upward limitation, it will not actually allocate 20M memory every time in every java application.&lt;br /&gt;Take this solution as the last try, focus on your coding quality first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-9180982888105180639?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/9180982888105180639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=9180982888105180639' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/9180982888105180639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/9180982888105180639'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2009/06/android-java-space-oom.html' title='Android Java Space OOM'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-1588722733251023436</id><published>2009-06-08T19:53:00.001-07:00</published><updated>2009-06-08T20:01:05.445-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Tools to monitor your android system memory and performance</title><content type='html'>Tools to monitor your android/linux system memory and performance:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ps -x&lt;/li&gt;&lt;li&gt;top&lt;/li&gt;&lt;li&gt;cat /proc/meminfo&lt;/li&gt;&lt;li&gt;dumpsys meminfo proc-id&lt;/li&gt;&lt;li&gt;procrank&lt;/li&gt;&lt;li&gt;DDMS (Android SDK tool)&lt;/li&gt;&lt;li&gt;time command-line&lt;/li&gt;&lt;li&gt;vmstat&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-1588722733251023436?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/1588722733251023436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=1588722733251023436' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1588722733251023436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1588722733251023436'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2009/06/tools-to-monitor-your-android-system.html' title='Tools to monitor your android system memory and performance'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-8233984512723461425</id><published>2009-06-08T19:41:00.000-07:00</published><updated>2009-06-08T19:50:30.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Profiling'/><title type='text'>Android java space profiling tool - traceview</title><content type='html'>Android provides a good java space profiling tool: traceview. Traceview can be found in the same folder as adb in Android SDK package. Usage is quite simple and straightforward:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;import android.os.Debug;&lt;/li&gt;&lt;li&gt;Debug.startMethodTracing("tag-name");&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Debug.stopMethodTracing();&lt;/li&gt;&lt;li&gt;Run the Java application&lt;/li&gt;&lt;li&gt;Fetch out the profiling output file on SD card (SD card is needed) root folder: tag-name.trace&lt;/li&gt;&lt;li&gt;traceview tag-name.trace to open the traceview window&lt;/li&gt;&lt;/ol&gt;Insert items 1, 2, 3 into your java source code where you want to do profiling.&lt;br /&gt;For more information about traceview window, refer to http://developer.android.com/guide/developing/tools/traceview.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-8233984512723461425?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/8233984512723461425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=8233984512723461425' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8233984512723461425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8233984512723461425'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2009/06/android-java-space-profiling-tool.html' title='Android java space profiling tool - traceview'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-2287776778944933700</id><published>2009-05-19T01:22:00.000-07:00</published><updated>2009-05-19T01:25:17.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bionic libc'/><title type='text'>fdatasync not found in bionic libc</title><content type='html'>fdatasync(int) declare is found in bionic/libc/include/unistd.h, but it is not actually implemented in libc. I can NOT find the fdatasync symbol in /system/lib/libc.so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-2287776778944933700?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/2287776778944933700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=2287776778944933700' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2287776778944933700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2287776778944933700'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2009/05/fdatasync-not-found-in-bionic-libc.html' title='fdatasync not found in bionic libc'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-744653984574286717</id><published>2009-02-26T20:22:00.000-08:00</published><updated>2009-02-26T20:25:11.994-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>UI/Application Exerciser Monkey</title><content type='html'>The Monkey is a program that runs on your emulator or device and generates pseudo-random streams of user events such as clicks, touches, or gestures, as well as a number of system-level events. You can use the Monkey to stress-test applications that you are developing, in a random yet repeatable manner.&lt;br /&gt;Basic usage of monkey:&lt;br /&gt;&lt;blockquote&gt;usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]&lt;br /&gt;             [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]&lt;br /&gt;             [--ignore-crashes] [--ignore-timeouts]&lt;br /&gt;             [--ignore-security-exceptions] [--monitor-native-crashes]&lt;br /&gt;             [--kill-process-after-error] [--hprof]&lt;br /&gt;             [--pct-touch PERCENT] [--pct-motion PERCENT]&lt;br /&gt;             [--pct-trackball PERCENT] [--pct-syskeys PERCENT]&lt;br /&gt;             [--pct-nav PERCENT] [--pct-majornav PERCENT]&lt;br /&gt;             [--pct-appswitch PERCENT] [--pct-anyevent PERCENT]&lt;br /&gt;             [--wait-dbg] [--dbg-no-events]&lt;br /&gt;             [-s SEED] [-v [-v] ...] [--throttle MILLISEC]&lt;br /&gt;             COUNT&lt;/blockquote&gt;Example: adb shell monkey 1000&lt;br /&gt;#send 1000 events to all applications&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-744653984574286717?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/744653984574286717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=744653984574286717' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/744653984574286717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/744653984574286717'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2009/02/uiapplication-exerciser-monkey.html' title='UI/Application Exerciser Monkey'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-6593847097130246134</id><published>2008-12-10T20:29:00.000-08:00</published><updated>2008-12-10T20:33:17.679-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Applications Development'/><title type='text'>Tips to import sample Android projects to Eclipse</title><content type='html'>I am a newbie to Eclipse and Android applications development. I installed the Eclipse yesterday and tried to take a look at the Android sample to start with. I had problems to import sample project into Eclipse.  Google is always the one I first tried. I found this article: &lt;a href="http://androidcommunity.com/forums/f4/how-to-import-sample-android-projects-to-eclipse-109/"&gt;How to import sample Android projects to Eclipse&lt;/a&gt;. It is helpful to me. I think it will also be helpful to others.&lt;br /&gt;&lt;blockquote&gt;Here is the tips: Simply create project from existing source (then use "Browse" to select sample  shipped with SDK). &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-6593847097130246134?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/6593847097130246134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=6593847097130246134' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6593847097130246134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6593847097130246134'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/12/tips-to-import-sample-android-projects.html' title='Tips to import sample Android projects to Eclipse'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-6537720187937716681</id><published>2008-12-07T18:37:00.000-08:00</published><updated>2008-12-07T18:40:39.194-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android device'/><title type='text'>Nokia N810 with android ported</title><content type='html'>Peter McDermott has an article about the process of porting android to the Nokia N810. Quite a lot of helpful information included.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nthcode.com/pubs/porting-android-to-a-new-device.html"&gt;http://www.nthcode.com/pubs/porting-android-to-a-new-device.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-6537720187937716681?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/6537720187937716681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=6537720187937716681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6537720187937716681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6537720187937716681'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/12/nokia-n810-with-android-ported.html' title='Nokia N810 with android ported'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-7165942091402980564</id><published>2008-12-07T18:32:00.000-08:00</published><updated>2008-12-07T18:37:02.815-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android device'/><title type='text'>Kogan Agora Pro is the next android handset</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_mP_i_I-KUkQ/STyIKBj5gBI/AAAAAAAAFSc/mCWcrJJYTgo/s1600-h/atte1ab1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 204px;" src="http://4.bp.blogspot.com/_mP_i_I-KUkQ/STyIKBj5gBI/AAAAAAAAFSc/mCWcrJJYTgo/s400/atte1ab1.jpg" alt="" id="BLOGGER_PHOTO_ID_5277242569170452498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Kogan Agora Pro has popped up in Australia as the latest android handset and is available for international pre-order. The phone has a 2.5 inch resistive touchscreen, QUERTY keyboard, 3G and GPS for $399.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;HIGHLIGHTS:&lt;/span&gt;&lt;br /&gt;· 2.5-inch TFT-LCD flat touch-sensitive screen&lt;br /&gt;· Integrated QWERTY keyboard&lt;br /&gt;· High-speed 3G network connection&lt;br /&gt;· One-Touch Google Search ™&lt;br /&gt;· Easy Web Browsing&lt;br /&gt;· Easy-to-use email with attachment support for images, videos, music and documents&lt;br /&gt;· Customisable Home Screen with instant Email, text message and IM notifications&lt;br /&gt;· Instant access to mobile Internet services (Gmail ™, YouTube ™, Google Talk ™, Google Calendar ™, Google Maps ™)&lt;br /&gt;· Music Player&lt;br /&gt;· microSD™ expansion slot for all your storage needs&lt;br /&gt;· Wi-Fi network access (included with Kogan Agora Pro)&lt;br /&gt;· GPS navigation capability (included with Kogan Agora Pro)&lt;br /&gt;· 2.0 megapixel camera (included with Kogan Agora Pro)&lt;/blockquote&gt;&lt;a href="http://gizmodo.com/5101708/kogan-agora-pro-is-the-next-android-handset"&gt;http://gizmodo.com/5101708/kogan-agora-pro-is-the-next-android-handset&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-7165942091402980564?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/7165942091402980564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=7165942091402980564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7165942091402980564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7165942091402980564'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/12/kogan-agora-pro-is-next-android-handset.html' title='Kogan Agora Pro is the next android handset'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_mP_i_I-KUkQ/STyIKBj5gBI/AAAAAAAAFSc/mCWcrJJYTgo/s72-c/atte1ab1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-7089460686620578591</id><published>2008-12-07T18:25:00.000-08:00</published><updated>2008-12-07T18:29:24.931-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android device'/><title type='text'>Android Dev Phone 1 for developers</title><content type='html'>The Android Dev Phone 1 is a SIM-unlocked and hardware-unlocked device that is designed for advanced developers. The device ships with a system image that is fully compatible with Android 1.0, so you can rely on it when developing your applications. You can use any SIM in the device and can flash custom Android builds that will work with the unlocked bootloader.&lt;br /&gt;&lt;br /&gt;The device currently costs $399 (USD) (including free shipping in the US), and  will be available for purchase in 18 international markets, including the US,  UK, Germany, Japan, India, Canada, France, Taiwan, Spain, Australia, Singapore,  Switzerland, Netherlands, Austria, Sweden, Finland, Poland, and Hungary.&lt;br /&gt;&lt;br /&gt;More information, see &lt;a href="http://code.google.com/android/dev-devices.html"&gt;http://code.google.com/android/dev-devices.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-7089460686620578591?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/7089460686620578591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=7089460686620578591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7089460686620578591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7089460686620578591'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/12/android-dev-phone-1-for-developers.html' title='Android Dev Phone 1 for developers'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-3369554473928693485</id><published>2008-12-03T00:03:00.000-08:00</published><updated>2008-12-03T00:13:39.150-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bionic libc'/><title type='text'>struct ipv6_mreq has no member named ipv6mr_interface</title><content type='html'>When I am porting ffmpeg to Google Android, I got an error: 'struct ipv6_mreq' has no member named 'ipv6mr_interface'. I dont understand what happened. When I google the related information, I got this article: &lt;a href="http://lkml.indiana.edu/hypermail/linux/kernel/0106.1/0080.html"&gt;Linux kernel headers violate RFC2553&lt;/a&gt;.  The corresponding header file is bionic/libc/kernel/common/linux/in6.h. I have to correct the usage of ipv6_mreq.ipv6mr_interface into ipv6_mreq.ipv6mr_ifindex.&lt;br /&gt;What I am concern is does Bionic libc use the ipv6_mreq structure in a correct way?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-3369554473928693485?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/3369554473928693485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=3369554473928693485' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/3369554473928693485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/3369554473928693485'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/12/struct-ipv6mreq-has-no-member-named.html' title='struct ipv6_mreq has no member named ipv6mr_interface'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-8884008536676081667</id><published>2008-11-24T21:01:00.000-08:00</published><updated>2008-11-24T23:32:36.807-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Opensource'/><title type='text'>Android build system</title><content type='html'>Found document in android open source. They are in myandroid/development/pdk/docs/. Following information are from the "Android build system" section. It is more helpful than "&lt;a href="http://discuz-android.blogspot.com/2008/11/add-new-component-into-open-source.html"&gt;Add a new component into open source Android&lt;/a&gt;".&lt;br /&gt;A makefile defines how to build a particular application. Makefiles typically include all of the following elements:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Name: Give your build a name (LOCAL_MODULE := &lt;build_name&gt;).&lt;/li&gt;&lt;li&gt;Local Variables: Clear local variables with CLEAR_VARS (include $(CLEAR_VARS)).&lt;/li&gt;&lt;li&gt;Files: Determine which files your application depends upon (LOCAL_SRC_FILES := main.c).&lt;/li&gt;&lt;li&gt;Tags: Define tags, as necessary (LOCAL_MODULE_TAGS := eng development).&lt;/li&gt;&lt;li&gt;Libraries: Define whether your application links with other libraries (LOCAL_SHARED_LIBRARIES := cutils).&lt;/li&gt;&lt;li&gt;Template file: Include a template file to define underlining make tools for a particular target (include $(BUILD_EXECUTABLE)).&lt;/li&gt;&lt;/ol&gt;The following snippet illustrates a typical makefile.&lt;br /&gt;&lt;blockquote&gt;LOCAL_PATH := $(my-dir)&lt;br /&gt;include $(CLEAR_VARS)&lt;br /&gt;LOCAL_MODULE := &lt;buil_name&gt;&lt;br /&gt;LOCAL_SRC_FILES := main.c&lt;br /&gt;LOCAL_MODULE_TAGS := eng development&lt;br /&gt;LOCAL_SHARED_LIBRARIES := cutils&lt;br /&gt;include $(BUILD_EXECUTABLE)&lt;br /&gt;(HOST_)EXECUTABLE, (HOST_)JAVA_LIBRARY, (HOST_)PREBUILT, (HOST_)SHARED_LIBRARY,&lt;br /&gt;  (HOST_)STATIC_LIBRARY, PACKAGE, JAVADOC, RAW_EXECUTABLE, RAW_STATIC_LIBRARY,&lt;br /&gt;  COPY_HEADERS, KEY_CHAR_MAP&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-8884008536676081667?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/8884008536676081667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=8884008536676081667' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8884008536676081667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8884008536676081667'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/11/android-build-system.html' title='Android build system'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-9098607564681934772</id><published>2008-11-15T00:06:00.000-08:00</published><updated>2008-11-15T00:08:50.676-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Opensource'/><title type='text'>Good start to port 3-party to Android</title><content type='html'>After you have the open source Android, look into folder external/openssl/README.android. It is a good start to port application to Android.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-9098607564681934772?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/9098607564681934772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=9098607564681934772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/9098607564681934772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/9098607564681934772'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/11/good-start-to-port-3-party-to-android.html' title='Good start to port 3-party to Android'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-8538961680724066788</id><published>2008-11-14T19:35:00.000-08:00</published><updated>2008-11-14T21:23:59.696-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Opensource'/><title type='text'>Add a new component into open source Android</title><content type='html'>The android build system is complicated. It is not easy to create a simple build script to build single component. But it is much easier to add a new component into the build system. Here is a sample to build the "Hello world!" for Android, and it is dynamic linked executable.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;create a directory for the new component in $(YOUR_ANDROID)/external folder: $(YOUR_ANDROID)/external/hello&lt;/li&gt;&lt;li&gt;put the hello.c into the directory: $(YOUR_ANDROID)/external/hello/&lt;/li&gt;&lt;li&gt;create Android.mk in $(YOUR_ANDROID)/external/hello/ directory, the Android.mk likes the following:&lt;br /&gt;LOCAL_PATH:=$(call my-dir)&lt;br /&gt;include $(CLEAR_VARS)&lt;br /&gt;LOCAL_ARM_MODE := arm&lt;br /&gt;LOCAL_SRC_FILES:= \&lt;br /&gt;hello.c&lt;br /&gt;LOCAL_MODULE := hello&lt;br /&gt;include $(BUILD_EXECUTABLE)&lt;/li&gt;&lt;li&gt;add the following line into $(BUILD_SYSTEM)/main.mk,$(BUILD_SYSTEM) is in $(YOUR_ANDROID)/build/core:&lt;br /&gt;external/hello&lt;/li&gt;&lt;li&gt;launch the build command in $(YOUR_ANDROID): make hello&lt;/li&gt;&lt;/ol&gt;you will have the build target hello in $(YOUR_ANDROID)/out/target/product/generic/system/bin.&lt;br /&gt;You can use include $(BUILD_SHARED_LIBRARY) to create shared library. Find more in $(YOUR_ANDROID)/build/core/config.mk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-8538961680724066788?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/8538961680724066788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=8538961680724066788' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8538961680724066788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8538961680724066788'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/11/add-new-component-into-open-source.html' title='Add a new component into open source Android'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-2206076707747518471</id><published>2008-11-12T22:15:00.000-08:00</published><updated>2008-11-12T22:35:30.822-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Opensource'/><title type='text'>build open source android</title><content type='html'>Refer to &lt;a href="http://source.android.com/download"&gt;Get Source (Android Open Source Project) &lt;/a&gt;to get a copy of android open source and make full build. I had a successful build.&lt;br /&gt;The android build system is quite complicated. To make a specific component, run 'make module_name'. Find the module_name in Android.mk, referenced by LOCAL_MODULE. For example, make app_process will build the app_process only.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-2206076707747518471?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/2206076707747518471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=2206076707747518471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2206076707747518471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2206076707747518471'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/11/build-open-source-android.html' title='build open source android'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-2339564704090878822</id><published>2008-10-24T11:01:00.000-07:00</published><updated>2008-10-24T11:05:37.256-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Opensource'/><title type='text'>repo the android opensource via proxy</title><content type='html'>If you are using proxy, you will get error when run: "repo init -u git://android.git.kernel.org/platform/manifest.git".&lt;br /&gt;Here is a tip to repo via proxy.&lt;br /&gt;&lt;blockquote&gt;To use GIT behind a proxy, have a look at:&lt;br /&gt;&lt;a href="http://www.aptgetupdate.de/2007/07/27/git-hinterm-proxy-nutzen/"&gt;http://www.aptgetupdate.de/2007/07/27/git-hinterm-proxy-nutzen/ &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basically the steps are:&lt;br /&gt;1 - sudo apt-get install socket&lt;br /&gt;2 - in your home directory, put a shell script called "proxy-cmd.sh"&lt;br /&gt;containing (replace YOUR_PROXY and YOUR_PROXY_PORT with your own proxy&lt;br /&gt;parameters):&lt;br /&gt;#! /bin/bash&lt;br /&gt;(echo "CONNECT $1:$2 HTTP/1.0"; echo; cat ) | socket YOUR_PROXY&lt;br /&gt;YOUR_PROXY_PORT | (read a; read a; cat )&lt;br /&gt;3 - chmod +x proxy-cmd.sh&lt;br /&gt;4 - export GIT_PROXY_COMMAND=&lt;path&gt;/proxy-cmd.sh &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-2339564704090878822?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/2339564704090878822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=2339564704090878822' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2339564704090878822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2339564704090878822'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/10/repo-android-opensource-via-proxy.html' title='repo the android opensource via proxy'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-7146288008163769091</id><published>2008-10-22T14:31:00.000-07:00</published><updated>2008-10-22T14:34:23.851-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android apps'/><title type='text'>Android 1.0 drawable tables within android.jar</title><content type='html'>&lt;a href="http://www.screaming-penguin.com/info/android_drawables/android_drawables.html"&gt;Android 1.0 drawables&lt;/a&gt; shows the images/icons within the android.jar.&lt;br /&gt;&lt;br /&gt;You can use any of these images/icons with your Android app, the same way you would with your own "drawables," by simple referencing the correct name in the "android.R.drawable" package, for example:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;myMenuItem.setIcon(android.R.drawable.ic_menu_save);&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-7146288008163769091?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/7146288008163769091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=7146288008163769091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7146288008163769091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7146288008163769091'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/10/android-10-drawable-tables-within.html' title='Android 1.0 drawable tables within android.jar'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-7048516387680819036</id><published>2008-10-21T10:23:00.000-07:00</published><updated>2008-10-21T10:28:02.210-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android Native Apps'/><title type='text'>Google Android Native libc Bionic library</title><content type='html'>Google developed a custom library for the C compiler (libc) called Bionic. This was necessary for three main reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;License: they wanted to keep GPL out of user-space. Bionic code uses the BSD license.&lt;/li&gt;&lt;li&gt;Size: the library has to be loaded in each process, so it needs to be small. Bionic is about 200K, or half the size of glibc (the GNU version of libc).&lt;/li&gt;&lt;li&gt;Speed: limited CPU power means it needs to be fast. Bionic has a small size and fast code paths, including a very fast and small custom pthread implementation.&lt;/li&gt;&lt;/ul&gt;Bionic has built-in support for important Android-specific services such as system properties and logging. It doesn’t support certain POSIX features, like C++ exceptions and wide chars, which were not needed on Android. Thus it’s not quite compatible with the gnu libc. All native code must be compiled against bionic, not glibc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-7048516387680819036?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/7048516387680819036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=7048516387680819036' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7048516387680819036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7048516387680819036'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/10/google-android-native-libc-bionic.html' title='Google Android Native libc Bionic library'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-2973442456955431541</id><published>2008-10-21T10:19:00.000-07:00</published><updated>2008-10-21T11:10:46.669-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Google Android gets open</title><content type='html'>Google's open source android now actually open, go to &lt;a href="http://source.android.com/download"&gt;http://source.android.com/download&lt;/a&gt; to have a downloading.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i.i.com.com/cnwk.1d/i/bto/20081021/android_source_project.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://i.i.com.com/cnwk.1d/i/bto/20081021/android_source_project.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-2973442456955431541?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/2973442456955431541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=2973442456955431541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2973442456955431541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2973442456955431541'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/10/google-android-gets-open.html' title='Google Android gets open'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-8992656334003036957</id><published>2008-03-16T18:45:00.000-07:00</published><updated>2008-03-16T19:00:39.624-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android apps'/><title type='text'>OmniGSoft Games on Android</title><content type='html'>"&lt;a href="http://www.omnigsoft.com/Android/ADC/readme.html"&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 0);"&gt;OmniGSoft Games on Android&lt;/span&gt;&lt;/a&gt;" is OmniGSoft's entry for Android Developer Challenge, which consists of ten independent 3D mobile games for Google Android Platform. All games are designed and implemented on OmniGsoft's proprietary cross-platform 3D game engine that supports multiple mobile platforms such as Android, Windows Mobile and JavaME. Powered by OpenGL|ES as 3D graphics power plant and Android accelerometer as an alternative game control, these mobile games are aiming to provide the highest quality of 3D graphics and gaming experience on Android platform.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_mP_i_I-KUkQ/R93Qc3Z3yEI/AAAAAAAADn8/lwpo0YwfxIY/s1600-h/diagram.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_mP_i_I-KUkQ/R93Qc3Z3yEI/AAAAAAAADn8/lwpo0YwfxIY/s400/diagram.png" alt="" id="BLOGGER_PHOTO_ID_5178524340873316418" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-8992656334003036957?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/8992656334003036957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=8992656334003036957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8992656334003036957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8992656334003036957'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/03/omnigsoft-games-on-android.html' title='OmniGSoft Games on Android'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mP_i_I-KUkQ/R93Qc3Z3yEI/AAAAAAAADn8/lwpo0YwfxIY/s72-c/diagram.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-5207776834878217957</id><published>2008-03-02T19:12:00.000-08:00</published><updated>2008-03-02T19:20:12.327-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Using busybox for google android</title><content type='html'>Busybox is a very good tool. Here is some tips to make your android developing life easier:&lt;br /&gt;&lt;blockquote&gt;1. busybox telnetd -l /sbin/sh, this is to start telnetd so you can telnet to the android&lt;br /&gt;2. busybox ftpget/ftpput, this is a ftp tool to download/upload files to/from android&lt;br /&gt;3. busybox telnet, telnet tool&lt;br /&gt;4. busybox tftp, tftp tool&lt;br /&gt;5. busybox wget, wget tool&lt;br /&gt;6. more ...&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-5207776834878217957?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/5207776834878217957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=5207776834878217957' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5207776834878217957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5207776834878217957'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/03/using-busybox-for-google-android.html' title='Using busybox for google android'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-6941301261233660890</id><published>2008-02-26T23:29:00.000-08:00</published><updated>2008-02-26T23:39:30.870-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android Native Apps'/><title type='text'>sizeof(struct v4l2_requestbuffers) different in kernel and in user compiled program</title><content type='html'>$ANDROID_M5_KERNEL/kernel/include/linux/videodev2.h:560&lt;br /&gt;&lt;blockquote&gt;struct v4l2_requestbuffers&lt;br /&gt;{&lt;br /&gt;        __u32                   count;&lt;br /&gt;        enum v4l2_buf_type      type;&lt;br /&gt;        enum v4l2_memory        memory;&lt;br /&gt;        __u32                   reserved[2];&lt;br /&gt;};&lt;/blockquote&gt;The sizeof(struct v4l2_requestbuffers) is 16 bytes running in kernel, while 20 bytes running in user compiled native program. I checked the structure size in detail and found that the sizeof(enum v4l2_buf_type) and sizeof(enum v4l2_memory) are both 1. The actual size of this structure is 4 + 1 + 1 + 8 = 14 bytes. The two continuous enum occupy 4 bytes for DWORD alignment.&lt;br /&gt;&lt;br /&gt;In user compiled native program, the sizeof(enum) is 4. Total sizeof(struct) is 20 bytes. Only the size will not cause big problems. But the variable VIDIOC_REQBUFS will be affected by the size of the structure.  See following _IOWR definition.&lt;br /&gt;&lt;blockquote&gt;#define _IOWR(type,nr,&lt;span style="color: rgb(102, 0, 0);"&gt;size&lt;/span&gt;)     _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(&lt;span style="color: rgb(102, 0, 0);"&gt;size&lt;/span&gt;)))&lt;/blockquote&gt;That causes the VIDIOC_REQBUFS can't be matched in the kernel code.&lt;br /&gt;&lt;br /&gt;To fix the problem, change the structure to the following:&lt;br /&gt;&lt;blockquote&gt;struct v4l2_requestbuffers&lt;br /&gt;{&lt;br /&gt;        __u32                   count;&lt;br /&gt;        enum v4l2_buf_type      type;&lt;br /&gt;        __u32                   reserved[2];&lt;br /&gt;        enum v4l2_memory        memory;&lt;br /&gt;};&lt;/blockquote&gt;For DWORD alignment, both enum will occupy 4 bytes although each one is 1 byte long in kernel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-6941301261233660890?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/6941301261233660890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=6941301261233660890' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6941301261233660890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6941301261233660890'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/02/sizeofstruct-v4l2requestbuffers.html' title='sizeof(struct v4l2_requestbuffers) different in kernel and in user compiled program'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-7762327672595592922</id><published>2008-02-21T21:57:00.000-08:00</published><updated>2008-02-21T22:09:20.552-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android apps'/><title type='text'>More android apps in android m5 sdk</title><content type='html'>We can see more google android applications in the latest google android sdk (m5-rc14). Following is the applications:&lt;br /&gt;&lt;blockquote&gt;#  Prepping: /system/app/AlarmClock.apk:/system/app/AlarmProvider.apk:/system/app/Anagrams.apk:/system/app/ApiDemos.apk:/system/app/Bounce.apk:/system/app/Browser.apk:/system/app/Calculator.apk:/system/app/Calendar.apk:/system/app/CalendarProvider.apk:/system/app/Camera.apk:/system/app/Contacts.apk:/system/app/DataSets.apk:/system/app/Development.apk:/system/app/Drm.apk:/system/app/Fallback.apk:/system/app/GDataFeedsProvider.apk:/system/app/GTalkDiagnostics.apk:/system/app/GTalkSettings.apk:/system/app/GlobalTime.apk:/system/app/Gmail.apk:/system/app/GmailProvider.apk:/system/app/GoogleApps.apk:/system/app/GoogleAppsProvider.apk:/system/app/Home.apk:/system/app/IM.apk:/system/app/ImProvider.apk:/system/app/LocalePicker.apk:/system/app/Maps.apk:/system/app/MasfProxyService.apk:/system/app/MediaProvider.apk:/system/app/Mms.apk:/system/app/Music.apk:/system/app/NotePad.apk:/system/app/PackageInstaller.apk:/system/app/Phone.apk:/system/app/Settings.apk:/system/app/SettingsProvider.apk:/system/app/SetupWizard.apk:/system/app/Snake.apk:/system/app/Street.apk:/system/app/Sync.apk:/system/app/SyncProvider.apk:/system/app/Talk.apk:/system/app/TelephonyProvider.apk:/system/app/Term.apk:/system/app/ToDoList.apk:/system/app/Updater.apk:/system/app/Vending.apk:/system/app/VoiceDialer.apk:/system/app/Voicemail.apk:/system/app/YouTube.apk:/system/app/gtalkservice.apk&lt;br /&gt;File not found: /system/app/AlarmClock.apk&lt;br /&gt;File not found: /system/app/AlarmProvider.apk&lt;br /&gt;File not found: /system/app/Anagrams.apk&lt;br /&gt;File not found: /system/app/ApiDemos.apk&lt;br /&gt;File not found: /system/app/Bounce.apk&lt;br /&gt;File not found: /system/app/Calculator.apk&lt;br /&gt;File not found: /system/app/Calendar.apk&lt;br /&gt;File not found: /system/app/CalendarProvider.apk&lt;br /&gt;File not found: /system/app/Camera.apk&lt;br /&gt;File not found: /system/app/DataSets.apk&lt;br /&gt;File not found: /system/app/Drm.apk&lt;br /&gt;File not found: /system/app/GDataFeedsProvider.apk&lt;br /&gt;File not found: /system/app/GTalkDiagnostics.apk&lt;br /&gt;File not found: /system/app/GlobalTime.apk&lt;br /&gt;File not found: /system/app/Gmail.apk&lt;br /&gt;File not found: /system/app/GmailProvider.apk&lt;br /&gt;File not found: /system/app/IM.apk&lt;br /&gt;File not found: /system/app/LocalePicker.apk&lt;br /&gt;File not found: /system/app/Mms.apk&lt;br /&gt;File not found: /system/app/Music.apk&lt;br /&gt;File not found: /system/app/NotePad.apk&lt;br /&gt;File not found: /system/app/PackageInstaller.apk&lt;br /&gt;File not found: /system/app/Settings.apk&lt;br /&gt;File not found: /system/app/SetupWizard.apk&lt;br /&gt;File not found: /system/app/Snake.apk&lt;br /&gt;File not found: /system/app/Street.apk&lt;br /&gt;File not found: /system/app/Sync.apk&lt;br /&gt;File not found: /system/app/SyncProvider.apk&lt;br /&gt;File not found: /system/app/Talk.apk&lt;br /&gt;File not found: /system/app/Term.apk&lt;br /&gt;File not found: /system/app/ToDoList.apk&lt;br /&gt;File not found: /system/app/Updater.apk&lt;br /&gt;File not found: /system/app/Vending.apk&lt;br /&gt;File not found: /system/app/VoiceDialer.apk&lt;br /&gt;File not found: /system/app/Voicemail.apk&lt;br /&gt;File not found: /system/app/YouTube.apk&lt;br /&gt; Prep complete.&lt;/blockquote&gt;Interesting that there are streat.apk, I guess it may be google streat view application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-7762327672595592922?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/7762327672595592922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=7762327672595592922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7762327672595592922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7762327672595592922'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/02/more-android-apps-in-android-m5-sdk.html' title='More android apps in android m5 sdk'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-5363310175918119030</id><published>2008-02-21T21:32:00.000-08:00</published><updated>2008-02-21T21:52:00.706-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android Native Apps'/><title type='text'>Check on "Allow old ABI binaries ..." got Illegal instruction</title><content type='html'>With the google android kernel source, after "make goldfish_defconfig", check on "Kernel Features" -&gt; "Allow old ABI binaries to run with this kernel", I got following simple native program failed with "Illegal instruction". The test native program source is in the following:&lt;br /&gt;&lt;blockquote&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;signal.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;unistd.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;&lt;br /&gt;void _sig_handler(int signo)&lt;br /&gt;{&lt;br /&gt;  printf("Got it: %d, %x, \n", signo, &amp;amp;signo);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int&lt;br /&gt;main(int argc, char * argv[])&lt;br /&gt;{&lt;br /&gt;  struct sigaction sa;&lt;br /&gt;&lt;br /&gt;  memset(&amp;amp;sa, 0x0, sizeof(sa));&lt;br /&gt;  sa.sa_flags = SA_RESTART;&lt;br /&gt;  sa.sa_handler =  _sig_handler;&lt;br /&gt;  if (sigaction(SIGALRM, &amp;amp;sa, NULL) &lt; 0) {&lt;br /&gt;    perror("sigaction");&lt;br /&gt;    return -1;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  alarm(1);&lt;br /&gt;  sleep(2);&lt;br /&gt;  printf("Sleep ... done\n");&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;/blockquote&gt;Follow the article &lt;a href="http://honeypod.blogspot.com/2007/12/initialize-libc-for-android.html"&gt;Initialize libc for Android&lt;/a&gt; to create a dynamic linked android native program, and upload it to emulator. This native program will end with "Illegal instruction".&lt;br /&gt;&lt;br /&gt;ABI is abbreviated of Application Binary Interface, but I dont know why it will have such problems when check on Old ABI binaries. So dont use it before you know you have to and how to.&lt;br /&gt;&lt;br /&gt;Tips:&lt;br /&gt;1. after create a new kernel file, e.g. zImage, use -kernel zImage to use it in android emulator.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-5363310175918119030?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/5363310175918119030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=5363310175918119030' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5363310175918119030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5363310175918119030'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/02/check-on-allow-old-abi-binaries-got.html' title='Check on &quot;Allow old ABI binaries ...&quot; got Illegal instruction'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-6931296582757371676</id><published>2008-02-01T19:55:00.000-08:00</published><updated>2008-02-01T20:03:05.911-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android Audio'/><title type='text'>Google Android is using ALSA as audio</title><content type='html'>The Google Android Emulator is using /dev/eac as the audio device. The /dev/eac is the Android QEMU audio driver. The ioctl interface is empty. There is a comment line giving the hints that Google Android is going to use ALSA as audio.&lt;br /&gt;&lt;blockquote style="font-style: italic; color: rgb(0, 0, 0);"&gt;static int goldfish_audio_ioctl(struct inode* ip, struct file* fp, unsigned int cmd, unsigned long arg)&lt;br /&gt;{&lt;br /&gt;        &lt;span style="color: rgb(102, 0, 0);"&gt;/* temporary workaround, until we switch to the ALSA API */&lt;/span&gt;&lt;br /&gt;        if (cmd == 315)&lt;br /&gt;                return -1;&lt;br /&gt;        else&lt;br /&gt;                return 0;&lt;br /&gt;}&lt;/blockquote&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;ALSA Introduction:&lt;/span&gt;&lt;br /&gt;The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system. Here is the &lt;a href="http://www.alsa-project.org/main/index.php/Main_Page"&gt;Advanced Linux Sound Architecture (ALSA) project homepage&lt;/a&gt;.  ALSA has the following significant features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Efficient support for all types of audio interfaces, from consumer sound cards to professional multichannel audio interfaces.&lt;/li&gt;&lt;li&gt;Fully modularized sound drivers.&lt;/li&gt;&lt;li&gt;SMP and thread-safe design.&lt;/li&gt;&lt;li&gt;User space library (alsa-lib) to simplify application programming and provide higher level functionality.&lt;/li&gt;&lt;li&gt;Support for the older Open Sound System (OSS) API, providing binary compatibility for most OSS programs.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-6931296582757371676?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/6931296582757371676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=6931296582757371676' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6931296582757371676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6931296582757371676'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/02/google-android-is-using-alsa-as-audio.html' title='Google Android is using ALSA as audio'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-8413775826403761483</id><published>2008-01-31T23:14:00.000-08:00</published><updated>2008-01-31T23:39:12.654-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>trying building shared library for google android</title><content type='html'>There is an article &lt;a href="http://honeypod.blogspot.com/2007/12/shared-library-hello-world-for-android.html"&gt;Shared library "Hello World!" for Android&lt;/a&gt;,  describes how to create a simple shared library for google android, and shows how to link with the shared library to create a dynamic linked executable. The steps are correct, but it is not easy to create a shared library for google android with an existing linux distribution open source software.&lt;br /&gt;&lt;br /&gt;Here is some findings when I tried to create a shared library for google android with a open source software:&lt;br /&gt;1. pthread related functions are implemented in google android libc.so&lt;br /&gt;2. no stderr, stdin, stdout definition are found in google android&lt;br /&gt;3. some function mangling is different, such as strtod, strtol, isspace, and etc. Some can be fixed with some MACRO variable, such as __NO_INLINE__. Need to identify one by one, read the include head files in CROSS_COMPILE_FOLDER /arm-none-linux-gnueabi/libc/usr/include/&lt;br /&gt;4. no mkstemp64, open64, and other xxx64 functions found&lt;br /&gt;&lt;br /&gt;Following are the pthread found in google android /system/lib/libc.so:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;    42: 0000a41c    32 FUNC    GLOBAL DEFAULT    7 pthread_cond_signal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;    61: 0000a26c    56 FUNC    GLOBAL DEFAULT    7 pthread_mutexattr_gettype&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;    64: 0000a510    32 FUNC    GLOBAL DEFAULT    7 pthread_attr_destroy&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;    69: 0000a144    16 FUNC    GLOBAL DEFAULT    7 pthread_attr_getstacksize&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;    71: 0000afa0   620 FUNC    GLOBAL DEFAULT    7 pthread_create&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;    75: 0000a3a8    28 FUNC    GLOBAL DEFAULT    7 pthread_getspecific&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;    86: 0000a050    72 FUNC    GLOBAL DEFAULT    7 pthread_attr_init&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;    92: 0000ad60   304 FUNC    GLOBAL DEFAULT    7 pthread_exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   119: 0000a1b0    24 FUNC    GLOBAL DEFAULT    7 pthread_attr_getstack&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   165: 0000a15c    24 FUNC    GLOBAL DEFAULT    7 pthread_attr_getstackaddr&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   177: 0000a8c8   228 FUNC    GLOBAL DEFAULT    7 pthread_key_delete&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   202: 0000a254    24 FUNC    GLOBAL DEFAULT    7 pthread_mutexattr_destroy&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   208: 0000a22c    16 FUNC    GLOBAL DEFAULT    7 pthread_equal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   265: 0000a1ec    16 FUNC    GLOBAL DEFAULT    7 pthread_attr_getguardsize&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   299: 0000aad8   188 FUNC    GLOBAL DEFAULT    7 pthread_cond_timedwait_mo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   340: 0000ac58   176 FUNC    GLOBAL DEFAULT    7 pthread_detach&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   352: 0000a0f0    16 FUNC    GLOBAL DEFAULT    7 pthread_attr_getschedpoli&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   368: 0000a154     8 FUNC    GLOBAL DEFAULT    7 pthread_attr_setstackaddr&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   387: 0000a4b0    96 FUNC    GLOBAL DEFAULT    7 pthread_getschedparam&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   441: 0000a43c    32 FUNC    GLOBAL DEFAULT    7 pthread_cond_broadcast&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   459: 0000a45c    84 FUNC    GLOBAL DEFAULT    7 pthread_setschedparam&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   471: 0000a9ac   176 FUNC    GLOBAL DEFAULT    7 pthread_key_create&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   499: 0000a3cc    80 FUNC    GLOBAL DEFAULT    7 pthread_kill&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   505: 0000aa5c   124 FUNC    GLOBAL DEFAULT    7 pthread_cond_timeout_np&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   512: 0000a1fc    44 FUNC    GLOBAL DEFAULT    7 pthread_getattr_np&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   514: 0000a120    36 FUNC    GLOBAL DEFAULT    7 pthread_attr_setstacksize&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   546: 0000a3c4     8 FUNC    GLOBAL DEFAULT    7 pthread_sigmask&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   559: 0000a35c    16 FUNC    GLOBAL DEFAULT    7 pthread_cond_init&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   643: 0000a174    60 FUNC    GLOBAL DEFAULT    7 pthread_attr_setstack&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   647: 0000a2a4    64 FUNC    GLOBAL DEFAULT    7 pthread_mutexattr_settype&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   681: 0000a0d0    20 FUNC    GLOBAL DEFAULT    7 pthread_attr_getdetachsta&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   694: 0000a690   180 FUNC    GLOBAL DEFAULT    7 pthread_mutex_unlock&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   772: 0000a228     4 FUNC    GLOBAL DEFAULT    7 pthread_self&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   778: 0000a23c    24 FUNC    GLOBAL DEFAULT    7 pthread_mutexattr_init&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   788: 00009630     0 FUNC    GLOBAL DEFAULT    7 __pthread_clone&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   818: 0000a344    24 FUNC    GLOBAL DEFAULT    7 pthread_mutex_destroy&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   826: 0000a744   388 FUNC    GLOBAL DEFAULT    7 pthread_mutex_lock&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   831: 0000ac50     8 FUNC    GLOBAL DEFAULT    7 pthread_cond_wait&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   845: 0000a1c8    36 FUNC    GLOBAL DEFAULT    7 pthread_attr_setguardsize&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   858: 0000a55c   308 FUNC    GLOBAL DEFAULT    7 pthread_mutex_trylock&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   869: 0000a36c    24 FUNC    GLOBAL DEFAULT    7 pthread_cond_destroy&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   874: 0000a0e4    12 FUNC    GLOBAL DEFAULT    7 pthread_attr_setschedpoli&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   886: 0000a2e4    96 FUNC    GLOBAL DEFAULT    7 pthread_mutex_init&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   920: 0000a100    16 FUNC    GLOBAL DEFAULT    7 pthread_attr_setschedpara&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   936: 0000a098    56 FUNC    GLOBAL DEFAULT    7 pthread_attr_setdetachsta&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   942: 0000ad08    88 FUNC    GLOBAL DEFAULT    7 pthread_join&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   952: 0000ab94   188 FUNC    GLOBAL DEFAULT    7 pthread_cond_timedwait&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   963: 0000a110    16 FUNC    GLOBAL DEFAULT    7 pthread_attr_getschedpara&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 51);"&gt;   967: 0000a384    36 FUNC    GLOBAL DEFAULT    7 pthread_setspecific&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-8413775826403761483?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/8413775826403761483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=8413775826403761483' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8413775826403761483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8413775826403761483'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/trying-building-shared-library-for.html' title='trying building shared library for google android'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-6121891985238296726</id><published>2008-01-17T19:33:00.000-08:00</published><updated>2008-01-17T19:50:31.910-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android sqlite3 and database'/><title type='text'>Set proxy for android web browser</title><content type='html'>There is no UI for proxy settings for android web browser. But the android web browser will read the proxy settings in its settings database.&lt;br /&gt;Here is the instructions to enable the proxy in the android web browser.&lt;br /&gt;&lt;ol style="color: rgb(102, 0, 0);"&gt;&lt;li&gt;&gt; adb shell&lt;/li&gt;&lt;li&gt;#  sqlite3 /data/data/com.google.android.providers.settings/databases/settings.db&lt;/li&gt;&lt;li&gt;sqlite&gt; INSERT INTO system VALUES(99,’http_proxy', 'proxy:port');&lt;/li&gt;&lt;li&gt;sqlite&gt;.exit&lt;/li&gt;&lt;/ol&gt;You can talk to &lt;span style="color: rgb(102, 0, 0);"&gt;settings.db&lt;/span&gt; for more information.&lt;br /&gt;&lt;ol style="color: rgb(102, 0, 0);"&gt;&lt;li&gt;sqlite&gt; SELECT * FROM system;&lt;/li&gt;&lt;li&gt;sqlite&gt; .tables&lt;/li&gt;&lt;li&gt;sqlite&gt; .databases&lt;/li&gt;&lt;li&gt;sqlite&gt; .schema table_name&lt;br /&gt;&lt;/li&gt;&lt;li&gt;sqlite&gt; more SQL expression to talk to the tables&lt;/li&gt;&lt;/ol&gt;Don't forget the ';' at the end of the SQL expression.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-6121891985238296726?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/6121891985238296726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=6121891985238296726' title='52 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6121891985238296726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6121891985238296726'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/set-proxy-for-android-web-browser.html' title='Set proxy for android web browser'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>52</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-8536194636968540042</id><published>2008-01-16T20:35:00.000-08:00</published><updated>2008-01-16T20:48:35.398-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Create google android strace tool</title><content type='html'>Prerequisite, you already have the cross compiler downloaded from &lt;a href="http://www.codesourcery.com/gnu_toolchains/arm/download.html"&gt;download GNU toolchain site&lt;/a&gt;, make sure you select ARM GNU/Linux, and IA32 GNU/Linux.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the strace source distribution from &lt;a href="http://sourceforge.net/project/platformdownload.php?group_id=2861"&gt;SourceForge strace project&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract the strace package on your linux machine&lt;/li&gt;&lt;li&gt;Set your cross compiler information with command: &lt;span style="color: rgb(102, 0, 0);"&gt;# export CC=your_cross_compiler_folder/bin/arm-none-linux-gnueabi-gcc&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Add &lt;span style="color: rgb(102, 0, 0);"&gt;your_cross_compiler_folder/bin&lt;/span&gt; into your  &lt;span style="color: rgb(102, 0, 0);"&gt;$PATH&lt;/span&gt; for path searching&lt;/li&gt;&lt;li&gt;Change your current folder to strace package extract folder, use command: &lt;span style="color: rgb(102, 0, 0);"&gt;#   ./configure -host=arm-linux&lt;/span&gt;&lt;/li&gt;&lt;li&gt;You have the Makefile generated, edit it, append &lt;span style="color: rgb(102, 0, 0);"&gt;-static&lt;/span&gt; after &lt;span style="color: rgb(102, 0, 0);"&gt;CFLAGS &lt;/span&gt;variable in Makefile&lt;/li&gt;&lt;li&gt;Compile it with simple command: &lt;span style="color: rgb(102, 0, 0);"&gt;#   make&lt;/span&gt;&lt;/li&gt;&lt;li&gt;You have the strace now, verify it with command: &lt;span style="color: rgb(102, 0, 0);"&gt;#  file strace&lt;/span&gt;, you shall see "&lt;span style="color: rgb(102, 0, 0);"&gt;strace: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, statically linked, not stripped&lt;/span&gt;"&lt;/li&gt;&lt;/ol&gt;Done, you have another powerful tool for your android&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-8536194636968540042?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/8536194636968540042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=8536194636968540042' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8536194636968540042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8536194636968540042'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/create-google-android-strace-tool.html' title='Create google android strace tool'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-6530276373834974262</id><published>2008-01-16T17:27:00.000-08:00</published><updated>2008-01-16T17:43:32.303-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Runs Google Android'/><title type='text'>Manually start android in the google android emulator</title><content type='html'>The google android kernel will invoke services listed in the file /etc/init.rc after the kernel is started up. The /etc/init.rc is included in the ramdisk.img. Find the ramdisk.img in $EMULATOR_SDK_FOLDER/tools/lib/images/. One can change the ramdisk.img to change the init.rc and so to change the google android startup sequence.&lt;br /&gt;&lt;br /&gt;Follow the tips in &lt;a href="http://discuz-android.blogspot.com/2008/01/step-by-step-to-createmodify-ramdiskimg.html"&gt;Step by step to create/modify ramdisk.img&lt;/a&gt; to change ramdisk.img.&lt;br /&gt;&lt;br /&gt;Following is the items to comment out in &lt;span style="color: rgb(102, 0, 0);"&gt;init.rc&lt;/span&gt; to stop the android to be loaded at the initial time:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Find the &lt;span style="color: rgb(102, 0, 0);"&gt;service &lt;/span&gt;section in the init.rc (following the &lt;span style="color: rgb(102, 0, 0);"&gt;startup &lt;/span&gt;section)&lt;/li&gt;&lt;li&gt;Comment out the &lt;span style="color: rgb(102, 0, 0);"&gt;zygote &lt;/span&gt;sub-section, and &lt;span style="color: rgb(102, 0, 0);"&gt;runtime &lt;/span&gt;sub-section&lt;/li&gt;&lt;li&gt;Recreate the ramdisk.img and replace the original ramdisk.img (backup the original if you want)&lt;/li&gt;&lt;li&gt;Restart the google android emulator, use &lt;span style="color: rgb(102, 0, 0);"&gt;-debug-kernel&lt;/span&gt; to see more information&lt;/li&gt;&lt;/ol&gt;Comment out lines are listed for your reference:&lt;br /&gt;&lt;blockquote style="color: rgb(102, 0, 0);"&gt;    #zygote {&lt;br /&gt;        #exec /system/bin/app_process&lt;br /&gt;        #args {&lt;br /&gt;            #0 -Xzygote&lt;br /&gt;            #1 /system/bin&lt;br /&gt;            #2 --zygote&lt;br /&gt;        #}&lt;br /&gt;        #autostart 1&lt;br /&gt;    #}&lt;br /&gt;    #runtime {&lt;br /&gt;        #exec /system/bin/runtime&lt;br /&gt;        #autostart 1&lt;br /&gt;    #}&lt;/blockquote&gt;After the google android emulator is started up, manually start up the google android services below:&lt;br /&gt;&lt;ol style="color: rgb(102, 0, 0);"&gt;&lt;li&gt;#    adb shell    to create a console&lt;br /&gt;&lt;/li&gt;&lt;li&gt;#   /system/bin/app_process -Xzygote /system/bin --zygote &amp;amp;&lt;/li&gt;&lt;li&gt;#   /system/bin/runtime &amp;amp;&lt;/li&gt;&lt;/ol&gt;Upload a &lt;span style="color: rgb(102, 0, 0);"&gt;strace &lt;/span&gt;tool to trace the above services:&lt;br /&gt;&lt;ol style="color: rgb(102, 0, 0);"&gt;&lt;li&gt;#   strace -ff -F -tt -s 200 -o /tmp/log/zygote /system/bin/app_process -Xzygote /system/bin --zygote &amp;amp;&lt;/li&gt;&lt;li&gt;#   strace -ff -F -tt -s 200 -o /tmp/log/runtime /system/bin/runtime &amp;amp;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-6530276373834974262?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/6530276373834974262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=6530276373834974262' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6530276373834974262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/6530276373834974262'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/manually-start-android-in-google.html' title='Manually start android in the google android emulator'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-576707473091076063</id><published>2008-01-16T00:12:00.000-08:00</published><updated>2008-01-16T00:20:36.869-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android apps'/><title type='text'>What can we expect for the google android next release</title><content type='html'>We have google android release m3-rc37a.&lt;br /&gt;There are following files in the folder /system/app/:&lt;br /&gt;&lt;blockquote style="color: rgb(102, 0, 0);"&gt;Browser.apk&lt;br /&gt;Contacts.apk&lt;br /&gt;ContactsProvider.apk&lt;br /&gt;Development.apk&lt;br /&gt;Fallback.apk&lt;br /&gt;GoogleApps.apk&lt;br /&gt;GoogleAppsProvider.apk&lt;br /&gt;Home.apk&lt;br /&gt;ImProvider.apk&lt;br /&gt;Maps.apk&lt;br /&gt;MediaProvider.apk&lt;br /&gt;Phone.apk&lt;br /&gt;SettingsProvider.apk&lt;br /&gt;TelephonyProvider.apk&lt;br /&gt;XmppService.apk&lt;br /&gt;XmppSettings.apk&lt;/blockquote&gt;&lt;br /&gt;While if we manually start the android, we can see some error informations:&lt;br /&gt;&lt;blockquote style="color: rgb(102, 0, 0);"&gt;Prepping: /system/app/AlarmProvider.apk:/system/app/Browser.apk:/system/app/Ca&lt;br /&gt;lendar.apk:/system/app/Camera.apk:/system/app/Contacts.apk:/system/app/Developm&lt;br /&gt;ent.apk:/system/app/GDataFeedsProvider.apk:/system/app/Gmail.apk:/system/app/Gm&lt;br /&gt;ailProvider.apk:/system/app/GoogleApps.apk:/system/app/GoogleAppsProvider.apk:/&lt;br /&gt;system/app/Home.apk:/system/app/ImProvider.apk:/system/app/Maps.apk:/system/app&lt;br /&gt;/MediaPickerActivity.apk:/system/app/MediaProvider.apk:/system/app/Phone.apk:/s&lt;br /&gt;ystem/app/PimProvider.apk:/system/app/ApiDemos.apk:/system/app/SettingsProvider&lt;br /&gt;.apk:/system/app/Sms.apk:/system/app/SyncProvider.apk:/system/app/TelephonyProv&lt;br /&gt;ider.apk:/system/app/XmppService.apk:/system/app/YouTube.apk&lt;br /&gt;&lt;br /&gt;File not found: /system/app/AlarmProvider.apk&lt;br /&gt;File not found: /system/app/Calendar.apk&lt;br /&gt;File not found: /system/app/Camera.apk&lt;br /&gt;File not found: /system/app/GDataFeedsProvider.apk&lt;br /&gt;File not found: /system/app/Gmail.apk&lt;br /&gt;File not found: /system/app/GmailProvider.apk&lt;br /&gt;File not found: /system/app/MediaPickerActivity.apk&lt;br /&gt;File not found: /system/app/PimProvider.apk&lt;br /&gt;File not found: /system/app/ApiDemos.apk&lt;br /&gt;File not found: /system/app/Sms.apk&lt;br /&gt;File not found: /system/app/SyncProvider.apk&lt;br /&gt;File not found: /system/app/YouTube.apk&lt;br /&gt; Prep complete&lt;/blockquote&gt;We are expecting the next release, what kind of applications will be provided next time?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-576707473091076063?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/576707473091076063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=576707473091076063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/576707473091076063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/576707473091076063'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/what-can-we-expect-for-google-android.html' title='What can we expect for the google android next release'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-7290372945614382291</id><published>2008-01-15T23:31:00.000-08:00</published><updated>2008-01-16T00:02:47.703-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Can't execute native command on google android emulator</title><content type='html'>I created hello.c, compiled successfully with the cross compiler.&lt;br /&gt;But I failed to run it on the target google android emulator. The error is: xxx: not found.&lt;br /&gt;I checked the compiled file, it looks just fine. It really puzzled me.&lt;br /&gt;&lt;br /&gt;At last, I got hints that it is because of there is no base libraries necessary on the google android emulator. For example, there is no /usr/lib directory, which should contain many .so files.&lt;br /&gt;&lt;br /&gt;Simply re-create your native command with '-static' parameter, and try again.&lt;br /&gt;Check your compiled file with the following command to ensure:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;# file a.out&lt;/span&gt;&lt;br /&gt;possible output looks like:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, statically linked, not stripped&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-7290372945614382291?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/7290372945614382291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=7290372945614382291' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7290372945614382291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7290372945614382291'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/cant-execute-native-command-on-google.html' title='Can&apos;t execute native command on google android emulator'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-1405361331487999459</id><published>2008-01-15T21:10:00.000-08:00</published><updated>2008-01-15T21:28:49.438-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Customize google android system.img for emulator</title><content type='html'>The google android emulator included in the google android sdk is limited. Although you can use 'adb push' to upload more tools, but one has to do it again next time. Follow the steps to create a enhanced system.img:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;system.img is yaffs2 flash file system, so firstly you need the mkfs.yaffs2 tool, download it in the following link: &lt;a href="http://openhandsetalliance.org.cn/bbs/viewthread.php?tid=32&amp;amp;extra=page%3D1"&gt;Release Android Yaffs2 Tool (Both X86 And ARM)&lt;/a&gt;. One has to be a registered user to download the tools.&lt;/li&gt;&lt;li&gt;use the 'adb push' to upload tools to android emulator, executables in /system/bin/, libraries in /system/lib, one can also create folder. One need change the file mode necessary.&lt;/li&gt;&lt;li&gt;upload the ARM mkfs.yaffs2 tool, use the following command to create system.img: &lt;span style="color: rgb(102, 0, 0);"&gt;#  mkfs.yaffs2 /system /system.img&lt;/span&gt;&lt;/li&gt;&lt;li&gt;download the system.img to local with command 'adb pull', replace the system.img in your emulator folder/tools/lib/images/&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-1405361331487999459?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/1405361331487999459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=1405361331487999459' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1405361331487999459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1405361331487999459'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/customize-google-android-systemimg-for.html' title='Customize google android system.img for emulator'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-5036186240533497984</id><published>2008-01-14T00:59:00.000-08:00</published><updated>2008-01-14T01:17:11.955-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Step by step to create/modify ramdisk.img</title><content type='html'>Benno's blog has an article to &lt;a href="http://benno.id.au/blog/2007/11/18/android-framework-startup"&gt;change the ramdisk image&lt;/a&gt;, I tried it and give more details here.&lt;br /&gt;&lt;br /&gt;ramdisk.img is included in the google android sdk, it exists in folder $SDK_ROOT/tools/lib/images/ramdisk.img. The ramdisk.img included in the google android sdk is a gzipped ramdisk.cpio file.&lt;br /&gt;&lt;br /&gt;Here is the steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Upload the ramdisk.img to your linux machine&lt;/li&gt;&lt;li&gt;Change the ramdisk.img name to ramdisk.cpio.gz, and extract it by: &lt;span style="color: rgb(153, 0, 0);"&gt;#  gzip -d ramdisk.cpio.gz&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Create a temporary folder, say tmp, copy ramdisk.cpio to tmp folder&lt;/li&gt;&lt;li&gt;Extract the ramdisk.cpio in the tmp folder with command: &lt;span style="color: rgb(102, 0, 0);"&gt;#  cpio -i -F ramdisk.cpio&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Remove the ramdisk.cpio in the tmp folder, and make any changes you want to the extracted ramdisk.cpio in tmp folder&lt;/li&gt;&lt;li&gt;Recreate the ramdisk.cpio with command: &lt;span style="color: rgb(102, 0, 0);"&gt;# cpio -i -t -F ../ramdisk.cpio | cpio -o -H newc -O ../ramdisk_new.cpio&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Some notes:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I change ramdisk.img to ramdisk.cpio.gz, and unzip it. It is because I find the -z parameter is not supported with my cpio. I tried the latest cpio (2.9), it doesn't work too.&lt;/li&gt;&lt;li&gt;Check cpio version by &lt;span style="color: rgb(102, 0, 0);"&gt;# cpio --version. I'm using cpio version 2.4.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Find the latest cpio (v 2.9) on site: &lt;a href="http://www.gnu.org/software/cpio/"&gt;gnu cpio&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Notice that in step 6, the command includes two O's. First o is lower-case, second is up-case.&lt;/li&gt;&lt;li&gt;Notice in step 6, please remain ramdisk.cpio in up folder of tmp folder. The command need it there.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-5036186240533497984?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/5036186240533497984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=5036186240533497984' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5036186240533497984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/5036186240533497984'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/step-by-step-to-createmodify-ramdiskimg.html' title='Step by step to create/modify ramdisk.img'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-1389298373913091623</id><published>2008-01-14T00:17:00.000-08:00</published><updated>2008-01-14T00:59:26.284-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash File System'/><title type='text'>YAFFS(YAFFS2) and JFFS2 comparison</title><content type='html'>Google android emulator extracts the system.img and userdata.img with YAFFS flash file system. I don't know much about YAFFS and its difference with JFFS2. I google it and share here.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;YAFFS uses less run-time RAM to hold its state so YAFFS scales better than JFFS2. There are quite a few systems using large NAND arrays (the largest partitions I know of are around the 6Gbyte mark).&lt;/li&gt;&lt;li&gt; YAFFS garbage collection is simpler and faster typically making for better performance under hard writing.&lt;/li&gt;&lt;li&gt; YAFFS uses a whole page per file for headers, and does not provide compression. This means that JFFS2 is probably a better fit to small partitions. The flip side though is that a lot of data (eg. MP3) does not compress very well and enabling compression really hurts performance.&lt;/li&gt;&lt;li&gt; While YAFFS has been used on NOR, it does not fit that well (because YAFFS does not use erase suspend). Thus if you're using smaller NAND partitions and using jffs2 on NOR, then a jffs2-only solution is very appealing.&lt;/li&gt;&lt;/ul&gt;From the wikipedia, I can see YAFFS is &lt;span style="color: rgb(102, 0, 0);"&gt;Yet Another Flash File System&lt;/span&gt;, it is specifically designed for NAND flash. Here are some links for more information:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/YAFFS"&gt;YAFFS on wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linuxdevices.com/articles/AT9680239525.html"&gt;&lt;span style="font-family:Arial,Helvetica;font-size:85%;"&gt;Introducing YAFFS, the first NAND-specific flash file system&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;JFFS2 is a log-structured file system designed for use on flash     devices in embedded systems. Rather than using a kind of     translation layer on flash devices to emulate a normal hard drive,     as is the case with older flash solutions, it places the     filesystem directly on the flash chips. Here are some links for more information about JFFS2:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceware.org/jffs2/"&gt;JFFS2: The Journalling Flash File System, version 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/JFFS2"&gt;JFFS2 on wikipedia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;More information about Flash memory.&lt;br /&gt;Flash memory is non-volatile computer memory that can be electrically erased and reprogrammed. There are NOR memories and NAND memories.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOR memories:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Reading from NOR flash is similar to reading from random-access memory, provided the address and data bus are mapped correctly. Because of this, most microprocessors can use NOR flash memory as execute in place (XIP) memory, meaning that programs stored in NOR flash can be executed directly without the need to copy them into RAM. NOR flash chips lack intrinsic bad block management, so when a flash block is worn out, the software or device driver controlling the device must handle this, or the device will cease to work reliably.&lt;br /&gt;When unlocking, erasing or writing NOR memories, special commands are written to the first page of the mapped memory. These commands are defined by the Common Flash memory Interface (CFI) and the flash chips can provide a list of available commands to the physical driver.&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;NAND memories:&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;NAND flash architecture was introduced by &lt;a href="http://en.wikipedia.org/wiki/Toshiba" title="Toshiba"&gt;Toshiba&lt;/a&gt; in 1989. NAND flash memories cannot provide execute in place due to their different construction principles. These memories are accessed much like &lt;a href="http://en.wikipedia.org/wiki/Block_size_%28data_storage_and_transmission%29" title="Block size (data storage and transmission)"&gt;block devices&lt;/a&gt; such as &lt;a href="http://en.wikipedia.org/wiki/Hard_disk" title="Hard disk"&gt;hard disks&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Memory_card" title="Memory card"&gt;memory cards&lt;/a&gt;. The pages are typically 512 or 2,048 or 4,096 bytes in size. Associated with each page are a few bytes (typically 12–16 bytes) that should be used for storage of an &lt;a href="http://en.wikipedia.org/wiki/Error_detection_and_correction" title="Error detection and correction"&gt;error detection and correction&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Checksum" title="Checksum"&gt;checksum&lt;/a&gt;.&lt;/p&gt; The pages are typically arranged in blocks. A typical block would be:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; 32 pages of 512 bytes&lt;/li&gt;&lt;li&gt; 64 pages of 2,048 bytes.&lt;/li&gt;&lt;li&gt; 64 pages of 4,096 bytes.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-family:Arial,Helvetica;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-1389298373913091623?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/1389298373913091623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=1389298373913091623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1389298373913091623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1389298373913091623'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/yaffsyaffs2-and-jffs2-comparison.html' title='YAFFS(YAFFS2) and JFFS2 comparison'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-7974590268273429484</id><published>2008-01-13T23:15:00.000-08:00</published><updated>2008-01-14T00:04:00.406-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android Emulator'/><title type='text'>google android emulator console</title><content type='html'>Each running emulator instance includes a console facility that lets you dynamically query and control the simulated device environment. Connect to the console by the following command:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#    telnet localhost 5554&lt;/span&gt;&lt;br /&gt;If you have multiple emulator started, subsequent console port is 5556, 5558, etc.&lt;br /&gt;&lt;br /&gt;In the current release, the console provides the following commands:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;help|h|?                ;print a list of commands&lt;/li&gt;&lt;li&gt;redir                            ;manage port redirections&lt;/li&gt;&lt;li&gt;network                ;manage network settings&lt;/li&gt;&lt;li&gt;gsm                                ;GSM related commands&lt;/li&gt;&lt;li&gt;sms                                ;SMS related commands&lt;/li&gt;&lt;li&gt;kill                                    ;kill the emulator instance&lt;/li&gt;&lt;li&gt;quit|exit                ;quit control session&lt;/li&gt;&lt;/ul&gt;For more details of the console commands usage, refer to the &lt;a href="http://code.google.com/android/reference/emulator.html#console"&gt;Google Android Emulator documentation&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-7974590268273429484?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/7974590268273429484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=7974590268273429484' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7974590268273429484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7974590268273429484'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/google-android-emulator-console.html' title='google android emulator console'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-1325485591469298027</id><published>2008-01-13T22:36:00.000-08:00</published><updated>2008-01-13T23:13:39.755-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Android Emulator'/><title type='text'>About Google Android Emulator</title><content type='html'>At the very beginning, google released google android SDK, it is running on the emulator. There is no hardware.&lt;br /&gt;&lt;br /&gt;The Google android emulator is included in the google android sdk. So far google provides three platforms sdk, they are windows, Mac OS X (intel), Linux (i386). The emulator is in the tools folder: emulator.&lt;br /&gt;&lt;br /&gt;The google android emulator is based on the qemu, which is a open source. Google makes some changes based on the qemu 0.8.2. The source code is also available. With the emulator source, you can make any changes you want, and replace the original one to look for information you want. One command to compile the emulator source code: build-emulator.sh&lt;br /&gt;&lt;br /&gt;Available links:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://code.google.com/android/download.html"&gt;Google android sdk&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://android.googlecode.com/files/android-emulator-m3-rc37.tar.bz2"&gt;Google android emulator source package&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;Qemu open source&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-1325485591469298027?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/1325485591469298027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=1325485591469298027' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1325485591469298027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1325485591469298027'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/about-google-android-emulator.html' title='About Google Android Emulator'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-7603490389313983983</id><published>2008-01-11T20:51:00.000-08:00</published><updated>2008-01-11T21:13:47.190-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Extract google android file system image</title><content type='html'>To run google android on the truely hardware, you may need the google android file system image.&lt;br /&gt;&lt;br /&gt;Google android file system consists of two parts: system and data.&lt;br /&gt;You can find the google android file system image on benno's website: &lt;a href="http://benno.id.au/blog/2007/11/14/android-filesystems"&gt;Android filesystem images&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also extract the google android file system by yourself from the android emulator by the following way:&lt;br /&gt;1. download the google android sdk and extract onto your platform&lt;br /&gt;2. start up the google android emulator&lt;br /&gt;3. upload a busybox tool to the google android emulator, you can find a busybox binary on benno's website: &lt;a href="http://benno.id.au/blog/2007/11/14/android-busybox"&gt;busybox for android&lt;/a&gt;, you can also find the &lt;a href="http://www.codesourcery.com/gnu_toolchains/arm/download.html"&gt;cross-compiler (select ARM GNU/Linux, and IA32 GNU/Linux)&lt;/a&gt; and create a busybox tool by yourself.&lt;br /&gt;4. to upload files to the google android emulator, run the following command:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#     adb push filename /target_folder/filename&lt;br /&gt;the target_folder is the folder on the file system of google android emulator. e.g. /system/bin/&lt;br /&gt;put the busybox to /system/bin, so you can see busybox tool in the extracted file system.&lt;br /&gt;&lt;/span&gt;5. open a google android shell command window:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#     adb shell&lt;/span&gt;&lt;br /&gt;6.  change the busybox mode to 555:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#     chmod 555 /system/bin/busybox&lt;/span&gt;&lt;br /&gt;7.  create the tarball for /system and /data:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#    busybox tar cvf /system.tar /system&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#    busybox tar cvf /data.tar  /data&lt;/span&gt;&lt;br /&gt;8.  pull the tarball file from the google android emulator:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#    adb pull system.tar /system.tar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#    adb pull data.tar /data.tar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;a note: when you want run google android on your truely hardware, the data.tar is not a must.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-7603490389313983983?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/7603490389313983983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=7603490389313983983' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7603490389313983983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/7603490389313983983'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/extract-google-android-file-system.html' title='Extract google android file system image'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-2315986618013140040</id><published>2008-01-11T18:55:00.000-08:00</published><updated>2008-01-11T19:27:22.142-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Runs Google Android'/><title type='text'>Get start playing with Google Android</title><content type='html'>The &lt;a href="http://code.google.com/android/what-is-android.html"&gt;Android platform&lt;/a&gt; is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the Android SDK. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.&lt;br /&gt;&lt;br /&gt;Google provides Android SDK for three platforms: Windows, Mac OS X (intel), Linux (i386). There is Android emulator included in the SDK package. So first find a Android SDK for your platform: &lt;a href="http://code.google.com/android/download.html"&gt;Download the Android SDK from Google&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Next, extract the Android SDK package into your system, let's say the root folder is $ANDROID_SDK.&lt;br /&gt;&lt;br /&gt;Open a command window (shell window), change the working directory to $ANDROID_SDK/tools/. You will see tens of executable files, one is emulator. Simply start it with the following command:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#     emulator&lt;/span&gt;&lt;br /&gt;If you want to see the emulator kernel boot up detail information, start it with the following command:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#     emulator -debug-kernel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When the Android started up, the following window is shown.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_mP_i_I-KUkQ/R4gx28av2YI/AAAAAAAADl8/aey9Dh4r_MM/s1600-h/android.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_mP_i_I-KUkQ/R4gx28av2YI/AAAAAAAADl8/aey9Dh4r_MM/s200/android.JPG" alt="" id="BLOGGER_PHOTO_ID_5154424593526544770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can open a Android shell by the command:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#    adb shell&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is a Linux kernel 2.6.23 (Android is linux kenel based) shell, play with it in the same way as linux.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is the Android kernel boot up log fyi:&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Uncompressing Linux.............................................................&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;.................... done, booting the kernel.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Linux version 2.6.23-gcc3bc3b4 (arve@arvelnx.corp.google.com) (gcc version 4.2.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;) #3 Tue Oct 30 16:28:18 PDT 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00003137&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Machine: Goldfish&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Memory policy: ECC disabled, Data cache writeback&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;CPU0: D VIVT write-through cache&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;CPU0: I cache: 4096 bytes, associativity 4, 32 byte lines, 32 sets&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;CPU0: D cache: 65536 bytes, associativity 4, 32 byte lines, 512 sets&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Built 1 zonelists in Zone order.  Total pages: 24384&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Kernel command line: qemu=1 console=ttyS0 android.checkjni=1 keycharmap=qwerty2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;android.ril=ttyS1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Unknown boot option `android.checkjni=1': ignoring&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Unknown boot option `android.ril=ttyS1': ignoring&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;PID hash table entries: 512 (order: 9, 2048 bytes)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Console: colour dummy device 80x30&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Memory: 96MB = 96MB total&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Memory: 94280KB available (2268K code, 458K data, 96K init)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Mount-cache hash table entries: 512&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;CPU: Testing write buffer coherency: ok&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;android_power_init&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;android_power_init done&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;NET: Registered protocol family 16&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;NET: Registered protocol family 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;IP route cache hash table entries: 1024 (order: 0, 4096 bytes)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;TCP established hash table entries: 4096 (order: 3, 32768 bytes)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;TCP bind hash table entries: 4096 (order: 2, 16384 bytes)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;TCP: Hash tables configured (established 4096 bind 4096)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;TCP reno registered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;checking if image is initramfs... it is&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Freeing initrd memory: 228K&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_interrupt_controller at ff000000 irq -1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_device_bus at ff001000 irq 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_timer at ff003000 irq 3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_rtc at ff010000 irq 10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_tty at ff002000 irq 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_tty at ff011000 irq 11&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev smc91x at ff012000 irq 12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_fb at ff013000 irq 13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_audio at ff004000 irq 14&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_events at ff014000 irq 15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish_nand at ff015000 irq -1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish-switch at ff016000 irq 16&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_new_pdev goldfish-switch at ff017000 irq 17&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish-switch&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish-switch&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_nand&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_events&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_audio&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_fb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered smc91x&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_tty&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_tty&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_rtc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_timer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_device_bus&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_pdev_worker registered goldfish_interrupt_controller&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_audio_probe&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Installing knfsd (copyright (C) 1996 okir@monad.swb.de).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;yaffs Oct 30 2007 16:24:34 Installing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;io scheduler noop registered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;io scheduler anticipatory registered (default)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;io scheduler deadline registered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;io scheduler cfq registered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;allocating frame buffer 320 * 480, got ffc10000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Console: switching to colour frame buffer device 40x30&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;console [ttyS0] enabled&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;loop: module loaded&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;nbd: registered device at major 43&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre &lt;nico@cam.org&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;No IRQF_TRIGGER set_type function for IRQ 12 (goldfish)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;eth0: SMC91C11xFD (rev 1) at c6800000 IRQ 12 [nowait]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;eth0: Ethernet addr: 52:54:00:12:34:56&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish nand dev0: size 4000000, page 2048, extra 64, erase 131072&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish nand dev1: size 4000000, page 2048, extra 64, erase 131072&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;mice: PS/2 mouse device common for all mice&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;*** events probe ***&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;events_probe() addr=0xc6804000 irq=15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;input: goldfish-events-keyboard as /class/input/input0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_rtc goldfish_rtc: rtc core: registered goldfish_rtc as rtc0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;logger: created 64K log 'log_main'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;logger: created 64K log 'log_events'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;logger: created 64K log 'log_radio'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;IPv4 over IPv4 tunneling driver&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;GRE over IPv4 tunneling driver&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;TCP cubic registered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;NET: Registered protocol family 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;NET: Registered protocol family 17&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;802.1Q VLAN Support v1.8 Ben Greear &lt;greearb@candelatech.com&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;All bugs added by David S. Miller &lt;davem@redhat.com&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;goldfish_rtc goldfish_rtc: setting the system clock to 2008-01-12 02:48:13 (1200&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;106093)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Freeing init memory: 96K&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;init: HOW ARE YOU GENTLEMEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;init: reading config file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;init: device init&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;init: mtd partition -1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;init: mtd partition 0, "system"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;yaffs: dev is 32505856 name is "mtdblock0"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;yaffs: passed flags ""&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;yaffs: Attempting MTD mount on 31.0, "mtdblock0"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;init: mtd partition 1, "userdata"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;yaffs: dev is 32505857 name is "mtdblock1"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;yaffs: passed flags ""&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;yaffs: Attempting MTD mount on 31.1, "mtdblock1"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;eth0: link up&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;sh: can't access tty; job control turned off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;# binder_open(c0833428 c0a0a4a0) (pid 468) got c5f13000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;binder_open(c0833428 c5a6b9e0) (pid 460) got c5bbf000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;binder_open(c0833428 c5a6b2e0) (pid 474) got c4716000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;android_power: auto off timeout set to 604800 seconds&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;Descriptor2Node failed secondary: desc=4, max=32, node=c5bc0350, weak=0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;binder_open(c0833428 c4f533a0) (pid 510) got c4754000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;binder_open(c0833428 c4f53920) (pid 511) got c3a30000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 255);"&gt;binder_open(c0833428 c3421860) (pid 527) got c3428000&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-2315986618013140040?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/2315986618013140040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=2315986618013140040' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2315986618013140040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/2315986618013140040'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/get-start-playing-with-google-android.html' title='Get start playing with Google Android'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_mP_i_I-KUkQ/R4gx28av2YI/AAAAAAAADl8/aey9Dh4r_MM/s72-c/android.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-8661481737779316661</id><published>2008-01-11T18:26:00.000-08:00</published><updated>2008-01-11T19:36:46.907-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Create adb shell in android emulator</title><content type='html'>Type the following command to start the adb shell:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#     adb shell&lt;/span&gt;&lt;br /&gt;For the full usage of adb, please refer the following link: &lt;a href="http://code.google.com/android/reference/adb.html"&gt;Android Debug Bridge Tool&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-8661481737779316661?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/8661481737779316661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=8661481737779316661' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8661481737779316661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/8661481737779316661'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/create-adb-shell-in-android-emulator.html' title='Create adb shell in android emulator'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4339544753706943601.post-1391672496008491260</id><published>2008-01-11T16:56:00.000-08:00</published><updated>2008-01-11T19:37:26.109-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android tools and tips'/><title type='text'>Rotate Android Screen to Landscape/Portrait</title><content type='html'>Here are some tips of android screen rotation.&lt;br /&gt;&lt;br /&gt;On the emulator, after the Android system is started up, open another command window, type the following command line in the adb shell to change the screen to landscape:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;     #     service call window 18 i32 1&lt;/span&gt;&lt;br /&gt;type the following command line to change the screen to portrait:&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#     service call window 18 i32 0&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4339544753706943601-1391672496008491260?l=discuz-android.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discuz-android.blogspot.com/feeds/1391672496008491260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4339544753706943601&amp;postID=1391672496008491260' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1391672496008491260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4339544753706943601/posts/default/1391672496008491260'/><link rel='alternate' type='text/html' href='http://discuz-android.blogspot.com/2008/01/change-android-screen-landscapeportrait.html' title='Rotate Android Screen to Landscape/Portrait'/><author><name>rtm</name><uri>http://www.blogger.com/profile/15941083362450228950</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry></feed>
