Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> [Android系統的移植與平台開發]編譯並運行Android4.0模擬器

[Android系統的移植與平台開發]編譯並運行Android4.0模擬器

編輯:Android開發實例

1.    編譯Android模擬器

在Ubuntu下,我們可以在源碼裡編譯出自己的模擬器及SDK等編譯工具,當然這個和在windows裡下載的看起來沒有什麼區別。

編譯Android模擬器的步驟和編譯Android系統很相似:

Ø  source build/envsetup.sh

Ø  lunch sdk-eng

Ø  make sdk

在每次執行make的時候,編譯系統會自動的驗證上次編譯項和這次編譯項,如果兩次不一樣,會刪除所有的目標代碼,其實現在./build/core/main.mk

71 # This allows us to force a clean build - includedafter the config.make

72 # environment setup is done, but before we generateany dependencies.  This

73 # file does the rm -rf inline so the deps which areall done below will

74 # be generated correctly

75 include $(BUILD_SYSTEM)/cleanbuild.mk

我們將第75行注釋掉,這樣就不會每次都自動刪除上次編譯的中間代碼重新編譯了。

編譯完之後效果如下圖所示:


 

 

sdk安裝在了下面的目錄裡:

WORKING_DIRECTORY/out/host/linux-x86/sdk

在該目錄下有一個壓縮包,裡面就是我們從eclipse裡更新下載指定Target的sdk包。

如果你做過app開發都會知道,我們只有下載了不同版本的sdk之後才能創建不同版本的模擬器。當我們編譯完sdk之後就可以創建並運行Android4.0的模擬器了。

$ cd WORKING_DIRECTORY/out/host/linux-x86/sdk/android-sdk_eng.linux_linux-x86/tools

首先,查看當前編譯出來的sdk的id號,用於創建一個模擬器:

$ ./android list targets

Available Android targets:

----------

id: 1 or "android-14"

     Name:Android 4.0

     Type:Platform

     API level:14

     Revision: 2

     Skins:WXGA800, WQVGA400, WXGA720, HVGA, WVGA854, WQVGA432, WVGA800 (default), QVGA,WSVGA

ABIs : no ABIs.

 

創建一個模擬器

$ ./android create avd -n mydroid -t 1

注:-n 表示指定模擬器的名字, -t表示指定創建模擬的版本id

啟動模擬器

$ ./emulator -avd mydroid &

 

由於模擬器要啟動android系統,它要使用幾個映像文件,分別是:kernel-qemu , system.img, userdata.img, ramdisk.img

Ø  kernel-qemu:內核映像文件,它是linux操作系統針對qemu模擬器編譯的內核文件,裡面安裝有qemu的仿真硬件驅動,如果將來在開發板或手機上移植android,那麼,第一步就是要先make出一個支持開發板或手機的kernel來。

Ø  system.img:是android系統的文件系統,裡面包含了android系統的應用程序(apk),系統用到的各種庫(jar, so, a)和資源,配置文件(etc目錄下),系統命令(bin,usr/bin, xbin),該映像文件是由out/target/product/PRODUCT/system目錄打包生成的,我們可以對這個目錄裡的東西進行定制化,比如,你要想讓android系統默認為安裝一個應用程序,那麼可以將要安裝的apk文件拷貝到out/target/product/PRODUCT/system/app目錄下

Ø  userdata.img:用戶數據映像,裡面包含有程序安裝信息,好比如是windows的C:/Program Files/目錄

Ø  ramdisk.img:內存磁盤映像,這個文件對於沒有做過Linux移植的人來說,不好理解,linux內核啟動起來,要掛載一個文件系統作為自己的根文件系統,通常文件系統是存放在塊設備上的,也就是硬盤或flash上的,裡面含有Linux內核啟動過程中依賴的一些程序和配置文件,前面所述的userdata.img和system.img映像,在linux系統啟動起來後掛載到其data,system目錄下。

我們可以通過下面的腳本run_emulator.sh,來指定Android模擬器來加載指定的映像文件:

#!/bin/bash

PWD_PATH=`pwd`

IMG_PATH=$PWD_PATH/out/target/product/generic

exportPATH=$PWD_PATH/out/host/linux-x86/sdk/android-sdk_eng.linux_linux-x86/tools:$PATH

exportANDROID_PRODUCT_OUT=$PWD_PATH/out/target/product/generic

export ANDROID_SWT=$PWD_PATH/out/host/linux-x86/framework

emulator-kernel$PWD_PATH/kernel/goldfish/arch/arm/boot/zImage

注:

ANDROID_PRODUCT_OUT:環境變量必須指定,emulator就是從該環境變量下查找所有的映像文件的

-kernel:指定內核映像

當然也可以分別指定每個映像文件,通過下面的命令:

$ emulator-kernel$PWD_PATH/kernel/goldfish/arch/arm/boot/zImage\

-image $IMG_PATH/system.img \

-data $IMG_PATH/userdata.img\

-ramdisk $IMG_PATH/ramdisk.img

注:

-system指定system.img

-data指定userdata.img

-ramdisk指定ramdisk.img

如果將來要運行adb shell連接模擬器的話,我們都要使用root權限,否則會出現:error:device not found的錯誤。

通過啟動起來的Android系統->System Settings->About phone,可知使用的是我們自己編譯的內核啟動的。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved