avd目录 linux

2017-05-17 23:26:52 joshua2011 阅读数 3546

前置条件

目前我台式机电脑的情况是:

OS:Slackware Linux 14.1
显卡:
1)NVidia 独立显卡,用于 GPU计算
2)Intel i3 集成显卡,用于连接 43寸液晶显示器

===================================================

今天安装当前最新版本的 android studio 2.3.2 ,但安装后,AVD模拟器打不开


1) question 1

Xlib:  extension "GLX" missing




原来是安装 NVidia 的驱动时,Nvidia的驱动程序把 原来的 libglx.so 替换了,如下图 NVidia 的驱动版本正是 340.65



查了一下系统的安装包日志,发现 原始的 libglx.so 是在 xorg-server-1.14.3-x86_64-2


于是重新安装 xorg-server-1.14.3-x86_64-2


重启系统后,glxgears 就可以运行起来了(注意:这依然埋藏着一个坑,看question 2)


(出乎我意外的是glxgears竟然能调起libGL.so进行一些openGL的基本计算)


2) question 2



我不知道你们用的linux系统上 GL/glxproto.h 头文件定义长什么样(不同系统上的定义值可能是不同的哦),反正在我的系统上是找不到 168 这个 opcode的定义



glxinfo 依然看到有 NVdia 的东西,看到 OpenGL extensions: 上有 GL_NV_ 这种 NVidia 的实现


什么回事?我已经设置X使用的driver是intel的了,


为什么还会见到nvidia driver相关的的东西

看到 nvidia-application-profiles-340.65-rc,再想到上面的 GL_NV_ ,我就明白了,emulator 调用的依然是 NVidia 的 openGL 库


查看了 libGL.so ,果然发现仍然是 NVidia 驱动安装程序把 libGL.so 替换了NVidia 的实现了。


查了一下系统的安装包日志,发现 原始的  libGL.so 是在 mesa-9.1.7-x86_64-1


于是重新安装 mesa-9.1.7-x86_64-1


安装后,就看到 libGL.so 指向就正确了,用的是 mesa的实现



^_^ 好了,这样 emulator 就开起来了




============== 总结 ================

Q: 为什么 X miss "GLX" extention ?

A: 其实没有 miss "GLX" extention,只是加载的是 NVidia 提供的 GLX,你说 intel 的驱动能兼容么(前置条件说了,我的intel 集显是连接显示器)

Q: 为什么会 invalid request code or no such operation 168

A: intel 驱动把它自己定义的 168 操作码 发给了 NVidia 的 libGL 的 openGL 实现,就相当于 把 intel CPU 的操作码 发给 NVdia GPU 执行,你说能期待正确的运算结果么


=============== 补充 ================

重启系统后,发现 libGL.so.1 又被 NVidia 重新指向了NVidia的实现


考虑到我只使用 NVidia做GPU计算,我就把 NVidia 的 libGL.so.340.65 删除了,再重新安装了 mesa-9.1.7-x86_64-1,emulator又开起来了





==================== 2017-05-18 补充 =======================

今天在用arm的emulator时,又遇到了新的问题,这次是qt库的总量,android的emulator用的是google修改过的qemu,这个qemu用到了qt,这个qt的库路径就在emulator目录下,但程序启动时却加载了/usr/lib64/目录下的qt库,因为我系统上也安装了qt,但和emulator下的qt5版本号不一致







==================== 2017-05-22 补充 =======================

emulator64-arm 


启动不了,是因为昨天因为virtualbox和kvm不能同时启动,我就把kvm重新编译为内核模块了,但忘记 depmod 重新生成 modules.dep,导致modprobe kvm-intel不成功,depmod 一下就好了


x86中运行arm 的emulator就首次运行镜像时要优化镜像内的67个app才慢了一点,其他时间的运行速度都还可以了,足够调试arm的普通类app


==================== 2018-01-27 补充 =======================

我的硬件环境是有一个i3 CPU自带的GPU连接到显示器,由它提供OpenGL的支持,Nvidia显卡不连接显示器只做CUDA计算和Deep Learning,指定 --no-opengl-files,不然系统自带的opengl库会被nvidia的opengl库覆盖 导致其它使用到opengl的软件出错


2011-02-24 18:04:00 zhangzao 阅读数 2285

由于刚接触android没多久,在eclipse配置android sdk的时候遇到很多问题,其中我用vmware里虚拟linux配置android开发环境,由于根分区我没有分配太多的磁盘空间,在我创建模拟器的时候中石化提示不能创建,做了几次之后才发现根分区空间不足造成,因为每次创建的模拟器都会在/root/.android/avd下保存。

既然空间不足,我就想把默认路径改了,但是在eclipse是不能修改了。

在eclipse中,window-->android-->build可以看到default debug keystrore的默认路径为/root./android/debug.keystore

要修改此路径,只能在环境变量中添加ANDROID_SDK_HOME,路径指向别的地方即可,我的路径如下:

export ANDROID_SDK_HOME=/usr/local/eclipse_android/dropins/android-sdk-linux_x86
export PATH=$ANDROID_SDK_HOME:$PATH

 

使环境变量生效之后,重启eclipse,再到default debug keystrore得默认路径就为:

/usr/local/eclipse_android/dropins/android-sdk-linux_x86/.android/debug.keystore

 

以后,所有创建的模拟器都存放在/usr/local/eclipse_android/dropins/android-sdk-linux_x86/.android/avd下面。

2020-05-18 18:15:05 github_38641765 阅读数 74

配置环境变量:

PATH=$PATH:$HOME/tools/bin
export PATH

ANDROID_HOME=$HOME/sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
export PATH="$ANDROID_HOME/emulator:$ANDROID_HOME/platform-tools:$PATH"

1.系统镜像
sudo ./sdkmanager --install "system-images;android-21;google_apis;x86" --sdk_root=/home/ubuntu/sdk

2.android真正的SDK包,存放不同版本对应的API库
sudo ./sdkmanager --install "platforms;android-21" --sdk_root=/home/ubuntu/sdk

3.App构建工具和模拟器编辑启动工具

  • sudo ./sdkmanager --install "build-tools;21.1.2" --sdk_root=/home/ubuntu/sdk

4.VMware 虚拟机关闭后设置虚拟化
启用Intel VT-x/AMD-V

问题

【 emulator: INFO: QtLogger.cpp:68: Warning: could not connect to display 】
参考https://www.jianshu.com/p/0289fcb8cebd,用sdk目录中emulator目录中的emulator工具替代tools目录下的emulator工具启动模拟器

$ANDROID_HOME/emulator/emulator -avd @AVD_NAME
2015-05-07 13:08:22 nijian81 阅读数 741

    这种情况一种是sdk的环境变量没有配置,如果是第一种情况请忽略本篇文章。

    第二种情况是AVD被不同的用户创建。

    这篇文章说的是第二种情况,一般类似eclipse等IDE默认使用的/root/.android/avd/geng。这样的话当你在当前用户模式下去打开avd的时候,会报错:无法打开avd。

    解决方案是:将/root/.android这个目录下面的内容,全部复制到当前用户的目录下:使用如下命令

  首先进入/root的目录,然后执行这个命令:   cp  -R    .android   /home/nijian,这个命令会把当前目录下.android文件夹的内容全部拷贝到/home/nijian文件夹下,然后在执行启动avd的命令就可以解决问题。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

我今天又发现一种情况,就是运行了cp命令了还是提示打不开模拟器,郁闷了半天,后来用了sudo命令,问题解决了。原来,在超级用户下打开才可以,感觉是因为从root目录下拷贝的文件,必须用超级用户才能打开操作。

2015-05-07 16:06:52 nijian81 阅读数 1619

1.我在csdn上看到过很多人说goldfish2.6编译出来的内核会黑屏,换成goldfish3.4之后不会黑屏。我直接用的3.4版本的,也遇到了黑屏问题。

2.我是按照这篇博客的步骤编译内核的,http://blog.csdn.net/yf210yf/article/details/9901375

   后来我又参考了这篇文章,http://blog.csdn.net/flydream0/article/details/7070392

  综合发现问题处在这里:

  make goldfish_armv7_defconfig 这个命令需要在goldfish内核源码的目录下运行,如果不运行这个命令,会出现开机界面无法显示黑屏的问题。

  然后,我运行了这个命令之后,重新生成了内核,启动avd可以正常运行了。

3.还有一点,因为我的eclipse之前生成过一个avd,我一直用的那个avd编译,总是黑屏。后来,我用eclipse重新生成了一个avd,在重新编译运行成功了,问题也可能出在这里。

大家可以按照我上面的3点每个都试试,应该会成功的。

(注意:第一次启动的时候需要等一会,时间依机器性能而定,只要出现了android的开机界面,一般来说都是成功的)。

很抱歉,今天才发现,我说的这种方法的使用情况是:goldfish 2.6 + android 模拟器的API 11版本有效,今天发现在android模拟器API 19上面依然是黑屏!

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以上内容是我的各种尝试,下面说下最正确的思路,这样做的话,我觉得我可以保证一定不会在出现黑屏问题了。

以前我总以为上面的方法肯定可以解决了,今天又搜了各种资料加上自己的尝试,终于彻底解决了这个问题:步骤如下:

1.关键点是.config文件的问题,黑屏问题也是因为这个文件的错误配置引起的。网上很多教程说的是通过make goldfish_defconfig这种方式来生成.config文件,这种方式如果在goldfish 3.4的内核上是可以正常启动avd的,但是如果是goldfish 2.6内核便会出现黑屏问题。

2.我们因为是编译android模拟器内核,有一种方式可以是我们无须配置就能得到.config文件,而且更符合android模拟器配置。方法如下,新建一个模拟器(因为这里我们编译android模拟器内核,需要测试结果,所以android-sdk必须下载。如果已创建模拟器,这步就不必了):

           android create avd -n test -t 1           #在sdk的tools目录下进行

3.打开该模拟器:

           emulator -avd test

4.模拟器开启后,使用如下命令导出模拟器文件系统下的/proc/config.gz文件,这里假设adb命令已添加进环境变量。

           adb  pull  /proc/config.gz   (注意:默认情况下,config.gz文件只有只读权限,是无法对其进行操作的,这时候需要我们对其文件属性进行更改。)

4-1.(这步的方式是更改config.gz文件的读写属性)

           chmod 777 /proc/config.gz    ##将所有的权限付给该文件,使我们可以对其进行操作。       

5.执行上述命令后,config.gz文件会被pull到当前目录下,将其拷贝进内核源码主目录下,解压:

           gunzip  config.gz     ##注意这步一定要用命令行的方式进行,如果在图形界面下操作会有问题!!!

6.得到config文件,然后将其改名为.config文件即可:

          mv  config  .config     ##注意这步一定要用命令行的方式进行,如果在图形界面下操作会有问题!!!

7.然后使用make命令,并且指定avd的内核运行启动,便不会在出现黑屏问题:

          make  

          emulator  -avd  test  -kernel  /home/nijian/android_kernel/goldfish/arch/arm/boot/zImage