歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 編譯smdkv210開發板自帶的Android 2.3源碼generic版

編譯smdkv210開發板自帶的Android 2.3源碼generic版

日期:2017/3/1 10:40:52   编辑:Linux編程

直接使用smdkv210 2.3源碼根目錄下的編譯腳本來編譯generic版是不能再模擬器上運行的,

這樣給源碼的修改帶來麻煩,每次修改之後都要下到板子上來看效果。

觀察編譯CM源碼generic版時輸出的配置信息,發現少一項TARGET_ARCH_VARIANT,找到輸出配置的信息的envsetup.mk,添加TARGET_ARCH_VARIANT的輸出,發現即使在編譯腳本中export TARGET_ARCH_VARIANT=armv5te,輸出信息仍為armv7-a-neon,原因是無論TARGET_PRODUCT是general還是smdkv210,都會調用device.mk以及相關開發板配置。這應該就是編譯出來的generic版不能再模擬器上運行的原因。

基於此,參照CM和6410的編譯腳本,自己寫一個編譯xidian_general.mk的腳本,不包含硬件信息,應該就可以在模擬器上運行了。編譯過程中會遇到一些錯誤,解決辦法是

1.修改full.mk或general.mk,或在xidian_general.mk中添加一些硬件信息如BOARD_HAVE_BLUETOOTH := true,

以便在不修改源碼的情況下使得編譯通過。

2.修改源碼,源碼中出現tile_to_linear_64x32_4x2_neon.s的兩個地方編譯通不過,需要進行修改。

frameworks/base/media/libstagefright下的colorconversion用6410中的進行替換,然後直接刪除device/sec_mm目錄。

終於編譯通過了,用模擬器采用默認內核時出現init: untracked pid XX exited。換用kernel-qemu-armv7內核,系統運行起來了!!!

(注:在編譯時配置的TARGET_ARCH_VARIANT=armv5te,結果用模擬器默認的arm926內核運行不起來,用armv7內核

卻能運行,SDK自帶的模擬器無論是默認的內核還是armv7內核都是可以運行的。)

但是編譯出來的系統在模擬器上鼠標用不了,使用鍵盤可以操作。解決過程:

原來一直用自定義的800*480,發現如果用默認的skin,鼠標就可以用了。
查看SDK自帶skin的內容,發現它也是可以轉為橫屏的。Android模擬器橫屏切換方法:
常規的顯示為HVGA-P(port),即分辨率為320x480如果使用橫屏(land)。如果模擬器尚未啟動,可以在Eclipse的項目

Run as=>Open Run Dialog對話框中設置,如果android模擬器已經啟動後,可以使用快捷鍵F12或Ctrl+F11來切換。

當然是用命令行僅僅啟動模擬器可以使用參數emulator.exe -skin HVGA-L 來啟動。

鼠標問題沒有完全解決,上午不知道怎麼搞好的,下午又不行了,試著重復上午的方法去解決問題,改模擬器skin,

往/data/etc裡面寫入InputReader報錯的文件pointercal,然後用屏幕校准軟件去修正pointercal均不能解決問題。
還是從源碼入手,從報錯的InputReader入手,在210板子源碼裡找InputReader,只找到InputReader.h,然後在

6410裡面找到InputReader.cpp和InputReader.h,發現210源碼相比6410缺少frameworks/base/libs下ui文件夾,從6410

裡面拷入這部分源碼進行部分編譯,有錯沒通過,從6410將ui所需要的頭文件frameworks/base/include/ui也拷到210源碼中,再進行部分編譯,終於成功了!然後make snod,運行修改後的鏡像,模擬器鼠標正常了。

Copyright © Linux教程網 All Rights Reserved