分类: Google Android
-
Check shared library depends under android platform
source build/envsetup.sh
lunch full-engarm-linux-androideabi-readelf -d out/target/product/generic/system/bin/fsck_msdos
-
(转) Android LogCat使用详解
Android的Logcat用于显示系统的调试信息,可在分别以下几个地方查看和调用logcat:
1.eclipse的Debug模式或DDMS模式下的会有一个Logcat窗口,用于显示log日志
只需在eclipse中启动Android模拟器,切换到DDMS或debug模式下,就会有Logcat窗口,窗口右上方有一系列图标,其中V、D、I、W、E五个图标为五个调试信息过滤器:V:不过滤输出所有调试信息 包括 VERBOSE、DEBUG、INFO、WARN、ERROR
D:debug过滤器,输出DEBUG、INFO、WARN、ERROR调试信息
I:info过滤器,输出INFO、WARN、ERROR调试信息
W:waring过滤器,输出WARN和ERROR调试信息
E:error过滤器,只输出ERROR调试信息
2.Android命令模式下,在启动一个模拟器是可以选择是否需要启动logcat:
Android Emulator命令的用法: emulator [options] [-qemu args]
1.Android Emulator命令的用法: emulator [options] [-qemu args]启动模拟器命令:emulator -avd <name> -logcat <tags>;
name:模拟器名字,tags调试信息过滤器类型
例如:emulator -avd GPhone -logcat w
启动GPhone模拟器并运行logcat显示调试信息,调试信息的过滤器是w(可替换为v、d、i、e),代表只显示waring和error两类调试信息。2.Android adb 命令:adb logcat [ <filter-spec> ] – View device log
<filter-spec> == <priority>/<tag>,(pritrity标签,tag为过滤类型)
例如:2.1、adb logcat 显示所有调试信息
2.2、adb logcat *:w 显示waring过滤器过滤后的调试信息
2.3、adb logcat Test1:V Test2:D 显示标签为Test1的所有调试信息,以及显示标签为Test2Debug过滤器过滤后的调试信息
3.Android程序中访问调试日志,并显示:
摘自:http://www.iteye.com/topic/477112
logcat介绍命令选项。
-s 默认设置过滤器
-f 输出到日志文件
-c 清除日志
-d 获取日志
-g 获取日志的大小
-v 格式设置日志(见下面的格式打印格式)-v 格式 例
brief W/tag ( 876): message
process W( 876) message (tag)
tag W/tag : message
thread W( 876:0x37c) message
raw message
time 09-08 05:40:26.729 W/tag ( 876): message
threadtime 09-08 05:40:26.729 876 892 W tag : message
long [ 09-08 05:40:26.729 876:0x37c W/tag ] message代码例子:
AndroidManifest.xml添加读取权限
<uses-permission android:name=”android.permission.READ_LOGS” />清除日志
try {
Runtime.getRuntime().exec(“logcat -c”);
} catch(Exception e) {获取日志
try {
ArrayList<String> commandLine = new ArrayList<String>();
commandLine.add( “logcat”);
commandLine.add( “-d”);
commandLine.add( “-v”);
commandLine.add( “time”);
commandLine.add( “-s”);
commandLine.add( “tag:W”);
Process process = Runtime.getRuntime().exec( commandLine.toArray( new String[commandLine.size()]));
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream()), 1024);
String line = bufferedReader.readLine();
while ( line != null) {
log.append(line);
log.append(“/n”)
}
} catch ( IOException e) {
}结果:
09-08 09:44:42.267 W/tag ( 754): message1
09-08 09:44:42.709 W/tag ( 754): message2
09-08 09:44:43.187 W/tag ( 754): message3
09-08 09:44:45.295 E/tag ( 754): message8有时候当连接到手机上面进行调试的时候,在LogCat里面经常出现log信息之出现前面的几行,不断的在闪烁,无法正常查看log信息的情况,至少到现在还没有发现解决的办法,现在最还的做法就是将log在adb logcat命令行里面显示或者重定向文件中。
还有一种情况是我只想打印我单独点检的Filter,如果用adb logcat会打印很多的无关的log信息,影响查看,可以使用adb logcat -s onFling查看我添加的Filter “onFling”,当然也是可以重定向到文件中。
当有多台手机设备链接电脑时,adb链接特定的设备:adb -s HT114RX11535 logcat
-
Install googleplayer in android emulator
#!/bin/bash
GP_PATH=”/mirror/android_apk/googleplayer”function adb_get_GP_VER()
{
GP_VER=`adb shell getprop|grep ro.build.version.release|cut -b 30-|sed “s/].*//”`
}adb_get_GP_VER
DST_PATH=/system/app
adb shell mount -o rw,remount /system
#echo adb push “${GP_PATH}/${GP_VER}/GoogleLoginService.apk ${DST_PATH}/”
adb push ${GP_PATH}/${GP_VER}/GoogleLoginService.apk ${DST_PATH}/
adb push ${GP_PATH}/${GP_VER}/GoogleServicesFramework.apk ${DST_PATH}/
adb push ${GP_PATH}/${GP_VER}/Phonesky.apk ${DST_PATH}/adb shell mount -o ro,remount /system
http://wiki.rootzwiki.com/Google_Apps
-
Enable Physical Keyboard in android emulator
Change the AVD default value and rebuild the emulator:
nano external/qemu/android/avd/hardware-properties.ini
# From
# Keyboard support (qwerty/azerty)
name = hw.keyboard
type = boolean
default = no
abstract = Keyboard support
description = Whether the device has a QWERTY keyboard.# To
# Keyboard support (qwerty/azerty)
name = hw.keyboard
type = boolean
default = yes
abstract = Keyboard support
description = Whether the device has a QWERTY keyboard. -
Adb driver on ubuntu 10.10
lsusb
sudo touch /etc/udev/rules.d/51-android.ruls
sudo chmod 755
gedit /etc/udev/rules.d/51-android.ruls
sudo /etc/init.d/udev restart
sudo adb kill-server
sudo adb devicescat /etc/udev/rules.d/51-android.ruls
SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=”0666″, GROUP=”lzheng”
SUBSYSTEM==”usb”, SYSFS{idVendor}==”18d1″, MODE=”0666″, GROUP=”lzheng”
SUBSYSTEM==”usb”, SYSFS{idVendor}==”05c6″, MODE=”0600″, GROUP=”lzheng”
SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=”0600″, GROUP=”lzheng”
SUBSYSTEM==”usb”, SYSFS{idVendor}==”710d”, MODE=”0600″, GROUP=”lzheng”
SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=”0600″, GROUP=”lzheng”
# adb protocol on passion (Nexus One)
SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e12″, MODE=”0600″, OWNER=”lzheng”
# fastboot protocol on passion (Nexus One)
SUBSYSTEM==”usb”, ATTR{idVendor}==”0bb4″, ATTR{idProduct}==”0fff”, MODE=”0600″, OWNER=”lzheng”
# adb protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e22″, MODE=”0600″, OWNER=”lzheng”
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e20″, MODE=”0600″, OWNER=”lzheng”
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM==”usb”, ATTR{idVendor}==”22b8″, ATTR{idProduct}==”70a9″, MODE=”0600″, OWNER=”lzheng”
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”708c”, MODE=”0600″, OWNER=”lzheng”
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM==”usb”, ATTR{idVendor}==”04e8″, ATTR{idProduct}==”6860″, MODE=”0600″, OWNER=”lzheng”
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e30″, MODE=”0600″, OWNER=”lzheng”
# adb protocol on panda (PandaBoard)
SUBSYSTEM==”usb”, ATTR{idVendor}==”0451″, ATTR{idProduct}==”d101″, MODE=”0600″, OWNER=”lzheng”
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM==”usb”, ATTR{idVendor}==”0451″, ATTR{idProduct}==”d022″, MODE=”0600″, OWNER=”lzheng”
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM==”usb”, ATTR{idVendor}==”0451″, ATTR{idProduct}==”d00f”, MODE=”0600″, OWNER=”lzheng”
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM==”usb”, ATTR{idVendor}==”0451″, ATTR{idProduct}==”d010″, MODE=”0600″, OWNER=”lzheng”
# adb protocol on grouper (Nexus 7)
SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e42″, MODE=”0600″, OWNER=”lzheng”
# fastboot protocol on grouper (Nexus 7)
SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e40″, MODE=”0600″, OWNER=”lzheng” -
Script to Build Android Kernel Under Ubuntu
#!/bin/bash
#
ANDROID=”android-4.1.1_r6.1″
GCC=4.4.3KERNEL=goldfish
KCONFIG=goldfish_armv7_defconfig#GIT_SERVER=aosp.zhenglei.net
GIT_SERVER=127.0.0.1
GIT_PATH=”git/aosp”PREBUILT=prebuilt
HOST=”linux-x86″
ARCH=”arm”
BUILD_PATH=”build”function get_Tool {
LOC=”$1″
TAG=”$2″
VER=”$3″
TOOL_CHAIN=${ARCH}-eabi-${GCC}if [ ! -d ${LOC}/${TOOL_CHAIN} ];then
if [ ! -d ${PREBUILT}/${TOOL_PATH} ];then
if [ -d ${PREBUILT} ];then
rm -rf ${PREBUILT}
fi
git clone git://${GIT_SERVER}/${GIT_PATH}/platform/prebuilt
ficd ${PREBUILT}
CUR_BRANCH=`git branch|grep “^* “|sed “s/^* //”`
if [ “${CUR_BRANCH}” != “${TAG}” ];then
# git tag -l
git checkout -b ${TAG}
fi
cd ..cp -r ${PREBUILT}/${HOST}/toolchain/${TOOL_CHAIN} ${LOC}
fi
TOOL_PATH=”`pwd`/${LOC}/${TOOL_CHAIN}”
}function get_Kernel {
kernel=”$1″
if [ ! -d ${kernel} ];then
git clone git://${GIT_SERVER}/${GIT_PATH}/kernel/${kernel}.git
ficd ${kernel}
# git branch -a
CUR_BRANCH=`git branch|grep “^* “|sed “s/^* //”`
if [ “${CUR_BRANCH}” != “${kernel}” ];then
git checkout -t remotes/origin/android-${kernel}-2.6.29 -b ${kernel}
fi
if [ ! -d ../${BUILD_PATH}/${kernel} ];then
mkdir ../${BUILD_PATH}/${kernel}
git archive –format tar HEAD|tar x -C ../${BUILD_PATH}/${kernel}/
fi
cd ..
}function build_Kernel {
config=$1
cd ${BUILD_PATH}/${kernel}
#ls -l arch/${ARCH}/configs/
make ${config}START=`date +%s`
echo “Start to build at time: $START”
echo “################################”
echo
echomake -j4
echo
echo
echo “################################”
FINISH=`date +%s`
echo “Finish build at time: $FINISH”
echo
ELAPSED=`expr $FINISH – $START`
echo “Elapsed time: $ELAPSED”
cd ..
cd ..
}##### Main ######
if [ ! -d ${BUILD_PATH} ];then
mkdir ${BUILD_PATH}
firm -rf ${BUILD_PATH}/*
get_Tool $BUILD_PATH $ANDROID $GCC
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
export PATH=${TOOL_PATH}/bin:$PATHget_Kernel $KERNEL
build_Kernel $KCONFIG
# Output
cp ${BUILD_PATH}/${KERNEL}/arch/${ARCH}/boot/zImage ${BUILD_PATH}/${KERNEL}/
# Luanch emulator with build kernel
# emulator -kernel ${KERNEL}/zImage -
Mirror of Google Android Repository on Ubuntu 10.10
###########################################
# mirror repository of android source code
###########################################
mkdir -p /mirror/git/aosp
cd /mirror/git/aosp
repo init -u http://android.gogolesource.com/mirror/manifest.git –mirror
repo sync -j18
sudo chown -R gitdaemon .#####################################
# Install Git Daemon on own server (repo.zhenglei.net)
#####################################
sudo apt-get install git-daemon-run#####################################
# Update Config of Git Daemon
#####################################
cat /etc/sv/git-daemon/run
#!/bin/sh
GIT_DAEMON_CONF=”/etc/git-daemon.conf”
if [ -f ${GIT_DAEMON_CONF} ];then
GIT_DAEMON=`cat ${GIT_DAEMON_CONF}`
else
GIT_DAEMON=””
fi
exec 2>&1
echo ‘git-daemon starting.’
exec chpst -ugitdaemon \
“$(git –exec-path)”/git-daemon –verbose –export-all –reuseaddr “${GIT_DAEMON}” –base-path=/mirror /mirror/git#####################################
# Restart Git Daemon
#####################################
sv stop git-daemon
sv start git-daemon################################################
# Access REPO mirror
################################################## Clone Whole aosp
mkdir -p /build/android
cd /build/android
repo init -u git://repo.zhenglei.net/aosp/mirror/manifest.git –mirror
repo sync -j18## Clone Platform only
repo init -u git://repo.zhenglei.net/aosp/platform/manifest.git –mirror
repo sync -j18## Clone accessories only
repo init -u git://repo.zhenglei.net/aosp/accessories/manifest.git –mirror
repo sync -j18## Clone Kernel only
git clone –mirror git://repo.zhenglei.net/aosp/kernel/common.git
git clone –mirror git://repo.zhenglei.net/aosp/kernel/exynos.git
git clone –mirror git://repo.zhenglei.net/aosp/kernel/goldfish.git
git clone –mirror git://repo.zhenglei.net/aosp/kernel/msm.git
git clone –mirror git://repo.zhenglei.net/aosp/kernel/omap.git
git clone –mirror git://repo.zhenglei.net/aosp/kernel/samsung.git
git clone –mirror git://repo.zhenglei.net/aosp/kernel/tegra.git#Clone Device
git clone –mirror git://repo.zhenglei.net/aosp/device/generic/goldfish.git
git clone –mirror git://repo.zhenglei.net/aosp/device/samsung/tuna.git
#### Checkout Branching ####
repo init -u git://repo.zhenglei.net/aosp/platform/manifest.git -b android-4.1.1_r6.1
repo sync -j 18## Create New Branching in local ##
repo start android-4.1.1_r6.1_jrd_dev –all## Push New Branching to the server ##
sudo sv stop git-daemon
export GIT_DAEMON=”–enable=receive-pack”
sudo sv start git-daemon
repo forall -c git push aosp android-4.1.1_r6.1_jrd_dev
sudo sv stop git-daemon
export GIT_DAEMON=
sudo sv start git-daemon -
Update git on Ubuntu 10.10 for aosp access
Now, it is required to have git version 1.7.2 to access Google android repository, need to update git version on ubuntu 10.10 manually:
sudo apt-get clean
sudo apt-get update
sudo apt-get install libcurl4-gnutls-dev
wget http://github.com/git/git/archive/v1.7.2.5.zip
unzip v1.7.2.5.zip
cd git-1.7.2.5
make configure
./configure –prefix=/usr
make all
sudo make install