作者hyhjcjy (翊玥)
站内AndroidDev
标题Re: [问题] Android 核心、源码、系统?
时间Mon Dec 30 12:20:39 2013
谢谢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
1F:推 mshockwave:推一本书: embedded android 欧莱礼今年出的 老实说没 12/27 20:30
2F:→ mshockwave:写的很完整 但非常适合当敲门砖 然後也绝对不要看中 12/27 20:30
3F:→ mshockwave:文版 会吐血 12/27 20:30
4F:→ aimw0202:还不错 之前有翻过~ 12/27 22:01
5F:推 leveler:这书很棒,当初还是门外汉时就读这本 12/28 22:38
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.61.240.28
6F:推 aimw0202:1.建议先看自己编译的环境是否已经全部切到root 12/30 17:21
7F:→ aimw0202:2.找./build/tools/build-ndk-sysroot.sh 看它里面定义了 12/30 17:22
8F:→ aimw0202:什麽 12/30 17:23
9F:→ aimw0202:3. 看起来问题是环境变数 没有设定定义好 12/30 17:23
10F:→ aimw0202:检查一下arm的环境下编译 或者尝试在x86环境下编译(说不 12/30 17:24
11F:→ aimw0202:定可以编译成功) 12/30 17:24
13F:→ aimw0202:请tool高手出来解答罗 ~ 12/30 17:48
14F:→ dreamcwli:那个错误应该是你少做 lunch 的动作 12/30 19:24
谢谢两位大大~ 我有做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)
15F:推 Assyla:Java在 Ubuntu官网下载不到,是甲骨文不释放的问题 01/02 09:59
16F:→ Assyla:自从他们拿到 Java的智慧财产权之後,就一直干扰 Java发展 01/02 10:00
17F:→ hyhjcjy:嗯嗯,谢谢Assyla大的解释:) 01/03 10:26
18F:→ hyhjcjy:我顺利将source code make完了!虽然perf还是不能用,但有 01/03 10:27
19F:→ hyhjcjy:让我自己比较了解一些我本来的疑惑^^ 01/03 10:28
20F:→ dreamcwli:你要编出来的东西可以用,应该是要根据你的装置目前用的 01/03 14:00
21F:→ dreamcwli:版本选择 branch 来编 01/03 14:00
22F:→ dreamcwli:因为你没有说明你的装置是什麽,如果你用的装置不在 01/03 14:02
23F:→ dreamcwli:AOSP 的 source tree 里而你 lunch 选择的装置设定不相 01/03 14:03
24F:→ dreamcwli:容编出来的东西应该是完全没用的 01/03 14:03
25F:→ hyhjcjy:Thank you:) 01/07 17:45