设为首页收藏本站

移动叔叔

搜索
查看: 1186|回复: 0
打印 上一主题 下一主题

[教程] 【安卓科普大作】小白一夜变高手, 老鸟的可以无视、、

[复制链接]
跳转到指定楼层
楼主
发表于 2013-5-18 16:32:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如果你是小白,请你耐心看看,收获颇丰。如果是老手,看看可以知道如何晋级为高手。

一.安卓的古往今来(了解就够啦)
        Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
(好吧,我承认这段是Copy度娘百科的,瞎看看就得了。)

二.安卓的特点(了解了解即可)
        说到安卓,当然最大的特点就是开源。也许专业名词你不懂,这没关系。如果稍微知道点电脑的同学会听过编译,编程,例如我要写一个计算1+1=?的程序,写好了代码,这个就叫源码。源码是一行行的英文字符串,这是文本不能运行,用编译器做成了exe文件之后,就可以运行了,源码到程序这过程就叫编译。但是呢,编译出来的东西,很难在回到源码,所以没有源码的人就很难修改。开源就是公布源码,大家都可以在这个基础上改,Diy,开源就是这么回事。
        那么开源有什么好处呢?就是大家都可以修改,发布修改的程序,所以安卓系统就缤纷多彩。自然就会有很多很牛的大神作出很多功能很多性能很好的优化版本,这就是开源的好处。

三.安卓手机其实就是个小电脑有许多分区(小白必读)
        就如这一节的标题,其实不光安卓,应该说智能机就是个小电脑。不过本文就只说安卓的那点事。一切要从安卓的“硬盘”说起。
        就说一台电脑,硬盘上有很多个分区,例如“C盘”是装系统的,“D盘”是存用户的东西的。安卓机也是如此,在安卓的硬盘里也有许多的分区,类似C盘D盘,不过不叫这个,每个分区都有自己的名字。下面我就要逐个说说主要的分区了。
        System:顾名思义,系统分区,就是主操作系统啦,相当于C盘。
        Data:存放你的各种应用程序,游戏,设置,存档的地方。
        Recovery:这个得多说说,不知道同学知不知道电脑上双系统?在启动电脑的时候可以选择我是进Win7呢还是进XP。比如我主要用Win7,但是有一天他坏了,我进入XP来修复我的Win7,这个“XP”就是在安卓里就是Recovery,其实就是个“小型”操作系统。
        Radio:就是基带,手机比电脑多出来的功能就是通讯嘛,你通讯的驱动就放在这里。
        Boot:内核分区,相当于电脑里面的驱动,专门放驱动的分区。
        Firmware:固件分区,相当于电脑的Bios,你说你不懂啥是Bios?你不用懂,你只需要知道,这个是最底层的驱动,直接和硬件打交道,如果他坏了,你的手机那就是100%的砖头了。别的分区坏了可以刷,相当于电脑从新装个系统罢了,这个分区坏了,管你电脑还是手机,主板要不大修,要不换一块了。
        其他分区一般情况是用不到的,在这里也就不介绍了。
        同学发问,那么SD卡是什么分区?我告诉你,这个不在硬盘里,这个是“移动硬盘”,当然有些手机所谓的内置SD卡,就是用一部分硬盘空间划出个分区当SD卡了。
        我给大家讲解了这些分区但是它们有别的称呼,在此也介绍一下。
        Userdata=Data
        Baseband(BB)=Radio
        Kernel=Boot
        BootLoader(BL)=HBOOT=SPL=Firmware
        Rec=Recovery
        至于ROM这个没有准确的概念,一般来说ROM=System+Kernel。但是也会在论坛听到,我用的XXX大神的ROM,XXXX大神的内核。到底ROM指的是System还是System+XXX+XXX,具体问题具体分析。
        
四.这个小电脑是怎样启动的?(小白必读)
        这个问题很重要,就先你按了开机键,最先启动的是BootLoader,他会对各个硬件进行参数设定,初始化,给System设置只读或者读写等等,默认情况下,如果你什么都不做,他就会启动System,然后手机就打开了。
        所谓的解锁,就在这BL里,如果BL在一起动就设置System是只读的,无论什么方法,你也别想修改这“C盘”了。解锁就是让BL在启动的时候设置各个分区可读取可写入。
        那么童鞋就问了,ROOT是怎么回事?这其实很好解释,就算你解锁了,各个分区硬件上允许你读写了,你运行的操作系统会允许你修改自己,甚至删除自己嘛?当然不会,怎么才能这样做?在系统里插入个间谍文件Su,系统以为它是系统文件,允许它“胡来”。
        那就是ROOT。
        那么怎么插入这个间谍Su呢?一般方法有两个,一个是系统有漏洞可利用,另一个就是在Recovery下刷入到系统里。
        
五.手机的第二个系统Recovery(小白必读)
        就如标题所说,他是手机的第二个系统,平时是用不上的,但是遇到特殊情况,比如主系统坏了,主系统需要升级等等,需要恢复到出厂,它就会派上用场。
        想要进入Recovery当然还得从BL说起。手机开机,BL启动,默认就直接打开主系统了,但是如果开机时你按一些键,或者特定的按键组合,BL就知道,要启动的不是主系统。不同手机按键不同,进入到的页面更不同。有些手机BL会提供个菜单,有的手机直接按对应的键,进入对应的功能。
        进入到Recovery以后,就可以对主系统进行许许多多的操作了。不过官方自带的Recovery并没有很多的功能,一般来说,官方自带的 Recovery只有以下功能,恢复出厂,其实就是把Data分区给格式化了。要不就是刷个官方的OTA补丁,干不了什么。
        真正强悍的在这里,CWM Recovery,这是什么?
        就是ClockworkMod(CWM)做的Recovery。
        他有许许多多官方Recovery没有的功能,当然最主要的就是能够刷入各种非官方的补丁,甚至是完全刷入一个完整的系统。
        那么怎么才能拥有它?怎么能用它替换掉官方的Rec?
        一般来说有两条路,一个是通过系统漏洞得到ROOT,再用ROOT刷入Rec,另一个就是解锁后用Fastboot刷入。

六.传说中的Fastboot(小白了解即可)
        这东西之前一直没提,他并不是一个分区,他只是BL的一个功能。简单来说你进入了BL,启用了Fastboot,这时候,只要你手机线接到电脑,就可以从电脑输入指令给手机,让手机执行许许多多的命令。当然你不必学习这个,更不用学习那些命令,一般来说,各位大神肯定会把命令做成一个程序,你只要点下鼠标,做些很简单的操作即可。
        上一节说到怎么刷入Rec,就是通过这Fastboot(FB)来完成的。虽然论坛有很多大神的脚本,运行下就OK,但是如果可以,我还是建议大家学学这玩意,无论系统怎么升级,这些东西是变不了的,学会了这个,才能以不变应万变。
        刷入了CWM Recovery基本上刷机已经够了,刷什么ROM?用什么内核?刷啥基带?自己慢慢选吧。

七.有个东西叫ADB(小白了解即可)
        ADB这东西和Fastboot比较相似,都是电脑连接手机,给手机下达命令的,但是ADB是基于System的,而FB是基于BL的。
        原本ADB的功能很小,也就是把个安装包发到手机上安装上,或者卸载,或者在电脑和手机间收发下。但是有了ROOT,ADB就不一样了,他可以给手机下达一些“圈圈”以外的命令,因为安卓就是基于Linux系统的嘛,所以就可以下达很多Linux命令,例如rm,cp,mv,甚至是dd。。。
        有些手机在没有Rec之前,就要靠dd命令来刷img镜像文件。
        而且通过系统漏洞获取ROOT一般也是通过ADB。
        我个人觉得,ADB的东西更偏向于Linux的学习,不多讲了。

八.如何玩转安卓系统(小白选学)
        光刷机,刷ROM,刷基带,刷内核,这还不够。给你一个强大的内核,可以给CPU调节频率,调节电压,调节模式。可以调节最大音量,有这样那样的功能,不会用还是不行啊。
        因为不同的内核调节方式不尽相同,因此不说具体操作了。
        我想CPU频率应该不用多说,大家都懂,CPU电压你又知道多少呢?一个CPU里面有许多的晶体管,其实就是一堆开关,例如断路就是0,通路就是1,由此来执行二进制命令。所以有人把CPU当电阻丝说什么功率一定降压升高电流之类的。别出来丢人了,不知道咱可以不说话,说话可以带上“个人认为”,“我猜测”,那一个个义正严词的样子,太误人子弟了。回归正题,CPU电压的意义在于,CPU电压越高,0或1的信号就会越清晰,这很好理解吧。但是升压也会有副作用,就是电子迁移效应增强,CPU放热更加严重。同样的降压会让CPU更凉快,但是信号会变模糊,CPU稳定性会降低。在这里我并不多讲CPU的工作原理,只想让大家记住调CPU的一条规律。频率和性能正相关。发热和电压正相关。当然,热的能量从哪里来?答案肯定是电池,省电还是费电大家肯定明白。
        总归:频率一定时,在稳定的前提下,电压越低越好。
        至于CPU调节模式,比较多,还是请问度娘吧。
        
九.我也要玩DIY(向高手晋级)
        刷机,刷别人的ROM,总归没有100%符合自己口味的吧,尤其是爱美化的同学,想加个电量百分比了?想让状态栏透明了?想汉化了?这时候你就需要学习反编译了。
        之前早在第二节就概述的源码,编译,是怎么回事。这里说的反编译自然很好理解,就是把已经编译成的程序在变回源码。你不是说很难回来了嘛?对的,很难不是不能,一部分东西是能回来的,这部分东西就是后缀是apk,jar,odex的文件。
        由于这一节学问太大了,我不可能手把手教会你每一个操作,我只能说的大致方向,其他自行百度。首先反编译肯定要“配置java环境”之后要用“apktool”这个程序对apk进行反编译,对得到的源码进行一定的修改,最后在用apktool编译成apk文件。最后,用“Auto-sign”软件对编译得到的程序进行签名。如果是系统程序,要求签名不能改变,那么就用winrar打开apk文件,其实apk文件就是个zip压缩包,将自己编译的内容替换掉原本apk的内容即可。如果程序是apk和odex两部分,那么需要用smali把odex反编译为smali文件,按需要修改后再用baksmali编译成classes.dex加入到apk中。如果需要将apk分离成apk+odex两部分,那么需要用dexopt-wrapper这个程序,在linux环境下分离。如果这odex是系统文件,也需要签名,使用busybox的dd命令复制原始文件签名到你Diy的文件。
        请原谅我讲的如此概略,因为实在学问太深了。
        
十.我也要发布ROM(高手晋级)
        自己汉化,自己美化,自己加入了很多功能,是不是也想给网友们一起分享呢?这时候你需要学习怎么做ROM了。其实做ROM的关键是CWM Recovery脚本的编写。你把你的ROM或者一个XXX补丁,文件与脚本用ZIP的方式打包起来签名,就可以了,具体的格式规范我还是建议你亲自拆个包看看。编写脚本才是关键,你问我如何编写脚本?首先说脚本就是一条条的命令,Recovery会按照你的命令执行操作,一般都是这样的流程。格式化命令,挂载命令,删除命令,复制命令,,设置映射,设置文件权限,刷入内核img文件,刷入基带的img文件,最后最后结束挂载。具体的英文命令是什么请去CWM网上查,或者拆个别人的包,看看就全都清楚了,这节我也不会说太多,因为内容实在太多。请大家善用百度谷歌,我学的这些也全是百度谷歌来的。
        
十一.Linux下编译开发(你就是高手)
        一般Linux环境,多用的操作系统是Ubuntu,我强烈推荐大家用Ubuntu-10.04.4-desktop-amd64这个版本,Ubuntu并不是版本越高越好。我当年用11点几的最新版本,编译安卓4.0,结果是一堆的错误,根本make不出东西。另外编译源码最好用64位操作系统,32位下编译也是一堆错误。
        好啦,内容没说先说一堆注意事项。下面正式介绍编译。
        我们说了开源,这里就是开源的真正意义所在了,例如谷歌发布的JB4.1,现在源码还未公布,假如公布了,你首先要下载源码,一般来说好几个G是肯定的。如果是亲儿子,拿来用就好,如果是非谷歌的手机,还要去下载这款手机的源码,然后将这部分源码覆盖到下载的源码上。之后根据需要添加删除修改代码。最后执行编译得到系统的,内核的,等等img文件,最后Fastboot刷入img到手机。如果需要的话,解压img做成ZIP刷机包,然后REC下刷。
        编译安卓代码需要很多的软件组件,如果编译内核还需要交叉编译器。我只能说,你现在所做的事情和谷歌工程师所做的事情是一样的所以我不可能说的面面俱到,说真的,我也只不过能做到拿来源码,很简单的修改下,Copy点大神写的功能添加进来编译到头了。
您需要登录后才可以回帖 登录 | 注册

© 2008-2024 移动叔叔. 版权所有,专业的网络售后平台 ( 闽ICP备18006692号-3 )

商务合作点击这里给我发消息|Email:service@mobileuncle.com|手机版|移动叔叔     

GMT+8, 2024-11-26 02:56 , Processed in 0.264014 second(s), 17 queries , Gzip On, Memcache On.

返回顶部