Android虚拟设备的保存位置可以更改吗?

257
我已在运行Windows XP的计算机上设置了Android SDK和Eclipse,并且AVD(Android虚拟设备)默认保存在“文档和设置\用户\.android”中。 有没有办法改变这种行为?我想把所有组件都保存在分区的一个目录中,让一切都更加整合。显然不是什么大问题,但这里是否有人知道解决方法?

1
我制作了虚拟RAM磁盘,比SSD快100倍,将模拟器文件移动到该磁盘上可以大大加速模拟器的加载速度。 - Vinigas
@Vinigas,您能详细说明一下“100倍的RAM磁盘”吗?我也想加速我的模拟器。 - Utsav Gupta
1
我使用“SoftPerfect RAM disk”软件创建虚拟磁盘。然后,我将Android模拟器文件放入此RAM磁盘并设置模拟器位置。如果您有硬盘驱动器,则会看到在HDD和RAM中运行模拟器之间的巨大差异。 - Vinigas
保存问题:https://dev59.com/LHA75IYBdhLWcg3wxsNn - Saidolim
2
在2021年,这应该只需要几个点击。为什么事情变得如此复杂? - Kenny
1
@Kenny,2022年在Android Studio中仍然不容易做到,唉。 - jsky
22个回答

340
添加新用户环境变量(Windows 7):
  1. 开始菜单 > 控制面板 > 系统 > 高级系统设置(在左侧)> 环境变量

  2. 添加指向您的主目录的新用户变量(位于顶部):

    变量名称:ANDROID_SDK_HOME
    变量值:您选择的目录路径

AVD管理器将使用此目录将其.android目录保存其中。

对于那些可能感兴趣的人,我在博客中记录了我的第一次Android开发尝试...
Android "Hello World": a Tale of Woe

或者,您可以使用Rapid Environment Editor来设置环境变量。


1
谢谢。阅读您的博客文章就像重温今天折腾这个东西的前几个小时。真是太痛苦了! - Matt Burland
7
谢谢您的信息,+1。但我正在使用XP系统。对于我来说,只需要重新启动后就能生效。谢谢。 - Gunaseelan
1
这种方法对我有效,直到我重新启动电脑。Win7。 - wangf
2
或者在命令提示符中键入 setx ANDROID_SDK_HOME D:\your\path\here - Петър Петров
32
建议使用ANDROID_AVD_HOME环境变量而非ANDROID_SDK_HOME,因为这样可以避免移动存储在~/.android中的任何用户特定配置文件,从而使其他用户/发行版可以使用相同的AVDs。 在Linux Debian上效果良好。 - John
显示剩余12条评论

80

根据官方文档https://developer.android.com/studio/command-line/variables.html,您需要更改ANDROID_AVD_HOME环境变量:

模拟器环境变量

默认情况下,模拟器将配置文件存储在$HOME/.android/目录下,将AVD数据存储在$HOME/.android/avd/目录下。您可以通过设置以下环境变量来覆盖默认值。模拟器-avd命令按照$ANDROID_AVD_HOME、$ANDROID_SDK_HOME/.android/avd/和$HOME/.android/avd/中的值顺序搜索avd目录。有关模拟器环境变量的帮助,请在命令行中键入emulator-help-environment。有关模拟器命令行选项的信息,请参阅从命令行控制模拟器。

  • ANDROID_EMULATOR_HOME: 设置到用户特定的模拟器配置目录的路径。默认位置为
    $ANDROID_SDK_HOME/.android/。
  • ANDROID_AVD_HOME: 设置包含所有AVD特定文件的目录路径,这些文件大多由非常大的磁盘映像组成。默认位置为$ANDROID_EMULATOR_HOME/avd/。如果默认位置的磁盘空间不足,您可能需要指定新位置。

更改或设置ANDROID_AVD_HOME后,您将需要将~user/.android/avd/中的所有内容移动到新位置,并更改每个模拟器的ini文件路径,只需将其替换为您的新路径即可。


5
这应该是答案。谢谢。 - Ned
2
我在将模拟器移动到D盘后,遇到了VSCode无法识别模拟器的问题,因为我只设置了ANDROID_AVD_HOME。在其上添加ANDROID_EMULATOR_HOME解决了这个问题。谢谢。 - Anton Duzenko
这应该是正确的前进方式... - Romeo Sierra

39

修改"C:\Documents and Settings {your windows login} .android\avd\"中的"virtual_android2.2.ini"文件:

target=android-8
path=E:\android_workspace\avd\virtual_android2.2.avd

将文件夹“virtual_android2.2.avd”从“C:\Documents and Settings\{你的Windows登录名}.android\avd\”移动到“E:\android_workspace\avd\”中。


这对我有用!每次我创建模拟器都要这样做有点麻烦。 - Chucky
经过多次关于VS的Android模拟器没有足够空间安装或启动另一个虚拟设备的投诉,现在一切都很顺利。 - Ivan Caravanio

27

将你的.android文件夹移动到你想要的任何位置。

然后,创建一个符号链接(symlink),像这样:

# In your home folder
$ ln -s /path/to/.android/ .

这只是告诉Linux,每当任何应用程序引用路径~/.android时,请将其连接到/path/to/.android


17

前往Android工具目录。编辑android.bat命令文件。在命令文件的末尾附近,找到类似以下行:

call %java_exe% -Djava.ext.dirs=%java_ext_dirs% -Dcom.android.sdkmanager.toolsdir="%tools_dir%" -Dcom.android.sdkmanager.workdir="%work_dir%" -jar %jar_path% %*
并替换
call %java_exe%

使用

call %java_exe% -Duser.home={your_prefer_dir}

其中{your_prefer_dire}代表不带花括号但加上双引号的你偏爱的目录名,

例如:

call %java_exe% -Duser.home="E:\Program Files (x86)\android-sdk-windows"

2
这对我有用,而被接受的答案则没有。此外,这实际上回答了OP所问的问题,即如何从用户主目录更改到另一个AVD目录,而不是相反。 - Adam Burley
这样做是不允许的!SDK 管理器会报错,而且无法找到新的文件夹路径... 使用用户环境下的 ANDROID_SDK_HOME,并重新启动计算机可能会有所帮助 - [.android 文件夹将会在 %android_sdk_home% 中创建] - Davideas

10

适用于 Windows 10 上的 Visual Studio 2017

C:\Users\YOURUSERNAME\.android 文件夹复制到(例如)E:\avd

打开环境变量窗口:

  1. 进入“设置”,并单击“系统”。
  2. 在左侧,单击“关于”,然后在底部选择“系统信息”。
  3. 在新窗口中,单击左侧的“高级系统设置”。
  4. 单击结果窗口底部的“环境变量”。

添加一个新变量:

  • 变量名称:ANDROID_SDK_HOME
  • 变量值:目录路径(例如,E:\avd

不要在变量值中包括 .android

重新启动 Visual Studio。

更改 SDK 和 NDK 位置,请转到:

工具 -> 选项 -> Xamarin -> Android 设置


9
在Windows 10中,我遇到了这个问题,因为我的C驱动器空间不足,需要释放空间。AVD文件夹有14GB的空间,所以我需要将该文件夹移动到另一个驱动器上。第一个答案对我没用,所以我尝试了另一种方法来解决这个问题。我为您制作了一张图片,如果您也遇到同样的问题,您无需将.android文件夹中的所有文件都移动到另一个驱动器上(此方法行不通),只需将....android\avd中的avd文件夹移动到另一个驱动器上,并打开.ini文件,将avd文件夹路径从该文件更改为新路径。像这张图片一样:image help you to see how to change old path to new path希望这对您有用。注意:ini文件中路径前后的单独字符可能看不见,要小心,如果删除了该字符,它就无法工作。

7

请查看这里。 使用android命令创建avd时,您可以指定文件存放的位置。

-p --path     Location path of the directory where the new AVD will be created

你知道通过设置实用程序并将其默认设置为特定位置的任何方法吗? - primehunter326
不是的。我甚至不使用Windows :( - Macarse
好的,就像我说的那样,这不是什么大问题,只是想到整个SDK包是多模块化的,所以可能有一些方法可以更好地控制它。感谢您的帮助! - primehunter326
上面的链接已经失效了(http://developer.android.com/intl/zh-TW/guide/developing/tools/avd.html)。 - Jeff Mergler

7
您可以更改新AVD的.ini文件:
target=android-7
path=C:\Users\username\.android\avd\VIRTUAL_DEVICE_NAME.avd

我不知道如何指定存储.ini文件的位置 :)

1
这很好用。ini 文件必须保留在旧文件夹中。 - einUsername

4

环境变量ANDROID_AVD_HOME可用于定义AVD Manager查找AVD INI文件的目录,因此可以用于更改虚拟设备的位置;

在Windows上,默认值为%USERPROFILE%\.android\avd(在Linux上为~/.android/avd)。

还可以为整个目录%USERPROFILE%\.android(在Linux上为~/.android目录)创建链接或符号链接。

移动AVDs时,需要相应地更新AVD INI文件中的path条目。


这个ANDROID_AVD_HOME环境变量可能比ANDROID_SDK_HOME更好,因为它避免了移动存储在/.android中的任何用户特定配置,因为其他用户/发行版也可以使用相同的AVD。 在Linux上,我在我的/.profile中导出了ANDROID_AVD_HOME,它运行得很好。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接