我一直在尝试从Android工作室运行模拟器,但一直都失败了。起初,它抱怨缺少ANDROID_SDK_ROOT,但是当我设置它时,用google apis创建一个带有最新x86或x86_64图像的模拟器,我收到以下错误:
emulator: ERROR: This AVD's configuration is missing a kernel file! Please ensure the file "kernel-ranchu" is in the same location as your system image.
emulator: ERROR: ANDROID_SDK_ROOT is defined (/mnt/hdd/.android) but cannot find kernel file in /mnt/hdd/.android/system-images/ sub directories
AVD本身是在~/.android/avd/
下创建的,即使我的sdk root在env 和 android studio中定义为/mnt/hdd/.android
。我确认system.img
和kernel-ranchu
以及其他文件都存在于/mnt/hdd/.android/system-images/android-25/google_apis/x86{,_64}/
下。
我曾尝试从命令行运行模拟器,这似乎仅适用于x86图像(它与x86_64崩溃,请参阅this post)。
$ ANDROID_SDK_ROOT=/mnt/hdd/.android emulator -datadir /mnt/hdd/.android -avd nougat_25
所以,我怀疑avd管理器的问题可能是,当试图从android studio的avd管理器运行模拟器时,-datadir搞砸了。
如何将-datadir
标志添加到avd管理器,以便我可以从avd管理器正确运行模拟器。每次更改代码并尝试测试时重新安装新的apk都很麻烦,而且我不想在手机上重新安装应用程序,因为我还没有备用。
如果添加标志不是一个选项,我还可以用avd manager的模拟器解决上述问题?
编辑:我能够通过在emulator
中将emulator-real
重命名为/mnt/hdd/.android/tools/
来使其工作,并在同一目录中创建一个名为emulator
的文件,其中包含以下内容。在文件上设置exec位似乎欺骗了android studio运行我自己的脚本。
#!/bin/sh
export ANDROID_SDK_HOME=/mnt/hdd
/mnt/hdd/.android/tools/emulator-real -datadir /mnt/hdd/.android -kernel /mnt/hdd/.android/system-images/android-25/google_apis/x86/kernel-ranchu -system /mnt/hdd/.android/system-images/android-25/google_apis/x86/system.img -ramdisk /mnt/hdd/.android/system-images/android-25/google_apis/x86/ramdisk.img -initdata /mnt/hdd/.android/system-images/android-25/google_apis/x86/userdata.img "$@"
基本上这意味着分别设置-kernel
-system
-initdata
和-ramdisk
选项,以便模拟器可以选择正确的文件。
我仍然想知道更好的解决此问题的方法,因为用代理脚本替换emulator
很麻烦,每次创建新的仿真配置文件时都必须更改脚本。