我使用的adt版本为 adt-bundle-linux-x86_64-20140702.zip

 

1. Eclipse启动时提示 adb 无法加载动态链接库 libstdc++.so.6 以及  libz.so.1

安装以下两个32位软件包即可: lib32stdc++6    lib32z1

 

2. Eclipse频繁崩溃

    修改eclipse所在目录下的eclipse.ini, 加入一行:

    -Dorg.eclipse.swt.browser.DefaultType=mozilla

3. adb无法找到接入的手机

   =====================以下引用自 http://www.cnblogs.com/sink_cup/archive/2011/10/31/ubuntu_x64_android_sdk_java.html 

lsusb

拔下手机再运行lsusb,少了一行,那个就是设备。

比如Bus 002 Device 003: ID 0bb4:0ccf High Tech Computer Corp.  表示HTC的厂商ID为0bb4

小米1S的 Bus 002 Device 007: ID 18d1:9025 Google Inc.,表示小米的厂商ID为18d1

锤子手机Smartisan T1是Bus 003 Device 019: ID 29a9:7019,表示锤子的厂商ID为29a9

按照厂商ID填写,比如锤子T1就写:

echo '0x29a9' | tee -a ~/.android/adb_usb.ini
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="29a9", MODE="0666", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/51-android.rules
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo service udev restart
adb kill-server
adb start-server

把设备的“USB调试”关掉,拔下来,重新连上电脑,再打开“USB调试”。

adb devices

如果显示正常,即可。

========================引用结束

为了方便找出 vendorId/productId,我写了一段perl脚本来做这件事。 提示输入用户名之后,它会等待10秒钟时间,在此期间,如果你的手机原来是插入状态,那就拔出,如果没插入,那就插入。10秒钟过后,它就会帮你找出两个id,并告诉你应该如何修改文件

#!/usr/bin/perl

# This script is to enable adb debug on android devices

$hint = <<END;
	This script will help you find our the vendor id / product id
END

print "Enter your user name:";
$username = <STDIN>;

# Find out product id/vendor id
@aA = &getCmdOutput("lsusb");
print "\nIf your android was plugged in, unplug it now. If it's not, plug in it now. I'll wait for 10 seconds ...\n";
sleep 10;
@aB = &getCmdOutput("lsusb");

if( $#aA == $#aB || abs( $#aA- $#aB ) != 1 )
{
	die "You didn't make the plug/unplug work as I said. quit\n";
}

@smaller = ( $#aA> $#aB )? @aB: @aA;
@bigger = ( $#aA> $#aB )? @aA: @aB;

%map;
foreach $item( @smaller )
{
	$map{ $item } = 1;
}

$deviceInfo = "";
foreach $item( @bigger )
{
	if( not exists $map{ $item } )
	{
		$deviceInfo = $item;
		last;
	}
}

die "Failed to resolve device info\n" unless $deviceInfo ne "";

$deviceInfo =~ /(.*):(.*)/;
$vendorId  = $1;
$productId = $2;

$ruleFile =  '/etc/udev/rules.d/51-android.rules';
$adbFile = '/home/'.$username.'/.android/adb_usb.ini';

$content = <<END;
SUBSYSTEM=="usb", ATTR{idVendor}=="$vendorId",ATTR{idProduct}=="$productId",OWNER="$username", MODE="0666",GROUP="plugdev"
END

print "What you should add to $ruleFile :\n $content";

print "Please add this line to your /home/".$username.'/android/adb_usb.ini'." :\n";
print "$vendorId\n";
exit 0;


sub getCmdOutput
{
	my $command = $_[0];
	
	my @output;
	unless ( open CMD_PIPE, "-|" )
    {
        exec "$command";
        exit;
    }

    while ( <CMD_PIPE> )
    {
        chomp;
        if( /ID\s([a-f0-9]+):([a-f0-9]+)\s/ )
        {
			push @output, "$1:$2";
		}
    }
    @output;
 }