|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
学习python,无论你是打算拿他当主要开发语言,还是当辅助开发语言,你都应该学习他,因为有些时间我们耗不起。
Android是基于Linux内核的,关于喜好研讨底层的伴侣来讲,天然不会放过弄分明Linux层面上一些器材的时机。固然,终极目标仍是要弄分明Linux是怎样和下层lib和假造机分离的,可是这得等Google完整开源Android以后了。良多关于Linux运转的细节,都能够经由过程adb的shell来看到。
起首用emulatorconsole来启动摹拟器并进进shell界面,试一试,发明固然良多命令不克不及用,好比find,可是ls之类的基础操纵仍是能够的。然后echo$PATH察看一下有哪些详细的可用使用程序,发明可用的都会合在/sbin,/system/sbin,/system/bin中。
看看/sbin
-rwxr-xr-xrootroot2287761970-01-0100:00recovery
-rwxr-xr-xrootroot1028321970-01-0100:00adbd
adbd不必说,应当是保卫程序,用于和你内部的adb通讯的,这点从前面对历程的检察也能推想出来。至于recovery,应当是某种修复程序,可是今朝还不克不及断定其详细用法。并且这个目次下的程序,应当都是体系本身依据立即情形挪用的,不会让用户亲身挪用。
再往/system目次下,发明没有sbin目次,有bin目次,底下有良多使用程序,除toolbox供应的经常使用Linux命令路程序外,就是Google本人的用于Android开辟的程序。总的来讲,Android自带的toolbox仍是对照大略的,假如你不喜好这类操纵起来束手束脚的感到,不妨,经由过程adbpush的共同,我们能够把busybox安装到Android平台上,这是后话,这里先不谈这个。
持续,用ps看看历程:
root10252164c00822400000ab0cS/init
root2000c0048eac00000000Skthreadd
root3200c003acf000000000Sksoftirqd/0
root4200c0045e5c00000000Sevents/0
root5200c0045e5c00000000Skhelper
root8200c0045e5c00000000Ssuspend/0
root33200c0045e5c00000000Skblockd/0
root36200c0045e5c00000000Scqueue/0
root38200c0150c4400000000Skseriod
root74200c005bed000000000Spdflush
root75200c005bed000000000Spdflush
root76200c005f88000000000Skswapd0
root77200c0045e5c00000000Saio/0
root199200c014e2f400000000Smtdblockd
root215200c0045e5c00000000Skmmcd
root229200c0045e5c00000000Srpciod/0
root44614416216ffffffff0000ceb4S/sbin/adbd
root44712816284ffffffffafe08b9cS/system/bin/usbd
root4481636212c017c114afe08e9cS/system/bin/debuggerd
root449112576580ffffffffafe08b9cS/system/bin/rild
root45015657614776c01dc388afe083dcSzygote
root4511185282064ffffffffafe0861cS/system/bin/runtime
bluetooth45211200756c0082240afe0947cS/system/bin/dbus-daemon
root46145010779219320ffffffffafe0861CSSystem_server
app_45024507429214436ffffffffafe09604Scom.google.android.home
phone5034507483215044ffffffffafe09604Scom.google.android.phone
app_05314507462014400ffffffffafe09604Scom.google.process.content
app_56084507378011760ffffffffafe09604Slk.test
app_76624508201213124ffffffffafe09604Scom.google.android.lunarlander
app_08094507420415780ffffffffafe09604Scom.google.android.maps
app_68284507684414600ffffffffafe09604Scom.google.android.samples
system8734507646413028ffffffffafe09604Scom.google.android.development
root971446720292c00386a4afe092acS/system/bin/sh
root273697192830800000000afe083dcRps
一样,有各类线程,体系本人挪用的程序,和用户本人的程序历程,好比lk.test和com.google.android.lunarlander是我在工程中运转的,com.google.android.maps,com.google.android.phone这类就是Android摹拟器运转时你瞥见的那些程序。成心思的是,从历程中有/system/bin/usbd来看,仿佛客户真个调试都是经由过程USB的,固然不是如今拉,如今你只是在用摹拟器罢了。恩,今后真正配套硬件出来了,USB调试器会很贵么?嘿嘿。
最初看看文件体系,mount一下:
rootfs/rootfsrw00
/dev/pts/dev/ptsdevptsrw00
/proc/procprocrw00
/sys/syssysfsrw00
/dev/block/mtdblock0/systemyaffs2rw,nodev,noatime,nodiratime00
/dev/block/mtdblock1/datayaffs2rw,nodev,noatime,nodiratime00
没甚么有新意的,和台式机对照一下,一个就是没有假造内存文件体系,根文件体系间接就是摹拟器从SDK安装目次下的/tools/lib/images/ramdisk.img加载的。而体系所用的是yaffs2文件体系,system和data分离都是64MB年夜,并且都用了快要一半了。详细体系的映像是SDK安装目次下的tools/lib/image/system.img。
从下面的剖析看,这个Linux仍是对照一般的。另有一个成心思的话题,就是今朝安装软件,大概说是Package的体例在developergroup上遭到很多人的斥责,次要是Google今朝对Android的程序安装没有尺度的Install程序,也没有一个堆栈申明,如今一些小程序,能够经由过程剖析Android的文件变更失掉大抵的安装体例,可是今后有甚么年夜型工程的话,最好仍是定一个对照尺度的安装体例划定规矩,不克不及老依附Eclipse来帮我们弄吧,呵呵。
经由过程上面的步骤,能够大抵剖析出今朝的安装形式
安装软件前:
1.emulator-wipe-data
2.adbpushbusybox./
3.adbshell./busyboxtar-cf/tmp/data.tar/data
4.adbpull/tmp/data.tar.
5.mkdiroriginal
6.cdoriginal
7.tar-xf../data.tar
安装软件后:
1.adbshell./busyboxtar-cf/tmp/data.tar/data
2.adbpull/tmp/data.tar.
3.mkdirafter_install
4.cdafter_install
5.tar-xf../data.tar
详细的区分,今朝来看,就是/data/app和data/data下多了两个相干文件,同时在/data/system/packages.xml中增添了安装的程序信息。仿佛菜单也是从这个文件中失掉是不是新安装程序,和怎样显现相干信息好比称号甚么的
</p>
当你经过一段时间的学习后就应该扩充自己的知识,多学习linux命令,但是不要在初学阶段就系统的学习linux命令。 |
|