【转】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用户组
	[[email protected]:~]$ groups
	users plugdev vboxusers kvm
	可以看到sman不属于video用户组

	于是使用root权限将当前用户sman添加到video用户组
	[email protected]:~# usermod -G video -a sman

	注销当前用户再重新登录(必须重新登录,否则用户组改动不会生效)
	登录后确认sman是否成功加入video用户组
	[[email protected]:~]$ 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"
		即可
时间: 2024-10-14 07:15:03

【转】android开发中关于模拟器emulation的常见问题的相关文章

MVP模式在Android开发中的应用

一.MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互.同一时候让Model仅仅关系数据的处理.基于MVC概念的MVP(Model-View-Presenter)模式应运而生. 在MVP模式里通常包括4个要素: (1)View:负责绘制UI元素.与用户进行交互(在Android中体现为Activity); (2)View interface:须要View实现的接口,V

Android开发中adb命令

作用: adb是SDK提供的一个常用的命令行工具,全称为Android Debug Bridge就是调试桥的作用,用于在调试时连接本机和手机设备. 借助这个工具,我们可以管理设备或手机模拟器的状态. 还可以进行以下的操作:  1.快速更新设备或手机模拟器中的代码,如应用或Android 系统升级: 2.在设备上运行shell命令: 3.管理设备或手机模拟器上的预定端口: 4.在设备或手机模拟器上复制或粘贴文件: 详解: 没开启一个Android 模拟器, 就相当于开启了一个新的单独系统,这个系统

android开发中的5种存储数据方式

数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstance State保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整

Android开发中单元测试的两种方式

Android开发中单元测试的两种方式 一位优秀的程序员也同样不能保证自己的程序没有bug,因此编写合适的测试程序是完全有必要的,这样也会降低程序在后期出现各种奇奇怪怪bug的可能,降低维护成本,未雨绸缪将bug扼杀在摇篮之中. 看到网上有很多依旧用写java单元测试的方式在写android程序的单元测试程序--junit,当然我一直都反感将不合时宜的东西强搬到新的技术应用以获取一席之地的这种做法,不断的应用新的方法提高效率,完善程序才是真理!废话不多说,直接说到今天的重点:Android开发中

android开发中经常遇到的问题汇总

大家都在为项目开发成功而喜悦,但可不知成功的路上是会经常出错的,下面是我碰到的一些错误集合! [错误信息] [2011-01-19 16:39:10 - ApiDemos] WARNING: Application does not specify an API level requirement![2011-01-19 16:39:10 - ApiDemos] Device API version is 8 (Android 2.2) 原因: 不影响正常运行.在AndroidManifest.

android开发中碰到的三个小问题

Android开发中注意到的几个问题 1.  关于actionbar 初始化配置actionbar,getactionbar经常为null,原因是因为在源码或者布局文件中设置了全屏显示的缘故,不设置全屏显示就不会有问题. 2.  关于textview Textview默认是没有焦点的,因此不可能有点击事件,也无法直接实现背景的selector.通过设置android:clickable = true;就可以了,这一点与Button有很大的不同 3.  关于sourcinsight中的php代码.

android开发中监听器的三种实现方法(OnClickListener)

Android开发中监听器的实现有三种方法,对于初学者来说,能够很好地理解这三种方法,将能更好地增进自己对android中监听器的理解. 一.什么是监听器. 监听器是一个存在于View类下的接口,一般以On******Llistener命名,实现该接口需要复写相应的on****(View v)方法(如onClick(View v)). 二.监听器的三种实现方法 (以OnClickListener为例) 方法一:在Activity中定义一个内部类继承监听器接口(这里是OnClickListener

android开发中,两个按下手机实体返回键,两个Activity反复来回跳转的问题

android开发中,对于用intent实现跳转的Ativity,有时候按下手机的返回键时,两个Activity之间会多次相互跳转,始终退出不了程序的情况.这是由于从Activity  A跳转到Activity  B时,A被压入Activity栈中:当从B返回时,默认又重新创建了一个Activity A对象,这样一来就有了多个Activity A对象.所以造成了无法退出情况. 解决办法是:在AndroidManifest.xml文件中找到Activity A项,在其属性中加入  android:

Android开发中常用的ListView列表的优化方式ViewHolder

在Android开发中难免会遇到大量的数据加载到ListView中进行显示, 然后其中最重要的数据传递桥梁Adapter适配器是常用的,随着市场的需 求变化ListView'条目中的内容是越来越多这就需要程序员来自定义适配器, 而关键的就是适配器的优化问题,适配器没有优化好往往就会造成OOM (内存溢出)或者是滑动卡顿之类的问题,接下来我就给大家介绍一种常 用的Adapter优化方法 1 /** 2 * list View的适配器 3 */ 4 class Adapter extends Bas