• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ++wythern++

            X presents Y for a better Z

            【轉(zhuǎn)】編譯運行android emulator

            原文在這里


            source buile/envsetup.sh

            lunch sdk-eng

            make sdk -j2

             

            編譯完之后,sdk安裝在了下面的目錄里

            ANDROIID_DIR/out/host/linux-x86/sdk

            在這個目錄下有一個壓縮包,里面就是我們從eclipse里下載的sdk的包。

            如果你做過app開發(fā)都會知道,我們只有下載了不同版本的sdk之后才能創(chuàng)建不同版本的模擬器,我們編譯完sdk之后就可以創(chuàng)建模擬器了

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

            首先,查看當(dāng)前sdk的Id號,用于創(chuàng)建一個模擬器

            $ ./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.

             

            創(chuàng)建一個模擬器

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

            -n 表示指定模擬器的名字, -t表示指定創(chuàng)建模擬的版本id

            啟動模擬器

            $ ./emulator &

            由于模擬器要啟動android系統(tǒng),他要使用幾個映像文件,分別是:kernel-qemu , system.img, userdata.img, ramdisk.img

            kernel-qemu:內(nèi)核映像文件,它是linux操作系統(tǒng)針對qemu模擬器編譯的內(nèi)核文件,里面安裝有qemu的仿真硬件驅(qū)動,如果將來在開發(fā)板或手機(jī)上移植android,那么,第一步就是要先make出一個支持開發(fā)板或手機(jī)的kernel來

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

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

            ramdisk.img:內(nèi)存磁盤映像,這個文件對于沒有做過Linux移植的人來說,不好理解,linux內(nèi)核啟動起來,要掛載一個文件系統(tǒng)作為 自己的根文件系統(tǒng),通常文件系統(tǒng)是存放在塊設(shè)備上的,也就是硬盤或flash上的。一個linux的根文件系統(tǒng)里面通常包含有以下內(nèi)容:

            usr:最大的目錄,存放應(yīng)用程序和文件

            bin:常用的命令目錄

            etc:系統(tǒng)相關(guān)配置文件目錄

            dev:系統(tǒng)設(shè)備目錄

            opt:主機(jī)額外安裝的軟件目錄

            boot:存放系統(tǒng)啟動時必須讀取的配置文件,包括核心 (kernel) 在內(nèi)

            home:普通用戶家目錄

            lib:系統(tǒng)使用庫目錄

            var:日志文件目錄

            lost+found:系統(tǒng)不正常產(chǎn)生錯誤時,會將一些遺失的片段放置于此目錄下

            mnt:外設(shè)的掛載點目錄

            proc:虛擬文件目錄,是系統(tǒng)信息的映射

            root:root用戶家目錄

            sbin:超級命令所在目錄

            tmp:一般使用者或者是正在執(zhí)行的程序暫時放置文件的地方

            而ramdisk.img這個映像,其實里面就是上述目錄和一些基本配置文件的打包映像,ramdisk是將映像加載到內(nèi)存里,然后將內(nèi)存當(dāng)做一個塊設(shè)備(硬盤)來使用,所以說通常ramdisk.img通常比較小。當(dāng)然,除了上面的FHS標(biāo)準(zhǔn)的Linux文件系統(tǒng)目錄以外,android系統(tǒng)里,還增加了data,system目錄。

            前面所述的userdata.img和system.img映像,其實就是掛載到data,system目錄下的。

            我們可以通過下面的命令,來指定模擬器,啟動哪個內(nèi)核,使用哪些文件系統(tǒng):

            ./emulator -avd mydroid -system ANDROIID_DIR/out/target/product/generic/system.img  -data ANDROIID_DIR/out/target/product/generic/userdata.img -ramdisk ANDROIID_DIR/out/target/product/generic/ramdisk.img  -kernel ANDROIID_DIR/prebuilt/android-arm/kernel/kernel-qemu-armv7
            -system指定system.img

            -data指定userdata.img

            -ramdisk指定ramdisk.img

            -kernel指定內(nèi)核映像

            實驗:對androd系統(tǒng)進(jìn)行瘦身

            android系統(tǒng)抽屜里顯示的應(yīng)用存放在out/target/product/PRODUCT/system/app目錄里,我們可以將一些不 常用的,不想用的apk文件刪除,一來減小Android的體積,二來可以加快系統(tǒng)啟動速度,因為在系統(tǒng)啟動時,會掃描system/app目錄下的 apk文件,對比有沒有安裝更新。

            刪除一些apk,去掉計算器,日歷,電話,短信

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Calculator.*

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Calendar.*

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Email.*

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Message.*

            $ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Telephone.*

            刪除了之后,執(zhí)行下面的命令,只編譯system.img,而不去檢查依賴關(guān)系,這樣很快就能編譯完

            $ make snod

            注:上述命令必須要保證執(zhí)行了source buile/envsetup.sh和lunch full-eng之后,以后只要是說make,都指已經(jīng)執(zhí)行了前述兩步驟

            snod的意思是編譯system imge no dependency

            然后,再重新啟動模擬器,指定自己編譯的system.img,查看抽屜里有沒有我們刪除的應(yīng)用

            ./emulator -avd mydroid -system ANDROIID_DIR/out/target/product/generic/system.img  -data ANDROIID_DIR/out/target/product/generic/userdata.img -ramdisk ANDROIID_DIR/out/target/product/generic/ramdisk.img  -kernel ANDROIID_DIR/prebuilt/android-arm/kernel/kernel-qemu-armv7

            思考:我們能不能將全部的system/app下的apk刪除掉,如果不能,哪些必須要保留,為什么?

            posted on 2013-01-06 16:34 wythern 閱讀(3511) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国内精品久久久久久99| 午夜福利91久久福利| 久久精品无码午夜福利理论片| 久久综合精品国产二区无码| 9191精品国产免费久久| 婷婷五月深深久久精品| 无码人妻少妇久久中文字幕 | 久久久久久久亚洲Av无码| 狠狠综合久久综合88亚洲| 欧美一区二区久久精品| 精品久久久噜噜噜久久久| 国产—久久香蕉国产线看观看| 欧美亚洲国产精品久久高清| 精品久久久久久无码免费| 91精品国产91久久久久久蜜臀| 久久综合鬼色88久久精品综合自在自线噜噜| 亚洲成色WWW久久网站| 久久久亚洲精品蜜桃臀| 日本加勒比久久精品| 久久免费线看线看| 久久精品国产99久久香蕉| 亚洲嫩草影院久久精品| 蜜臀久久99精品久久久久久小说| 欧美伊人久久大香线蕉综合69 | 久久国产精品波多野结衣AV| 久久A级毛片免费观看| 久久精品国产99国产精品亚洲 | 久久免费大片| yellow中文字幕久久网| 狠狠色丁香久久婷婷综| 99久久婷婷免费国产综合精品| 久久精品人人做人人爽电影蜜月| 久久婷婷人人澡人人爽人人爱| 四虎影视久久久免费| 亚洲国产成人久久精品99| 久久永久免费人妻精品下载| 国产精品久久婷婷六月丁香| 国产69精品久久久久观看软件| 狠狠色丁香婷婷久久综合| 一级做a爰片久久毛片看看| 久久天天躁狠狠躁夜夜av浪潮 |