我使用的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; }