【转】android开发中关于模拟器emulation的常见问题
【转】android开发中关于模拟器emulation的常见问题
Trouble:
无法启动android模拟器,提示 XDM authorization key matches an existing client!
SDL init failure, reason is: No available video device
Oneway:
打开电脑的 Terminal 终端,
以当前图形界面用户的身份执行命令 xhost localhost 即可,如果想实现登录后自动执行这个命令,可以做以下操作
点开 Applicantions Menu -> Settings -> Session and Startup
在打开的选项中点击 Application Autostart
然后点击左下方的 Add 按钮,
设置Name的值为:xhost localhost
设置Description的值为:xhost localhost
设置Command的值为:xhost localhost
点击OK,点击Close,即可
Trouble:
无法启动android模拟器,提示 emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure KVM is properly installed and usable.
CPU acceleration status: This user doesn't have permissions to use KVM (/dev/kvm). 或者提示
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure KVM is properly installed and usable.
CPU acceleration status: Could not open /dev/kvm :Permission denied
Oneway:
使用 root 权限执行以下三条命令后注销当前用户或者直接重启电脑即可
(本例子中当前登录图形界面的用户是 sman)
groupadd kvm
usermod -G kvm -a sman
echo 'KERNEL=="kvm",GROUP="kvm",MODE="0660"' >> /etc/udev/rules.d/androidUseKVM.rules
这三条命令的作用分别是:
#创建用户组kvm
#将用户sman添加到kvm用户组
#开机时自动赋予用户组kvm拥有0660的权限
Trouble:
无法启动android模拟器,提示 Android/Sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5_API_23 libGL error: failed to load driver: i965
libGL error: Try again with LIBGL_DEBUG=verbose for more details. failed to create drawable
getGLES1ExtensionString: Could not create GLES 1.x Pbuffer!
Failed to obtain GLES 1.x extensions string!
Could not initialize emulated framebuffer
Oneway:
根据提示在Terminal中申明环境变量并在Terminal中启动模拟器 export LIBGL_DEBUG=verbose; Android/Sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5_API_23 得到提示: libGL: OpenDriver: trying /usr/lib64/xorg/modules/dri/i965_dri.so
libGL error: failed to open drm device: Permission denied
libGL error: failed to load driver: i965
libGL: OpenDriver: trying /usr/lib64/xorg/modules/dri/swrast_dri.so
libGL: OpenDriver: trying /usr/lib64/xorg/modules/dri/i965_dri.so
libGL error: failed to open drm device: Permission denied
libGL error: failed to load driver: i965
libGL: OpenDriver: trying /usr/lib64/xorg/modules/dri/swrast_dri.so
failed to create drawable
getGLES1ExtensionString: Could not create GLES 1.x Pbuffer!
Failed to obtain GLES 1.x extensions string!
Could not initialize emulated framebufferSegmentation fault 先解决第一个错误,第一个错误是没有权限使用drm设备
于是使用groups命令检查当前用户是否存在于video用户组
[sman@mnxnm:~]$ groups
users plugdev vboxusers kvm
可以看到sman不属于video用户组 于是使用root权限将当前用户sman添加到video用户组
root@mnxnm:~# usermod -G video -a sman 注销当前用户再重新登录(必须重新登录,否则用户组改动不会生效)
登录后确认sman是否成功加入video用户组
[sman@mnxnm:~]$ groups
users video plugdev vboxusers kvm
可以看到sman成功加入video用户组 再启动Android studio,再通过Android Virtual Device Manager启动模拟器
看看错误有没有消除
如果提示NAND: could not write file /tmp/android-sman/emulator-7UY28S, File exists
则 rm /tmp/android-sman/emulator-* 后再试 OK,成功启动模拟器
Trouble:
android模拟器中DNS解析正常但无法ping通外网
Oneway:
这是正常现象,因为模拟器与PC之间的网络通信是通过TCP端口转发来实现的
而ping是ICMP数据包,没有端口,故模拟器无法将ping请求送出
但是是可以正常浏览网页的 所以不能用ping来测试模拟器是否能够联网,而是用网页浏览器来测试
Trouble:
android模拟器中安装调试apk时出错,提示 Application Installation Failed
Installation failed with message INSTALL_FAILED_CONTAINER_ERROR.
It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing. WARNING: Uninstalling will remove the application data! Do you want to uninstall the existing application?
Oneway:
方法一:adb root
adb shell rm /mnt/secure/asec/smdl* 方法二:将项目源文件 AndroidManifest.xml 中的
android:installLocation="preferExternal"
修改成
android:installLocation="auto"
即可
【转】android开发中关于模拟器emulation的常见问题的更多相关文章
- android开发中的5种存储数据方式
数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...
- Android开发中如何解决加载大图片时内存溢出的问题
Android开发中如何解决加载大图片时内存溢出的问题 在Android开发过程中,我们经常会遇到加载的图片过大导致内存溢出的问题,其实类似这样的问题已经屡见不鲜了,下面将一些好的解决方案分享给 ...
- MVP模式在Android开发中的应用
一.MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互.同一 ...
- Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令
Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...
- Android 开发中 SQLite 数据库的使用
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, ...
- 在Android开发中替换资源图片不起作用的解决方法
现象 在android开发中,经常会需要替换res\drawable中的图片,打开res\layout下的文件预览布局页面发现图片已经被替换,但在模拟器或者真实机器上运行时发现该图片并没有被替换,还是 ...
- 在Android 开发中使用 SQLite 数据库笔记
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PH ...
- Android学习探索之Java 8 在Android 开发中的应用
前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...
- android开发中fragment获取context
在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationCont ...
随机推荐
- java_httpservice
http://blog.csdn.net/maosijunzi/article/details/41045181
- TJU 2944 Mussy Paper 最大权闭合子图
传送门 给你一些东西, 每个东西有一个值,有正有负. 在给一些关系, 选了其中一个物品, 和他有关系的也必须全都选上, 关系是单向的. 问最后的最大价值是多少, 如果小于0输出“ **** ”( ...
- Ext Store Proxy Ajax
使用Store ajax的方式来获取数据 <div id="grid1"> </div> <script> Ext.onReady(functi ...
- Angular form
参考 http://blog.xebia.com/2013/10/15/angularjs-validating-radio-buttons/ http://stackoverflow.com/que ...
- MOQ
MOQ:(Minimum order Quantity) 最低订货数量 MOQ 即最小订购量(最小订单量) 对每个产品设定建议订单量是补货的方法之一.另外要注意订单的有效性,这是由供应商制定的 ...
- nhibernate 更新 SqlDateTime 溢出问题
最近在用nhibernate,更新实体 时遇到一个SqlDateTime 溢出问题 费力调了N久,开始以为是实体的日期格式属性未赋值,但是调试发现哪怕实体对应的日期类型属性赋值了,也会报同样的错误. ...
- ubuntu之iptables
1.更新iptables并立即生效: a.保存当前设置:iptables-save > /etc/iptables.up.rules b.修改iptables规则: 例如: -I INPUT - ...
- /etc/ld.so.conf详解
/etc/ld.so.conf 此文件记录了编译时使用的动态库的路径,也就是加载so库的路径. 默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,而通常通过源码包进行安装 ...
- ASP.NET Web编程
runat="server"直接回交服务器,处理数据,又以数据加密后的hidden属性的input控件插入回去,实现表单的状态保存 ruant="server" ...
- BZOJ 1012 最大数maxnumber
Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. 2. ...