Android Studio AVD Linux AMDGPU驱动程序

问题描述:

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

  • GPU:AMD的Rx 460
  • CPU:英特尔Core i5-4460 CPU @ 3.20GHz×4
  • OS: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。

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

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

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

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

说明

~/Android/Sdk/tools/emulator是路径到您的SDK。您可以在Android Studio中找到:文件 - >设置 - >外观&行为 - >系统设置 - > 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