Android Studio AVD Linux AMDGPU驱动程序

时间:2016-09-17 15:33:51

标签: android linux android-studio avd amd-gpu

我无法使用最新的开源AMD驱动程序AMDGPU通过AVD(Android虚拟设备管理器)在Linux上启动任何虚拟设备。

  • GPU:AMD Rx 460
  • CPU:Intel Core i5-4460 CPU @ 3.20GHz×4
  • 操作系统:Solus OS
  • 内核:4.7.4
  • 梅萨:12.0.3
  • AMDGPU:1.1.1

错误讯息:

Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: radeonsi_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: radeonsi
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  153 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  49
  Current serial number in output stream:  48
libGL error: unable to load driver: radeonsi_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: radeonsi
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  153 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  49
  Current serial number in output stream:  48
libGL error: unable to load driver: radeonsi_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: radeonsi
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  153 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  33
  Current serial number in output stream:  34
QObject::~QObject: Timers cannot be stopped from another thread

屏幕截图形式的错误消息:avd amdgpu error

我认为问题在于它需要名为RadeonSI的旧开源驱动程序,但我的显卡不再使用它,它使用较新的AMDGPU。

任何提示如何解决这个问题?

1 个答案:

答案 0 :(得分:8)

对不起,我错了。这不是AMDGPU问题。

以前知道AVD捆绑库的问题。

~/Android/Sdk/tools/emulator -avd Nexus_5_API_23 -use-system-libs

<强>解释

~/Android/Sdk/tools/emulator是SDK的路径。您可以在Android Studio中找到:文件 - &gt;设置 - &gt;外观&amp;行为 - &gt;系统设置 - &gt; Android SDK

Nexus_5_API_23是您必须在Android Studio中创建的虚拟设备。您可以找到可用设备列表:

~/Android/Sdk/tools/emulator -avd -list-avds

最后: -use-system-libs使用您的系统库而不是捆绑的

以上是临时解决方案。我发现的永久解决方案可能不是很好。因此,使用此风险需要您自担风险。

在您的主目录.bashrc(隐藏文件)中设置环境变量:

export ANDROID_HOME=/path/to/your/android/sdk

重新启动/注销。

cd $ANDROID_HOME/tools/lib64/libstdc++
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib64/libstdc++.so.6 $ANDROID_HOME/tools/lib64/libstdc++

显然要确保$ANDROID_HOME/tools/lib64/libstdc++是有效路径。这取决于您提取/移动sdk目录的位置。

在此之后,一切都在为我工作。

还有另一种看起来更合法的解决方案,但遗憾的是对我不起作用。

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Issue on Google Bug Tracker