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