1. 程式人生 > >emulator: ERROR:This AVD's configuration is missing a kernel file!&HAX is not installed on this mach

emulator: ERROR:This AVD's configuration is missing a kernel file!&HAX is not installed on this mach

啟動模擬器需要兩個步驟:

1.建立AVD(Android Virtual Device)

2.啟動emulator

一般使用Eclipse開發時,開啟一個模擬器就是這麼一個過程,其實命令列模式下也是這樣。剛開始不知道如何命令列啟動模擬器的時候就輸入了一個emulator,報錯了,出現如下提示:

[html] view plaincopy

  1. emulator: ERROR: You did not provide the name of an Android Virtual Device  
  2. with the '-avd <name>' option. Read -help-avd for more information.  
  3. If you *really* want to *NOT* run an AVD, consider using '-data <file>'  
  4. to specify a data partition image file (I hope you know what you're doing).  

1.建立AVD

根據提示資訊說明,需要先有一個AVD,即一個android的虛擬裝置,在命令列輸入android create avd當然前提是在linux中配置好了環境變數,否則會出現找不到命令的錯誤提示的。如果環境變數配置正確會出現了錯誤提示資訊:

[html] view plaincopy

  1. Error: The parameters --name, --target must be defined for action 'create avd'  
  2. Usage:  
  3.   android [global options] create avd [action options]  
  4. Global options:  
  5.   -s --silent   Silent mode: only errors are printed out.  
  6.   -h --help     Help on a specific command.  
  7.   -v --verbose  Verbose mode: errors, warnings and informational messages are printed.  
  8. Action "create avd":  
  9.   Creates a new Android Virtual Device.  
  10. Options:  
  11.   -c --sdcard   Path to a shared SD card image, or size of a new sdcard for the new AVD  
  12.   -s --skin     Skin for the new AVD  
  13.   -a --snapshot Place a snapshots file in the AVD, to enable persistence.  
  14.   -n --name     Name of the new AVD [required]  
  15.   -p --path     Directory where the new AVD will be created  
  16.   -t --target   Target ID of the new AVD [required]  
  17.   -f --force    Forces creation (overwrites an existing AVD)  

根據上述所提到的引數,並通過查資料得到了-t --target引數如何獲得。在命令列下輸入android list target,顯示如下:

[html] view plaincopy

  1. android list target  
  2. Available Android targets:  
  3. id: 1 or "android-8"  
  4.      Name: Android 2.2  
  5.      Type: Platform  
  6.      API level: 8  
  7.      Revision: 2  
  8.      Skins: WQVGA432, WQVGA400, HVGA, WVGA854, QVGA, WVGA800 (default)  

其中的id:這一行就是我們需要的target的引數

如果啟動的模擬器還需要sdcard的話,還需要首先建立一個sdcard的映象

[html] view plaincopy

  1. mksdcard -l sdcard 512M ~/xx/sdcard.img  

這樣就很容易寫出建立AVD的命令了

[html] view plaincopy

  1. android create avd -c ~/xxx/sdcard.img -n emulator2011 -p ~/test/ -t 1 -f  

2.啟動模擬器

首先通過android list avd 檢視建好的虛擬裝置

[html] view plaincopy

  1. Available Android Virtual Devices:  
  2.     Name: android.2.2  
  3.     Path: /home/XXX/.android/avd/android.2.2.avd  
  4.   Target: Android 2.2 (API level 8)  
  5.     Skin: HVGA  
  6. ---------  
  7.     Name: emulator2011  
  8.     Path: /home/XXX/test  
  9.   Target: Android 2.2 (API level 8)  
  10.     Skin: WVGA800  
  11.   Sdcard: /home/XXX/sdcard.img  

然後通過命令

[html] view plaincopy

  1. emulator @emulator 2011  

就啟動了第二個型別的模擬器。

其實用命令列啟動模擬器和eclipse裡啟動是相同的。上面兩個步驟就是對應eclipse中建立avd和啟動模擬器的過程,使用eclipse建立avd,它會在家目錄下建立.android的隱藏資料夾,將avd的資訊全都放到這裡面。

android create avd -c ~/Desktop/android/sdcard.img -n emulator2015 -p ~/Desktop/android/test/ -t 4 -f

emulator @emulator2015

emulator: ERROR: x86 emulation currently requires hardware acceleration!

Please ensure Intel HAXM is properly installed and usable.

CPU acceleration status: HAX is not installed on this machine (/dev/HAX is missing).

  •  前提: CPU 支援 VT (Virtualization Technology), 而且僅限於 Intel CPU

  • 首先要開啟SDK Manager 下載intel haxm,下載位置:

  android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager\IntelHaxm.exe

  • 下載完畢後執行IntelHaxm.exe安裝,完畢後命令行執行 sc query intelhaxm ,如果 STATE RUNNING 表示安裝成功。

  • 開啟 SDK Manager  下載 intel x86映象

  • 建立AVD,CPU選擇 intel atom x86

出現emulator: ERROR:This AVD's configuration is missing a kernel file!!的原因是在你的sdk下缺少相應的kernel-qemu檔案。
     可按如下步驟查詢原因:
執行android list avd ,檢視你建立的AVD

其中ABI:後面的關鍵字記住,然後進入你的SDK中..\..\sdk\system-images\android-17,我建立的AVD是API level 17,所以檢視的檔案是android-17,看這個資料夾中是否有X86的檔案

我之前就是因為缺少X86的檔案,所以一直報錯。
 
     解決方法:
進入Android SDK Manager,檢視相應AVD的Packages

缺少X86資料夾就下載Intel x86 Atom System Image
缺少armeabi-v7a資料夾就下載ARM EABI v7a System Image
下載完成就OK 了!
 
      然後再使用命令emulator @(avd名字) - verbose檢視

其中有一行顯示如下,

報錯就是因為它找不到x86下面的kernel-qemu檔案!!!