编译Linux内核前,通过USB电缆连接Android设备与PC,然后在终端窗口内获得如下的内核配置文件: $ cd /path/to/android-sdk/tools $ ./adb pull /proc/config.gz $ gunzip ./config.gz $ cp config /path/to/kernel/.config 从手机的Android根文件夹中获得init.rc启动脚本: $ cd /path/to/android-sdk/tools $ ./adb pull /init.rc
下一步,将Linux内核源代码包解压至PC的工作文件夹。将目录更改为刚刚解压的内核文件夹,然后输入此命令进入内核配置菜单。 $ make ARCH=arm menuconfig 使用箭头键到达目标子菜单,然后按下“Enter”。以下所列出的每个子菜单内包含了所需要的动作说明。
保存并退出配置菜单后,必须重新编译内核和相关模块,如下所示: $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- zImage -j4 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules -j4 要在Android目标手机使用Streamline,还必须构建gator内核模块gator.ko。gator内核模块源代码位于DS-5安装文件夹: installdir/arm/gator/driver-src/gator-driver.tar.gz 在安装DS-5 CE Eclipse时,可通过Help(帮助)->ARM Extras…(ARM附加选项)菜单来确定源文件的位置。将源代码包转移至工作文件夹,并进行解压。输入下列命令来编译gator模块: $ make -C <path/to/kernel/source> M=`pwd` ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules 要在Android系统上使用Streamline,还需运行gator守护程序。预先编译好的gatord二进制程序位于DS-5安装文件夹: installdir/arm/gator/android/gatord 在DS-5 CE中,通过再次选择Help(帮助)->ARM Extras…(ARM附加选项)菜单来确定源文件的位置。要在Android文件系统运行该程序,将gatord复制到Android手机,并放置在相同路径(例如:/system/xbin 或/system/bin)下作为gator驱动程序gatord.ko即可。 (可选)要Android手机启动时启用gator服务,则必须修改init.rc脚本文件,该文件可从Android设备中的根目录获得。并在该文件末尾添加下列行 service ds5_gatord /system/xbin/gatordexec /system/xbin/gatord &oneshot 如果不希望在启动时运行gatord的守护程序,也可以在Android设备启动后再运行gatord。例如,可以在启动后使用adb shell命令来运行/system/xbin/gatord&。
update.zip放置于SD卡根文件夹上的压缩文件,在手机启动时由Android恢复系统加载。该文件通常具有供应商的数字签名,在紧急情况或系统升级时使用该文件可用来恢复系统。Android手机处于解锁状态时,则可以使用自定义的压缩包来升级系统。现在,我向您展示如何创建update.zip程序包来更新Linux内核和init.rc脚本。
#!/sbin/sh # repleace init.rc in ramdisk mkdir /tmp/newramdisk cd /tmp/newramdisk busybox gunzip -c /tmp/boot.img-ramdisk.gz | busybox cpio -i busybox cp /tmp/init.rc /tmp/newramdisk/ chmod 750 /tmp/newramdisk/init.rc busybox find . | busybox cpio -o -H newc | busybox gzip > /tmp/newramdisk.gz cd /tmp rm -r /tmp/newramdisk # generate createnewboot.sh echo \#!/sbin/sh > /tmp/createnewboot.sh echo /tmp/mkbootimg --kernel /tmp/zImage --ramdisk /tmp/newramdisk.gz --cmdline \"$(cat /tmp/boot.img-cmdline)\" --base $(cat /tmp/boot.img-base) --output /tmp/newboot.img >> /tmp/createnewboot.sh chmod 777 /tmp/createnewboot.sh /tmp/createnewboot.sh return $?
ui_print("Extracting system files..."); package_extract_dir("system", "/system"); set_perm(0, 0, 0755, "/system/xbin/gatord"); unmount("/system");
ui_print("Building new boot.img..."); run_program("/tmp/dd", "if=/dev/block/mmcblk0p20", "of=/tmp/boot.img");; run_program("/tmp/unpackbootimg", "/tmp/boot.img", "/tmp/"); run_program("/tmp/mkbootimg.sh");
注意!在继续操作前,请为手机充满电!!! 关闭手机电源,然后以HBOOT模式开启。(同时按下电源按钮和音量调低按钮) 进入Recovery(恢复)菜单。系统会提示您,并自动进行更新。 在重新启动后,Streamline准备就绪,可进行性能分析。
Streamline支持通过以太网与目标手机的连接。使用Android Debug Bridge (ADB)实用程序,可通过USB连接将TCP端口从目标手机网络转发到PC localhost本机网络。ADB也可配置用于以太网或Wi-Fi环境。有关Android SDK以及ADB设置的详细信息,请参见Android网站。一旦设置好了ADB,就使用下列命令将Streamline使用的网络端口转发到localhost网络上。 adb forward tcp:8080 tcp:8080 现在运行PC上的DS-5程序,并打开Streamline数据视图窗口。如果在Window(窗口)->Show View(显示视图)菜单处未显示,则选择Window(窗口)->Show View(显示视图)->Other(其他),在对话框中找到“ARM Streamline”,然后打开ARM Streamline Data(数据采集对话框)。在Eclipse或DS-5的ARM Streamline数据视图的Capture Options (采集选项)对话框中输入设备的以太网地址。如果通过USB使用Android Debug Bridge (ADB)来转发端口,则在地址字段中输入localhost,如图2所示。 图2 ARM Streamline Data数据采集对话框
最后,按照ARM网站上的ARM DS-5 Using ARM Streamline使用说明,使用Streamline对Android手机开始进行性能分析。图3是使用Streamline对Android手机进行性能分析的截图。 图3 Streamline性能分析窗口
Streamline是一款功能强大、经济高效的解决方案,用于对ARM Linux和Android平台进行系统级性能分析。希望本文能助您一臂之力,通过Streamline加快您的Android开发工作。一旦开始使用,您很快会喜欢上这款工具。如需进一步了解使用Streamline的方法,请访问ARM Streamline website 和 ARM DS-5 info center