关于android emulator的设置

来源:互联网 发布:软件需求分析说明书 编辑:程序博客网 时间:2024/06/06 18:39

下载了android源码后,编译,之后运行emulator,第一次启动正常,但关掉terminal后再次启动,发现如下错误:

emulator: Error: You did not specify a virtual device name, and the system directory could not be found.

If you are and Android SDK user, please use '@<name>' or '-avd<name>' to start a given virtual device. (see -help-avd for details)

あれれ?上次明明运行的好好的啊。好像连emulator都找不到,用echo $PATH,发现emulator所在的目录也没有加进去。

于是从头来,试验了几次,发现解决办法是这样的。

1), . build/envsetup.sh

2), set_stuff_for_environment (就是这步,修改了PATH中需要用到的路径)

3), lunch full-eng

4), make -j4

5), emulator

关掉terminal之后,每次都要重新执行步骤1)和2), 太麻烦了,于是我写了个脚本程序setup.sh,只执行第一步和第二步的命令,结果又发现新的问题。

就是如果用./setup.sh 或sh setup.sh,PATH并不会被修改,依然找不到emulator。

查了查资料,原来是source filename(或 . filename)命令和 ./filename以及sh filename是有区别的。

1).当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别的。./filename是因为当前目录没有在PATH中,所以"."是用来表示当前目录的。
2).sh filename用于重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
3).source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

所以,. build/envsetup.sh和set_stuff_for_environment所做的修改是基于当前的shell的,那么如果是用./setup.sh 或sh setup.sh在子shell中执行命令,PATH自然不会得到修改,所以就找不到emulator了。



原创粉丝点击