Re: [問題] Android 核心、源碼、系統?

看板AndroidDev作者 (翊玥)時間12年前 (2013/12/30 12:20), 編輯推噓3(3017)
留言20則, 4人參與, 最新討論串3/3 (看更多)
謝謝aimw0202大詳細的回覆:) 所以AOSP最底層的,Kernel是各家廠商再客制化的東西 我以為是反過來:P SD卡的部份不是要使用SD卡,那個我還不太會描述就先算了^^; 推荐的那本書網路上好像都沒得買了,我會再去找找看其他通路,很謝謝推荐! 底下補充一下我在做什麼,順便請教一下編譯source code的問題: 我編譯kernel比如是因為要開啟rndis module;想要編譯source code比如目前是想使用 一些分析工具來改進我的程式碼效能。 分析工具上網看到有oprofile和perf。 oprofile也是在kernel裡打開,可是oprofile所產生的結果要在PC上打指令觀看(如果 我理解沒錯誤的話),只是我不曉得如何能讓PC使用那些opreport指令,看過一些文件沒 嘗試成功。又看到說ubuntu 12.04已經不支援oprofile,所以我就改嘗試perf。 我看到perf要使用的話似乎是必須透過build source code來產生一些驅動檔,再push到 device上使用。只是以往build source code都會卡在某些步驟失敗,這次又一樣卡住了 ..@@ 教導使用perf的文件: http://lxr.free-electrons.com/source/tools/perf/Documentation/android.txt 在I-(b)-2這段 ./build/tools/build-ndk-sysroot.sh --abi=arm 出現錯誤 ANDROID_PRODUCT_OUT is not defined in your environment. Aborting 所以也沒辦法往下make了...請教一下這個錯誤怎麼解決呢?隨便給路徑可以嗎? 謝謝回覆:) ※ 引述《aimw0202 (等待那天)》之銘言: ※ 引述《hyhjcjy (翊玥)》之銘言: : 各位前輩們好, : 在學習android的時候有些搞不清楚的地方:最近常常在需要一些功能的時候會遇到 : 需要編譯kernel、編譯source code的狀況,不知道android kernel source和 : android source code有什麼用途差別?為什麼有時候要編譯kernel,有時候要編譯 : source code? 所謂的Kernel,泛指在framework之下階層,大部分是在最底BootLoader+BSP Driver那塊 如果你是單純AP開發者,Kernel基本上不太需要去編譯。 一隻出貨的手機,Kernel已經包含了原生Google Source Code(ex 4.x)+Vendor(Qualcomm 、Broadcom、MTK...),Vendor商會處理BT、Wifi、Camera等等driver。 當一隻手機driver出問題的時候 才需要從Kernel編譯image,在編譯到上層framework+ AP。如果driver沒問題,像一般app開發者,其實只須build AP層,像Eclipse Build apk : 我們常說的手機是android x.x版的系統,x.x就是source code的版本號嗎? 是的,我們可以統稱為android 4.x版本的source code : 我看到網路上有列出android x.x是基於linux y.y kernel,那kernel版本跟 : source code 版本有一定要對應的關係嗎?我可以把某個android版本換kernel或是把 : 某個kernel上使用的android版本換掉嗎? 詳細對應關係,我想妳能要自己找。 當然可以,只是穩定性問題,不過這種問題通常是vendor商在傷腦筋 不過我想妳不需要特地傷腦筋,除非你在聯發科XD : 我想應該可以?只是不知道我編譯kernel和編譯source code,又是產生什麼去替換什麼? : (因為我目前編譯source code都沒成功過,不知道會產生什麼) : 我使用學習工具的是安裝了Android 2.x OS的開發版,在SD卡中有一些系統相關的檔案和 : 資料夾以及一些boot用的image(uImage),我知道某些功能可以經由編譯kernel所產生的 : uImage檔,替換原本的uImage檔,就能啟動某些功能。但不知道編譯source code的話是? : 還有,在SD卡中那些系統相關的檔案和資料夾,也不是source code也不是kernel code, : 那這些東西又是從哪來的呢?如果壞掉了,又要從哪裡下載呢? 我這樣說吧,MTK拿google kernel的source code,tune出她們vendor商的kernel source code,當然Qualcomm等等也是如此,編譯出來的image當然只能是MTK晶片的手機才會正常 操作。 你使用google原生的boot image,只是個殼,本身它的wifi BlueTooth與Camera等是沒有 Driver的,當然不能正常運作。SD卡我不知道是不是也是類似如此,要請這塊的專家補充。 只是我搞不懂 你一直想改kernel build image做什麼XD,因為這是vendor商在做的工作 SD卡的資料大部分都放在/mnt/sdcard/ 當然你可以透過framework層改寫他檔案產出路徑 例如,我改寫framwork讓它出現在/mnt/sdcard2/下,但是權限問題可能要在kernel改 (權限問題我忘了XD rwx-rwx-rwx之類的) 我相信sd卡應該有Driver,不過是goole在own還是vendor再own不清楚 : 我可能有點初學,也不確定這樣問對不對,所以上網也好像關鍵字下不對,找不到可以解 : 答這些迷惑的資訊... : 希望前輩們可以提供解答或是可以閱讀什麼資料來釐清這些觀念! : 謝謝回覆哦:) http://www.books.com.tw/products/0010470576 買下去就對了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 101.10.109.199

12/27 20:30,
推一本書: embedded android 歐萊禮今年出的 老實說沒
12/27 20:30

12/27 20:30,
寫的很完整 但非常適合當敲門磚 然後也絕對不要看中
12/27 20:30

12/27 20:30,
文版 會吐血
12/27 20:30

12/27 22:01,
還不錯 之前有翻過~
12/27 22:01

12/28 22:38,
這書很棒,當初還是門外漢時就讀這本
12/28 22:38
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.61.240.28

12/30 17:21, , 1F
1.建議先看自己編譯的環境是否已經全部切到root
12/30 17:21, 1F

12/30 17:22, , 2F
2.找./build/tools/build-ndk-sysroot.sh 看它裡面定義了
12/30 17:22, 2F

12/30 17:23, , 3F
什麼
12/30 17:23, 3F

12/30 17:23, , 4F
3. 看起來問題是環境變數 沒有設定定義好
12/30 17:23, 4F

12/30 17:24, , 5F
檢查一下arm的環境下編譯 或者嘗試在x86環境下編譯(說不
12/30 17:24, 5F

12/30 17:24, , 6F
定可以編譯成功)
12/30 17:24, 6F

12/30 17:47, , 7F
http://ppt.cc/J09G 注意118行 ,這方面我不是tool高手
12/30 17:47, 7F

12/30 17:48, , 8F
請tool高手出來解答囉 ~
12/30 17:48, 8F

12/30 19:24, , 9F
那個錯誤應該是你少做 lunch 的動作
12/30 19:24, 9F
謝謝兩位大大~ 我有做lunch的動作^^ 我覺得應該是branch的問題。文件上面說要用master,我為了配合開發板使用了別的 branch,似乎檔案不太完整所以build-ndk-sysroot.sh的設置會失敗。 我重新下載master之後那行指令就可以過了! 後面make的時候還是有遇到一點問題,同下面連結(含解決方式) http://ppt.cc/mhzB 是java版本的問題,照著 http://ppt.cc/E1OF 處理後,目前看起來在順利make中, 期待結果,不知道用不同branch編出來的是不是都適用:) 話說我也對java版本很疑惑啊,我是按照Android官網 http://ppt.cc/-9sP 安裝sun-java6-jdk,卻沒辦法直接用apt-get install sun-java6-jdk, 還是透過這篇 http://ppt.cc/jCSS 第2段安裝Java的方式才成功。雖然裝了 sun-java6-jdk,卻有上面遇到的問題,還要手動去java官網找檔案,真是好迷惑 這一堆java :O ※ 編輯: hyhjcjy 來自: 61.61.240.28 (12/31 11:37)

01/02 09:59, , 10F
Java在 Ubuntu官網下載不到,是甲骨文不釋放的問題
01/02 09:59, 10F

01/02 10:00, , 11F
自從他們拿到 Java的智慧財產權之後,就一直干擾 Java發展
01/02 10:00, 11F

01/03 10:26, , 12F
嗯嗯,謝謝Assyla大的解釋:)
01/03 10:26, 12F

01/03 10:27, , 13F
我順利將source code make完了!雖然perf還是不能用,但有
01/03 10:27, 13F

01/03 10:28, , 14F
讓我自己比較了解一些我本來的疑惑^^
01/03 10:28, 14F

01/03 14:00, , 15F
你要編出來的東西可以用,應該是要根據你的裝置目前用的
01/03 14:00, 15F

01/03 14:00, , 16F
版本選擇 branch 來編
01/03 14:00, 16F

01/03 14:02, , 17F
因為你沒有說明你的裝置是什麼,如果你用的裝置不在
01/03 14:02, 17F

01/03 14:03, , 18F
AOSP 的 source tree 裡而你 lunch 選擇的裝置設定不相
01/03 14:03, 18F

01/03 14:03, , 19F
容編出來的東西應該是完全沒用的
01/03 14:03, 19F

01/07 17:45, , 20F
Thank you:)
01/07 17:45, 20F
文章代碼(AID): #1ImFIRTx (AndroidDev)
文章代碼(AID): #1ImFIRTx (AndroidDev)