我使用 NetBeans 开发了一个基于 HTML5 cordova 的安卓应用。 Netbeans 和 android SDK 安装在 linux 工作站 - Ubuntu 14.04 (x64) 上。
为此,我喜欢在现有(和正在运行的)android 模拟器 (AVD) 上运行应用洞察力。 AVD 工作正常,也可以使用 telnet 访问:
$ telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: type 'help' for a list of commands
OK
但是:如果我尝试在 NetBeans 中执行/运行应用程序,NB 会返回 2 个对话框:
信息:正在连接到 android 设备...
和
错误:请运行 Android 模拟器
我在开箱即用的 Windows 上进行了相同的设置。但它不适用于 ubuntu。
所以我的问题是:如何调试这个问题,可能是什么原因,为什么 NetBenas 找不到模拟器?
某处是否有 NetBeans 设置?
//编辑:在@ladar 的帮助下,我发现缺少一个库:
libstdc++.so.6: 无法打开共享对象文件
adb
需要此库,它由 NetBeans 启动。
但是:安装libx32stdc++6
和libx64stdc++6
后,错误依然存在。
adb
无法找到该库:
$ ldd /opt/android-sdk-linux/platform-tools/adb
linux-gate.so.1 => (0xf778d000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf7632000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf762d000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7610000)
libstdc++.so.6 => not found
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf75ca000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf75ad000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf73fd000)
/lib/ld-linux.so.2 (0xf778e000)
32位文件放在./usr/libx32/
。所以我添加了一个指向 /lib/i386-linux-gnu/
的链接。
运行 strace
会在新位置识别库,但仍然会导致错误:
$ strace /opt/android-sdk-linux/platform-tools/adb
execve("/opt/android-sdk-linux/platform-tools/adb", ["/opt/android-sdk-linux/platform-"...], [/* 64 vars */]) = 0
[ Process PID=15558 runs in 32 bit mode. ]
brk(0) = 0xfffffffff7913000
[...]
open("/lib/i386-linux-gnu/cmov/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/lib/i386-linux-gnu/cmov", 0xffa155b0) = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\243\4\0004\0\0\0"..., 512) = 512
close(3) = 0
stat64("/lib/i386-linux-gnu", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov", 0xffa155b0) = -1 ENOENT (No such file or directory)
[...]
writev(2, [{"/opt/android-sdk-linux/platform-"..., 41}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"libstdc++.so.6", 14}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"No such file or directory", 25}, {"\n", 1}], 10/opt/android-sdk-linux/platform-tools/adb: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
) = 155
exit_group(127) = ?
+++ exited with 127 +++
...我不知道为什么...
最佳答案
我想为这个案例回答我自己的问题,有人有同样的问题: 安装几个包的 32 位版本并没有解决问题。
关键是还要安装 ...-dev
包。下面一行解决了这个问题:
sudo apt-get install lib32stdc++6 lib32z1 lib32z1-dev
关于android - NetBeans 无法连接到 Android 模拟器 AVD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27057828/