搜档网
当前位置:搜档网 › android大扫盲之SurfaceView SurfaceHolder你hold住了吗

android大扫盲之SurfaceView SurfaceHolder你hold住了吗

android大扫盲之SurfaceView SurfaceHolder你hold住了吗

https://www.sodocs.net/doc/7e2737602.html,

android大扫盲之SurfaceView,SurfaceHol der你hol d住了吗

最近接触到了SurfaceView,SurfaceHol der,SurfaceHol der.CallBack,一直不求其解,现在来粗浅认识一下它们。

先看一下官方的定义:

1.SurfaceView

SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。你可以控制这个Surface的格式和尺寸。Surfaceview控制这个Surface的绘制位置。

surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。surfaceview提供了一个可见区域,只有在这个可见区域内的surface部分内容才可见,可见区域外的部分不可见。surface的排版显示受到视图层级关系的影响,它的兄弟视图结点会在顶端显示。这意味者surface的内容会被它的兄弟视图遮挡,这一特性可以用来放置遮盖物(overlays)(例如,文本和按钮等控件)。注意,如果surface上面有透明控件,那么它的每次变化都会引起框架重新计算它和顶层控件的透明效果,这会影响性能。

你可以通过SurfaceHol der接口访问这个Surface.用getHol der()方法可以得到这个接口。

surfaceview变得可见时,surface被创建;surfaceview隐藏前,surface被销毁。这样能节省资源。如果你要查看surface被创建和销毁的时机,可以重载surfaceCreated(SurfaceHol der)和surfaceDestroyed(SurfaceHol der)。

surfaceview的核心在于提供了两个线程:UI线程和渲染线程。这里应注意:

1> 所有SurfaceView和SurfaceHol der.Callback的方法都应该在UI线程里调用,一般来说就是应用程序主线程。渲染线程所要访问的各种变量应该作同步处理。

2> 由于surface可能被销毁,它只在SurfaceHol der.Callback.surfaceCreated()和

SurfaceHol der.Callback.surfaceDestroyed()之间有效,所以要确保渲染线程访问的是合法有效的surface。

2.SurfaceHol der

显示一个surface的抽象接口,使你可以控制surface的大小和格式,以及在surface上编辑像素,和监视surace的改变。这个接口通常通过SurfaceView类实现。

SurfaceHol der.Callback 用户可以实现此接口接收surface变化的消息。当用在一个SurfaceView 中时,它只在SurfaceHol der.Callback.surfaceCreated()和SurfaceHol der.Callback.surfaceDestroyed()之间有效。设置Callback的方法是SurfaceHol der.addCallback.

看完官方的介绍,明白了许多,surfaceView带z-ord er的,还可以在上面操作像素有木有,还有单独的渲染线程哦亲。如果做游戏开发,当然选SurfaceView了。

来源:清源教育

android系统刷机关于BIN的解释及方式

特别介绍一下关于刷机的方式。这或许对很多脑子里一塌糊涂的朋友有用。必看 1、官方一件升级。(主要作为手机死了的挽救措施。)需要之后自己root,刷rec和刷rom 2、先root,然后刷rec,然后找到rom放进sd卡,然后进入rec开始卡刷rom。Rom一般自带root。(((((特别注明,我上面编辑的帖子就是这种方法。root-->刷rec-->刷rom)))))))) 3、刷bin 或者迷你bin,然后刷卡里准备好的rom。迷你bin一般带有刷好的rec。 4、直接刷一步到位的bin包,里面包含有rom。无需root和刷rec。 教学完毕 以上4个方法为目前论坛上五花八门的教程帖子的完全总结。。不外乎就这些方法了。。。换言之,我们想给自己的手机换个系统总共可以采取以下方式。 (一)下载官方升级工具直接升级系统。此方法root 刷bin 刷rec 刷rom 一步操作完成。缺点:安装升级工具的驱动比较麻烦,系统只能采用官方的。 (二)保持你手机bin版本不变,采用root-->刷rec-->刷rom的形式操作。此时你下载的rom包需要与你手机bin版本一致。缺点:论坛上属于你手机bin版本的rom很少,很难找,有些不能用。 (三)改变手机bin版本,采用root(通常此步可以省略,因为下一步的刷bin本身是具备root功能的,当然已经root的也没有什么影响)-->刷bin(或者刷mini bin)-->刷rec(通常此步也不需要,因为bin包一般自带rec)-->刷rom的形式操作。缺点:刷b in有变砖风险优点:可以任意选择bin版本,即是说,假如你要安装一个与自己手机bin版本不一致的rom包,只需要先刷一个对应的bin即可,系统选择很广。 (四)刷一步到位的bin包。不需要root,不需要刷rec 和刷rom。(形式类似官方升级,操作也基本一致,即是下载升级工具,装升级工具驱动,卸载电池手机卡后点击升级工具按提示操作即可。) 以上1,3,4方法都属于刷bin范畴。刷bin方法可参考下面步骤。(刷bin有变砖风险,以下步骤不一定完全绝对,我在此发出来,仅仅是为了大致说明一下思路,所以概不承担任何责任。另外由于下面安装驱动的方法来源于百度,原版在百度上图片不能显示,故在此不提供图片,希望理解) 下载各位大大或者官方升级工具,然后解压到电脑上一个方便找到的地方,其中会有一个驱动文件夹。 下载bin包(mini bin包和一步到位bin包类似)解压存放到电脑上相对容易找到的地方,(刷bin和mini bin 请注意提前下载rom到手机内存卡,一步到位bin不需要此步操作)

分析Android 开机启动慢的原因

开机启动花了40多秒,正常开机只需要28秒就能开机起来。 内核的启动我没有去分析,另一个同事分析的。我主要是分析从SystemServer启来到开机动画结束显示解锁界面的这段时间,也就是开机动画的第三个动画开始到结束这段时间,这是个比较耗时阶段,一般都在17秒左右(见过牛B的手机,只需5秒)。 SystemServer分两步执行:init1和init2。init1主要是初始化native的服务,代码在sy stem_init.cpp的system_init,初始化了SurfaceFlinger和SensorService这两个native的服务。init2启动的是java的服务,比如ActivityManagerService、WindowManagerService、PackageManagerService等,在这个过程中PackageManagerService用的时间最长,因为PackageManagerService会去扫描特定目录下的jar包和apk文件。 在开机时间需要40多秒的时,从Log上可以看到,从SurfaceFlinger初始化到动画结束,要27秒左右的时间,即从SurfaceFlinger::init的LOGI("SurfaceFlinger is starting")这句Log到void SurfaceFlinger::bootFinished()的LOGI("Boot is finished (%ld ms)", long(ns 2ms(duration)) ),需要27秒左右的时间,这显然是太长了,但到底是慢在哪了呢?应该在个中间的点,二分一下,于是想到了以启动服务前后作为分隔:是服务启动慢了,还是在服务启动后的这段时间慢?以ActivityManagerService的Slog.i(TAG, "System now ready")的这句Log为分割点,对比了一下,在从SurfaceFlinger is starting到System now read y多了7秒左右的时间,这说明SystemServer在init1和init2过程中启动慢了,通过排查,发现在init1启动的时候,花了7秒多的时间,也就是system_init的LOGI("Entered system _init()")到LOGI("System server: starting Android runtime.\n")这段时间用了7秒多,而正常情况是400毫秒便可以初始化完,通过添加Log看到,在SensorService启动时,用了比较长的时间。 不断的添加Log发现,在启动SensorService时候,关闭设备文件变慢了,每次关闭一个/dev/input/下的设备文件需要100ms左右,而SensorService有60~70次的关闭文件,大概有7s左右的时间。 调用流程是: frameworks/base/cmds/system_server/library/system_init.cpp: system_init->SensorServi ce::instantiate frameworks/native/services/sensorservice/SensorService.cpp: void SensorService::onFi rstRef()->SensorDevice& dev(SensorDevice::getInstance()) hardware/libsensors/SensorDevice.cpp: SensorDevice::SensorDevice()->sensors_open hardware/libsensors/sensors.cpp: open_sensors->sensors_poll_context_t sensors_poll_context_t执行打开每个传感器设备时,遍历/dev/input/目录下的设备文件,以匹配当前需要打开的设备,遍历文件是在 hardware/libsensors/SensorBase.cpp的openInput下实现,如果打开的设备文件不是正在打开的设备文件,会执行下面语句的else部分: if (!strcmp(name, inputName)) { strcpy(input_name, filename); break;

android2.2刷机教程

Htc desire 制作金卡、root、升级2.2 系统的一条龙教程 声明: 1、此贴非本人原创,而是综合许多作者成果并结合自己升级过程中解决所遇到问题经验而成的(本人已成功升级),希望对想升级2.2的机友有帮助。 2、让我们对那些辛勤付出的原创高手们表示崇高的敬意和衷心的感谢。 3、刷机有风险,此贴仅供学习交流之用,不提倡按此刷机,刷机过程有很多意外因素,如按此教程刷机出现不良后果自负。 入门: 1、请先安装ANDROID驱动,可以用通用驱动或HTC Sync(内含驱动的)。保证你的手机能被电脑识别。下载地址:https://www.sodocs.net/doc/7e2737602.html,/hk-tc/SupportDownload.aspx?p_id= 312&cat=3&dl_id=933 2、请使用安装了WINDOWS XP的电脑(其他系统我没试过,不知道怎么用。) 3、有个金士顿、SANDISK的原装TF卡。

4、网络连接,有些要上网找资源、下载软件的。 5、耐心加细心。 正式开始 第一步:制作金卡。 关于什么是金卡,坛子里有很多介绍,希望朋友们善用搜索引擎,在搜索引擎里搜索一下“制作金卡教程” 等即可查到。我这里简单地解释一下流程,其中某些步骤比网上的教程要简单,容易多了。 1、将TF卡插入你的G7中,注意,TF卡最好为金士顿、SANDISK等名牌非假货TF卡。 2、在Market里下载Estrongs或类似的资源管理器,以文本形式打开/sys/class/mmc_host/mmc*/mmc*:*/cid 文件。这个* 可能是数字或字母(网上教程说这里都是1或0,比如/sys/class/mmc_host/mmc0/mmc0:1/cid,这个是不准确的),这个文件打开来是一个32位的字符,中英混合的,记下这一串字符。(这个文件可能不好找,大家多找找)找到以后就把卡拔下,用读卡器插入电脑中,或者直接用手机以磁盘管理器模式连接电脑。并拔下电脑上除了你的TF卡以外的其他U盘、移动硬盘,方便后面的辨认。

Android 开机启动流程

Android的开机流程 1. 系统引导bootloader 1) 源码:bootable/bootloader/* 2) 说明:加电后,CPU将先执行bootloader程序,此处有三种选择 a) 开机按Camera+Power启动到fastboot,即命令或SD卡烧写模式,不加载内核及文件系统,此处可以进行工厂模式的烧写 b) 开机按Home+Power启动到recovery模式,加载recovery.img,recovery.i mg包含内核,基本的文件系统,用于工程模式的烧写 c) 开机按Power,正常启动系统,加载boot.img,boot.img包含内核,基本文件系统,用于正常启动手机(以下只分析正常启动的情况) 2. 内核kernel 1) 源码:kernel/* 2) 说明:kernel由bootloader加载 3. 文件系统及应用init 1) 源码:system/core/init/* 2) 配置文件:system/rootdir/init.rc, 3) 说明:init是一个由内核启动的用户级进程,它按照init.rc中的设置执行:启动服务(这里的服务指linux底层服务,如adbd提供adb支持,vold提供SD卡挂载等),执行命令和按其中的配置语句执行相应功能 4. 重要的后台程序zygote 1)源码:frameworks/base/cmds/app_main.cpp等 2) 说明:zygote是一个在init.rc中被指定启动的服务,该服务对应的命令是/system/bin/app_process a)建立Java Runtime,建立虚拟机 b) 建立Socket接收ActivityManangerService的请求,用于Fork应用程序 c) 启动System Server 5. 系统服务system server 1)源码:frameworks/base/services/java/com/android/server/SystemServer.jav a 2) 说明:被zygote启动,通过SystemManager管理android的服务(这里的服务指frameworks/base/services下的服务,如卫星定位服务,剪切板服务等) 6. 桌面launcher 1)源码:ActivityManagerService.java为入口,packages/apps/launcher*实现 2) 说明:系统启动成功后SystemServer使用xxx.systemReady()通知各个服务,系统已经就绪,桌面程序Home就是在ActivityManagerService.systemReady()通知的过程中建立的,最终调用()启launcher 7. 解锁 1) 源码: frameworks/policies/base/phone/com/android/internal/policy/impl/*lock* 2) 说明:系统启动成功后SystemServer调用wm.systemReady()通知WindowManagerService,进而调用PhoneWindowManager,最终通过LockPatternKeyguardView显示解锁界面,跟踪代码可以看到解锁界面并不是一个Activity,这是只是向特定层上绘图,其代码了存放在特殊的位置

Android系统(安卓)手机刷机前需要知道的一些基础知识

一、关于Root 1、什么是“root”? “Root”权限相当于电脑的管理员权限,“Root”后用户可以完全权限访问Linux内核:“Root用户”可以编辑修改系统内的任何东西。出于安全考虑,“普通用户”没有该完全访问权限。 root你的手机之后,你就可以读写未root时你无法访问的手机内部核心区块。 当然,是否root完全取决你自己。普通手机用户不root也可以很好的使用自己的手机。 2、为何要“root”我的手机? 最主要的原因是刷第三方ROM(相当于重装电脑的操作系统)。另外,有ROOT权限后就可以运行一些需要root的软件。 Root后,你可以做的事: a)运行更多的Linux命令(android ADB)和超级用户权限。 b)可以使用许多需要root权限的软件(例如,钛备份,Root Explorer等)。 c)更改某些重要的核心系统设置。比如,关闭官方 Rom的安全校验以使我们可以刷写第三方固件,或者运行某些有趣的调节程序比如说超频,再或者还可以让我们安装核心recovery程序。 3、root安全吗? 是的。如果你胆大心细,按照教程来做,不会发生什么蛋疼的事。 4、root后会删除我的个人资料吗? 不会。root仅仅是改变系统权限而已。 5、root会使我的保修失效吗? 退一万步说,你可以unroot你的手机并恢复出厂设置,来假装什么事也没发生过。 6、root过程是可逆的吗? 是的。只要你愿意完全可以unroot你的手机。 二、关于S-OFF和刷机 1、“S-OFF”是什么?“S-ON”和“S-OFF”有什么区别?我为何需要“S-OFF”? 每一部手机缺省状态下都是“S-ON”。为了获取完全的写入权限(例如刷自制固件,装自制recovery工具),需要转换为“S-OFF”。 通常手机都是处于“S-ON”(Security ON)状态,此时手机“/system”和“/recovery”分区无法被读写。最直接的表现就是如果用RE管理器等高权限文件管理器删除“/system”文件夹下的程序,重启后程序又会出现(这也好多网友说获得root后还是删除不了系统自带软件的原因);另外无法修改开机第一屏画面。 S-OFF不同于root:S-OFF可以让你通过Bootloader里的Fastboot或者自制recovery(多数人用的都是clockwork)刷写自制固件。 2、如何“S-OFF”? 目前有两种S-OFF的方法: a)通过安装工程模式的hBoot来S-OFF。即所谓的软解。 b)通过某些设备,例如白卡来S-OFF。即所谓白卡解锁。 软解的手机进入Bootloader后第一行的末尾显示的是:ENG S-OFF,白卡解的手机则是:SHIP S-OFF。ENG意为engineering即工程模式,SHIP即意为原厂发布的。3、如何改回“S-ON”? 因某些原因(送去保修等)想要恢复S-ON的话,需要下载对应你手机版本的HTC 官方刷写程序RUU刷回原厂固件。这样S-ON就回来了。

基于MT6752的 android 系统启动流程分析报告

基于MT6752的Android系统启动流程分析报告 1、Bootloader引导 (2) 2、Linux内核启动 (23) 3、Android系统启动 (23) 报告人: 日期:2016.09.03

对于Android整个启动过程来说,基本可以划分成三个阶段:Bootloader引导、Linux kernel启动、Android启动。但根据芯片架构和平台的不同,在启动的Bootloader阶段会有所差异。 本文以MTK的MT6752平台为例,分析一下基于该平台的Android系统启动流程。 1、Bootloader引导 1.1、Bootloader基本介绍 BootLoader是在操作系统运行之前运行的一段程序,它可以将系统的软硬件环境带到一个合适状态,为运行操作系统做好准备,目的就是引导linux操作系统及Android框架(framework)。 它的主要功能包括设置处理器和内存的频率、调试信息端口、可引导的存储设备等等。在可执行环境创建好之后,接下来把software装载到内存并执行。除了装载software,一个外部工具也能和bootloader握手(handshake),可指示设备进入不同的操作模式,比如USB下载模式和META模式。就算没有外部工具的握手,通过外部任何组合或是客户自定义按键,bootloader也能够进入这些模式。 由于不同处理器芯片厂商对arm core的封装差异比较大,所以不同的arm处理器,对于上电引导都是由特定处理器芯片厂商自己开发的程序,这个上电引导程序通常比较简单,会初始化硬件,提供下载模式等,然后才会加载通常的bootloader。 下面是几个arm平台的bootloader方案: marvell(pxa935) : bootROM + OBM + BLOB informax(im9815) : bootROM + barbox + U-boot mediatek(mt6517) : bootROM + pre-loader + U-boot broadcom(bcm2157) : bootROM + boot1/boot2 + U-boot 而对MT6752平台,MTK对bootloader引导方案又进行了调整,它将bootloader分为以下两个部分: (1) 第1部分bootloader,是MTK内部(in-house)的pre-loader,这部分依赖平台。 (2) 第2部分bootloader,是LK(little kernel的缩写,作用同常见的u-boot差不多),这部分依赖操作系统,负责引导linux操作系统和Android框架。 1.2、bootloader的工作流程 1.2.1 bootloader正常的启动流程 先来看启动流程图:

Android手机刷机变砖后无法开机的修复方法

对于广大Android刷友来说,最怕遇到的就是传说中的手机变板砖,无法启动的情况。在Android手机刷机的时候,难免会遇到刷机失败的时候,下面给大家说下如何修复能够让你的手机重获新生。1. 在PC上安装配置Android SDK Android手机刷机失败后手机变砖无法在手机上完成操作,智能借助Android SDK工具,所以你必须在操作的PC上下载并安装Android SDK程序,程序下载地址和安装配置方法见Android SDK官网。 2. 安装Android手机USB驱动程序 安装完Android SDK后就可以把手机通过USB线缆连接至PC,开启手机电源后PC会提示安装设备驱动程序,不要让系统自动查找驱动程序安装,选择自定义驱动程序位置,因为已经安装了Android SDK,驱动程序的位置默认为Android SDK的安装目录下的 usb_driver子目录,选择从这个目录安装驱动程序。 3. 下载一个可用Recovery程序 Android手机刷机失败后手机变砖的Android手机能否复活的关键就在于Recovery程序,

因为recovery程序意味着你可以再次刷新的ROM,相当于给PC重新安装操作系统。Android平台有很多可用的recovery程序,推荐使用最常见的Clock Recovery程序,注意recovery程序针对不同手机型号有不同版本的程序,下载时注意和手机型号匹配。把下载的recovery程序放在某一目录备用,比如 c: ecovery-RA-Magic-v2.3.1.img。 4. 关键步骤:重新给变砖的手机安装recovery程序 在PC上打开命令提示符(Windows系统,开始,运行,输入cmd回车),输入 #adb devices 回车,如果返回一串序列号说明手机已经正常连接。在命令提示符使用cd命令切换到recovery程序所在的目录。然后输入下面的命令: #adb reboot bootloader 回车后手机应该会进入fastboot模式,然后再执行下面的命令把recovery程序安装到手机上 #fastboot flash recovery-RA-Magic-v2.3.1.img 回车后如果看到下面的提示就说明recovery程序已经成功安装。 fastboot flash recovery recovery-RA-Magic-v2.3.1.img sending ‘recovery’ (4594 KB)… OKAY writing ‘recovery’… OKAY 拔掉手机USB连接线,关机,重新按指定键看看是否可以重新进入recovery模式了,到这一部,你的Android手机刷机后无法开机的问题就修复成功了,现在可以重新刷机给你心爱的手机再安装一个操作系统了。

linux内核启动 Android系统启动过程详解

linux内核启动+Android系统启动过程详解 第一部分:汇编部分 Linux启动之 linux-rk3288-tchip/kernel/arch/arm/boot/compressed/ head.S分析这段代码是linux boot后执行的第一个程序,完成的主要工作是解压内核,然后跳转到相关执行地址。这部分代码在做驱动开发时不需要改动,但分析其执行流程对是理解android的第一步 开头有一段宏定义这是gnu arm汇编的宏定义。关于GUN 的汇编和其他编译器,在指令语法上有很大差别,具体可查询相关GUN汇编语法了解 另外此段代码必须不能包括重定位部分。因为这时一开始必须要立即运行的。所谓重定位,比如当编译时某个文件用到外部符号是用动态链接库的方式,那么该文件生成的目标文件将包含重定位信息,在加载时需要重定位该符号,否则执行时将因找不到地址而出错 #ifdef DEBUG//开始是调试用,主要是一些打印输出函数,不用关心 #if defined(CONFIG_DEBUG_ICEDCC)

……具体代码略 #endif 宏定义结束之后定义了一个段, .section ".start", #alloc, #execinstr 这个段的段名是 .start,#alloc表示Section contains allocated data, #execinstr表示Section contains executable instructions. 生成最终映像时,这段代码会放在最开头 .align start: .type start,#function /*.type指定start这个符号是函数类型*/ .rept 8 mov r0, r0 //将此命令重复8次,相当于nop,这里是为中断向量保存空间 .endr b 1f .word 0x016f2818 @ Magic numbers to help the loader

安卓系统各类手机刷机教程

安卓手机刷机教程 刷机:简单的说,android手机的刷机,就相当于给它重装一下系统,这和我们常见的电脑重装系统类似。通过刷机,给手机装入全新的手机系统。Recovery:翻译过来的意思就是恢复,不明思议,这是手机上的一个恢复模式。通过这个recovery,用户可以实现安装系统(就是所谓的刷机),清空手机各种数据,为内存卡分区,备份和还原等等很多功能。它类似于电脑上的Ghost一键 恢复。 ROM:ROM是英文Read Only Memory简写,通俗的来讲ROM就是android手机的操作系统,类似于电脑的操作系统Windows xp,Windows7等等。平时说给电脑重装系统,拿个系统光盘或是镜像文件重新安装一下就好了。而android手机上刷机也是这个道理,将ROM包通过刷机,重新写入到手机中,ROM就是 android手机上的系统包。 Wipe:Wipe翻译过来的意思就是抹去,擦除等,在recovery模式下有个wipe选项,它的功能就是清除手机中的各种数据,这和恢复出厂值差不多。我们最常用到wipe是在刷机之前,大家可能会看到需要WIPE的提示,是指刷机前清空数据,注意wipe前备份一下手机中重要的东西哦。 好了,看了这些名词解释,是不是对刷机的一些专业术语都有所了解了呢?下面 我们就开始刷机过程吧。 刷机前先对自己手机中的一些重要内容进行备份吧,像名片,短信,日历等重要信息,有需要的就先备份一下,否则刷机后就都没了。 备份好以后,我们需要先给我们的android手机下载一个适合该手机使用的rom 包,这就像电脑上在重做系统前需要买张系统盘或是在网上下载一个系统镜像,这里要注意的是,手机毕竟不是电脑,大家在下载rom时一定要下载适合自己手机的相应版本,其他型号手机的rom是不通用的。 准备工作都完成了,首先,将下载好的rom包通过数据线或是读卡器放到SD卡 的根目录下,然后重命名为update.zip, 然后关机,按住Home小房子键的同时按开机键,即可进入recovery恢复模式,然后移动轨迹球到第四项,按下轨迹球选择进入“Flash zip from sdcard”

Android开机启动流程样本

Android的开机流程 1. 系统引导bootloader 1) 源码: bootable/bootloader/* 2) 说明: 加电后, CPU将先执行bootloader程序, 此处有三种选择 a) 开机按Camera+Power启动到fastboot, 即命令或SD卡烧写模式, 不加载内核及文件系统, 此处能够进行工厂模式的烧写 b) 开机按Home+Power启动到recovery模式, 加载recovery.img, recovery.img包含内核, 基本的文件系统, 用于工程模式的烧写 c) 开机按Power, 正常启动系统, 加载boot.img, boot.img包含内核, 基本文件系统, 用于正常启动手机( 以下只分析正常启动的情况) 2. 内核kernel 1) 源码: kernel/* 2) 说明: kernel由bootloader加载 3. 文件系统及应用init 1) 源码: system/core/init/* 2) 配置文件: system/rootdir/init.rc, 3) 说明: init是一个由内核启动的用户级进程, 它按照init.rc中的设置执行: 启动服务( 这里的服务指linux底层服务, 如adbd提供adb支持, vold提供SD卡挂载等) , 执行命令和按其中的配置语句执行相应功能 4. 重要的后台程序zygote 1) 源码: frameworks/base/cmds/app_main.cpp等 2) 说明: zygote是一个在init.rc中被指定启动的服务, 该服务对应的命令是/system/bin/app_process

安卓2.2系统刷机教程

安卓2.2系统刷机教程 请各位机油严格按照步骤的顺序刷机即可!100%完美(本人一个月内把自己的机器刷了100多次测试每个步骤可能造成的问题最后总结了以下方法,请放心刷机) 下面正式开始刷机!步骤如下: 1、拿起你可爱的defy ,首先不管你是什么版本的(所以不用问我这个版本能不能刷,那个版本能不能刷,我现在告诉你,只要你是defy 就能刷),OK,接下来把你的手机关机,将你的sim卡取出,再将你的SD卡取出)放在一边。 2、重新将你的手机装上电池(后盖可以不急着盖,因为以后还要装SIM卡和SD卡),同时按住电源开机键和音量的下调键,当屏幕出现M图标后松开,耐心等待一会,屏幕中央将出现安卓的小机器人图标,此时如果你是2.2系统那么请同时按住音量键的上调和下调键便能进入系统自带的Recovery模式,如果你之前是2.1的系统那么请按搜索键上方的区域进入Recovery模式,当进入recovery模式后用音量键选择到wipe data/factory reset 按电源键进入(2.1系统试按左下方的OK,进入)再用选择确认进行wipe,此时也请各位机油耐心等待,当wipe结束后会回到初始的recovery模式,接下来再用音量键选择第四项wipe cache partition再次进行wipe (注:有人认

为这一步没有必要,但还是请各位机油能按照我的做)当结束后再次返回到初始界面,请用电源键选择reboot system now重启手机。 3、重启玩手机后,请再次关机,关机后请同时按住电源键和音量上调键,当屏幕亮起时松开,此时屏幕上会出现几行白色英文(此为刷机模式),完成后请将手机放在一边待用。因为下面要在你的电脑端进行一些操作。 4、打开你的电脑(不管你是什么系统包括64位的系统,请放心不会对刷机造成任何影响),安装我下面给出的两个文件一个是驱动程序,一个是MOTO刷机工具(请一定下载我给出的链接) 手机驱动程序: https://www.sodocs.net/doc/7e2737602.html,/zh-cn/files/351a1e19-45a8-11e0-8d25-00 15c55db73d/ 刷机工具RSD:https://www.sodocs.net/doc/7e2737602.html,/199/19953.shtml 5、将上面下载好的两个程序安装好,然后点击RSD Lite 打开刷机工具,点击左上角的config 选择deviceid opti** 在弹出的对话框中选择first-come-first-serve devicei 点击OK后重新启动刷机工具RSD。 6、此时将凉在一边多时的defy 重新拿到手中用数据线把手机和电脑链接,此时不要轻举妄动,仔细观察刷机工具界面下方原本空白的

Android SystemBar启动流程分析

Android SystemBar启动流程分析 SystemBars的服务被start时,最终会调用该类的onNoService()方法。 @Override public void start() { if (DEBUG) Log.d(TAG, "start"); ServiceMonitor mServiceMonitor = new ServiceMonitor(TAG, DEBUG, mContext, Settings.Secure.BAR_SERVICE_COMPONENT, this); mServiceMonitor.start(); // will call onNoService if no remote service is found } @Override public void onNoService() { if (DEBUG) Log.d(TAG, "onNoService"); createStatusBarFromConfig(); // fallback to using an in-process implementation } private void createStatusBarFromConfig() { … mStatusBar = (BaseStatusBar) cls.newInstance(); … mStatusBar.start(); } BaseStatusBar是一个抽象类,故调用其子类的PhoneStatusBar的start 函数。 @Override public void start() { … super.start(); … } 子类的start又调用了父类的start public void start() { … createAndAddWindows(); … }

安卓系统各类手机刷机教程

很多朋友对刷机都是一头雾水,每天都在听说刷机刷机,但就是不知道刷机是什么,自己也想尝试一下,但又不知道该如何操作,其实 不要把它想的多复杂,只要你按照下面的步骤来做,你也能给自己的android手机刷个新系统! 首先我们先了解几个刷机前要知道的名词吧! 刷机:简单的说,android手机的刷机,就相当于给它重装一下系统,这和我们常见的电脑重装系统类似。通过刷机,给手机装入全新的手机系统。 Recovery:翻译过来的意思就是恢复,不明思议,这是手机上的一个恢复模式。通过这个recovery,用户可以实现安装系统(就是所谓的刷机),清空手机各种数据,为内存卡分区,备份和还原等等很多功能。它类似于电脑上的Ghost一键恢复。 ROM:ROM是英文Read Only Memory简写,通俗的来讲ROM就是android手机的操作系统,类似于电脑的操作系统Windows xp,Windows7等等。平时说给电脑重装系统,拿个系统光盘或是镜像文件重新安装一下就好了。而android手机上刷机也是这个道理,将ROM包通过刷机,重新写入到手机中,ROM就是android手机上的系统包。 Wipe:Wipe翻译过来的意思就是抹去,擦除等,在recovery模式下有个wipe选项,它的功能就是清除手机中的各种数据,这和恢复出厂值差不多。我们最常用到wipe是在刷机之前,大家可能会看到需要WIPE的提示,是指刷机前清空数据,注意wipe前备份一下手机中重要的东西哦。 好了,看了这些名词解释,是不是对刷机的一些专业术语都有所了解了呢?下面我们就开始刷机过程吧。 刷机前先对自己手机中的一些重要内容进行备份吧,像名片,短信,日历等重要信息,有需要的就先备份一下,否则刷机后就都没了。 备份好以后,我们需要先给我们的android手机下载一个适合该手机使用的rom包,这就像电脑上在重做系统前需要买张系统盘或是在网上下载一个系统镜像,这里要注意的是,手机毕竟不是电脑,大家在下载rom时一定要下载适合自己手机的相应版本,其他型号手机的rom 是不通用的。 准备工作都完成了,首先,将下载好的rom包通过数据线或是读卡器放到SD卡的根目录下,然后重命名为update.zip, 然后关机,按住Home小房子键的同时按开机键,即可进入recovery恢复模式,然后移动轨迹球到第四项,按下轨迹球选择进入“Flash zip from sdcard”

Android系统启动过程详解

Android系统启动过程详解 Android系统启动过程 首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。 启动的过程如下图所示:(图片来自网上,后面有地址)

下面将从Android4.0源码中,和网络达人对此的总结中,对此过程加以学习了解和总结, 以下学习过程中代码片段中均有省略不完整,请参照源码。

一Init进程的启动 init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行, 并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程。 启动过程就是代码init.c中main函数执行过程:system\core\init\init. c 在函数中执行了:文件夹建立,挂载,rc文件解析,属性设置,启动服务,执行动作,socket监听…… 下面看两个重要的过程:rc文件解析和服务启动。 1 rc文件解析 .rc文件是Android使用的初始化脚本文件(System/Core/Init/readm e.txt中有描述: four broad classes of statements which are Actions, Commands, Services, and Options.) 其中Command 就是系统支持的一系列命令,如:export,hostname,mkdir,mount,等等,其中一部分是linux 命令, 还有一些是android 添加的,如:class_start :启动服务,class_stop :关闭服务,等等。 其中Options是针对Service 的选项的。 系统初始化要触发的动作和要启动的服务及其各自属性都在rc脚本文件中定义。具体看一下启动脚本:\system\core\rootdir\init.rc 在解析rc脚本文件时,将相应的类型放入各自的List中: \system\core\init\Init_parser.c :init_parse_config_file( )存入到 action_queue、action_list、service_list中,解析过程可以看一下parse_config函数,类似状态机形式挺有意思。 这其中包含了服务:adbd、servicemanager、vold、ril-daemon、deb uggerd、surfaceflinger、zygote、media…… 2 服务启动 文件解析完成之后将service放入到service_list中。 文件解析完成之后将service放入到service_list中。 \system\core\init\builtins.c

安卓智能手机刷机无限重启问题解决方法 (1)

准备条件: 建议空白sd卡1-2G里面什么都没有,电量50%以上最好充满,准备民间2.3rom一个。 解决方法之一(亲测):前提是内存卡上不能有dload 文件,最好用个空白的卡,按音量上下键+关机键(俗称三键齐按,方便小白),出现粉屏,插入数据线连接电脑,,此刻电脑识别一个硬盘里面有image文件,替换自己早期做好了的在升级4.0前官方2.3的image备份(没有的到论坛上找)不建议格式化,然后再替换G大recovery5.0.2.7,替换完后扣电池,不要开机,因为此刻开机机子依然不能开机,会一直在菊花界面无限重启,然后装上电池,然后音量上键+开机键,进入rec模式,按正常刷民间2.3方法刷入准备好的民间2.3rom,刷好后重启,此刻发现自己的机子可以开机,打电话发信息,上网什么的都正常了,好了,此刻你可以刷任意的民间2.3rom。但是情况又出现了,不能刷回官方2.3版,是不是?一直卡在进度条的三分之一位置上?接下来介绍接上一个方法的方法。

解决方法二(亲测):上一个方法你做好看懂了吗?不懂的返回去再看。接下来的是强行刷官方4.0,空白sd卡上建立dload文件夹,将4.0step1复制dload里面,确保sd/dload/UPDATE.APP,然后sd卡插回手机,装上电池,按音量上下键+开机键,不要松手,自动进入粉色进度条,看奇迹出现了,第一个进度条是不是顺利的走完了?是的顺利的走完了,好了,这时候机子会自动重启,然后一直重启,好,没关系,扣电池,将sd上的dload里面的文件全删了,再将step2里面的app文件复制进去,确保sd/dload/UPDATE.APP,然后sd卡插回手机,装上电池,按音量上下键+开机键,不要松手,自动进入粉色进度条,这里时间估计要5-6min,看奇迹又出现了,进度条又顺利的走完,此时机子可以正常的开机了,开机后机子是4.0版的,还有step3就按照官方的办法sd卡升级,step3建议一定要刷进去。好了机子此刻是救活可以用了,打电话发信息,上网什么的都正常了。

android开机启动流程简单分析

android开机启动流程简单分析 android启动 当引导程序启动Linux内核后,会加载各种驱动和数据结构,当有了驱动以后,开始启动Android系统同时会加载用户级别的第一个进程init(system\core\init\init.cpp)代码如下: int main(int argc, char** argv) { ..... //创建文件夹,挂载 // Get the basic filesystem setup we need put together in the initramdisk // on / and then we'll let the rc file figure out the rest. if (is_first_stage) { mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755"); mkdir("/dev/pts", 0755); mkdir("/dev/socket", 0755); mount("devpts", "/dev/pts", "devpts", 0, NULL); #define MAKE_STR(x) __STRING(x) mount("proc", "/proc", "proc", 0, "hidepid=2,gid=" MAKE_STR(AID_READPROC)); mount("sysfs", "/sys", "sysfs", 0, NULL); } ..... //打印日志,设置log的级别 klog_init(); klog_set_level(KLOG_NOTICE_LEVEL); ..... Parser& parser = Parser::GetInstance(); parser.AddSectionParser("service",std::make_unique()); parser.AddSectionParser("on", std::make_unique()); parser.AddSectionParser("import", std::make_unique()); // 加载init.rc配置文件 parser.ParseConfig("/init.rc"); } 加载init.rc文件,会启动一个Zygote进程,此进程是Android系统的一个母进程,用来启动Android的其他服务进程,代码: 从Android L开始,在/system/core/rootdir 目录中有4 个zygote 相关的启动脚本如下图:

HTC G13 安卓手机 刷机教程

HTC G13 安卓手机刷机教程 (转载) 请先确定你是S-OFF 确认方法:关机后拆下电池再装上)。按下“音量向下键”,马上再按住“开机键”2秒。就会进入HBOOT界面,第一行就会显示是哪种类型的S-ON或是S-OFF 如下图就是S-OFF 如果你是S-ON 那你走吧。 进入主题首先先如果你要删除自带软件必须有ROOT的权限而刷ROOT权限以前要刷入recovery但刷入recovery前要明白你的销售地的代码 现在就先刷入recovery,地址: https://www.sodocs.net/doc/7e2737602.html,/thread-7706122-1-1.html这个是智能手机网的帖子。里面有地址。我没有直接的地址。不用申请论坛用户。他支持QQ号登陆。 Recovery 安装方法: 1、确保你的机器已经是S-OFF;

2、确保你的存储卡是FAT32格式; 3、将附件下载保存到SD卡根目录(就是你在“我的电脑”里,打开“移动硬盘”后的第一个界面。就是SD卡的表面上)并重新命名为PG76IMG.zip 4、将卡插入手机,手机关机; 5、按住音量下+开机键开机; 6、等待提示是否更新Recovery,按音量键上确定,开始刷新。 7、安装完提示按电源键重启。 8、按住音量下然后按电源键重启。 9、重启按音量下选择Recovery,安电源键进入Recovery模式。 10、ok,Recovery刷好了! 在这个过程中有的人不会出现6这个步骤。也就是界面会 显示:cid incorrect update fail! press to reboot 这就要知道你的销售地的代码。 这时候需要一个软件"MniADB"这个软件可以知道你的销售地的代码。 电脑连接手机(连接即可,不过保险一点还是选择HTC sync同步吧,如果PC端的HTC sync 提示没有找到设备,不用管它,miniADB已经可以正常运行)。 下载解压MiniADBD点击RunMe.bat并输入“adb shell getprop ro.cid”(直接输入即可,另外双引号就不用了)然后按回车键 后会出现这个画面 其中第7行中 HTC-038是我的手机销售地代码你也有你自己的记住这个代码,有用 打开“PG76IMG.zip”(就是刷Recovery的文件)打开他里面的“android-info.txt”文

相关主题