【问题标题】:NetBeans unable to connect to Android Emulator AVDNetBeans 无法连接到 Android Emulator AVD
【发布时间】:2024-01-20 06:21:01
【问题描述】:

我使用 NetBeans 开发基于 HTML5 cordova 的 android 应用程序。 Netbeans 和 android SDK 安装在 linux Workstation - 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 个对话框:

信息:Connecting to android device...

错误:Please run Android Emulator

我在开箱即用的 Windows 上进行了相同的设置。但它不适用于 ubuntu。

所以我的问题是:如何调试这个问题,可能是什么原因,为什么 NetBenas 找不到模拟器?

某处是否有 NetBeans 设置?

//编辑:在@ladar 的帮助下,我发现缺少一个库:

libstdc++.so.6: cannot open shared object file

adb 需要这个库,它是由 NetBeans 启动的。 但是:安装libx32stdc++6libx64stdc++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 +++

……我也不知道为什么……

【问题讨论】:

  • 当您尝试运行项目时,Android 模拟器正在运行,对吧? NetBeans 不会自行启动它。此外,您可能想查看 IDE 日志 (wiki.netbeans.org/FaqLogMessagesFile),也许会有一些东西。如果您在模拟器运行的同时将 Android 设备(通过 USB 调试)连接到 PC,也可能会出现问题
  • @ladar 是的,android 模拟器在尝试运行项目之前正在运行(长时间)。并且:USB 上没有连接 Android 设备。我将查看 IDE 日志。谢谢。
  • @ladar 指向 Wiki/logFile 位置的链接是一个很好的建议。谢谢你。原因可能是缺少 adb libstdc++.so.6: cannot open shared object file 的库。安装libx32stdc++6libx64stdc++6 并没有解决这个问题。:-/ 但现在我有办法调查这个问题。
  • 您可以尝试使用命令行 API (cordova.apache.org/docs/en/4.0.0/…) 在模拟器上运行 Cordova 应用程序。这将帮助您了解 NetBeans 是否与您的问题相关,或者它是否与 NetBeans 无关
  • @ladar 现在,我认为 NetBeans 与此问题无关,因为如果我从命令行运行 adb,则会出现相同的错误。但是如果我更改这个问题的标题,其他有相同“NetBeans 问题”的用户将找不到这个帖子。

标签: android ubuntu netbeans connect avd


【解决方案1】:

我喜欢回答我自己的问题,即有人遇到同样的问题: 安装几个包的32位版本都没有解决问题。

重点是也要安装...-dev 软件包。下面一行解决了这个问题:

sudo apt-get install lib32stdc++6 lib32z1 lib32z1-dev

【讨论】: