【转】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 ...
随机推荐
- 初来乍到--------smarty
Smarty Day01-----smarty的使用 作用:把php+html分离,程序和美工 使用: 1.下载源码包 2.目录结构 libs 源码文件 Smarty.class.php templa ...
- egret命令行编译项目时 版本不对应的问题
egret 命令行编译项目时 如使用 egret build -e 会出现版本不对应的问题 分析原因 A,B项目 A项目使用1.8的egret引擎, B项目使用2.5引擎 但本地引擎升级至2.5.5, ...
- asp.net 多站点共享FormAuthentication
<authentication mode="Forms"> <forms domain="lizhanglong.com" timeout= ...
- clear:both后margin-top不起作用
如: <div style="float:left;">float:left</div> <div style="clear:both;ma ...
- Ceph相关博客、网站(256篇OpenStack博客)
官网文档: http://docs.ceph.com/docs/master/cephfs/ http://docs.ceph.com/docs/master/cephfs/createfs/ ( ...
- 半模对话框 QProgressDialog
http://doc.qt.io/qt-4.8/qprogressdialog.html progressdialog 用到了qfuture http://blog.csdn.net/liang198 ...
- VS2012生成绿色版程序的方法
方法就是在工程属性里设置: 配置属性-〉常规-〉项目默认值-〉MFC的使用-〉在静态库中使用MFC,见下图 之后重新编译即可.
- Vim 实用技术,第 2 部分: 常用插件(转)
http://blog.jobbole.com/20619/ 2.1. gzip(压缩文件支持) 作者:Bram Moolenar 网站脚本编号:无(包含在 Vim 的标准发布之中) 安装说明:无 功 ...
- HTML语法
2014-01-21/21:28:59 网页制作概述 HTML是WEB页面的描述性语言 CSS为HTML样式机制 JavaScript为交互WEB设计最佳选择 CSS\JavaScript\PHP都可 ...
- java ssh
sshj (currently best choice) https://github.com/shikhar/sshj ssh used in jenkins-ci https://github.c ...