- 浏览: 924378 次
- 性别:
- 来自: 上海
最新评论
-
liu149339750:
我勒个去,搜到你的博客了,关注!
Android make脚本简记 -
ihopethatwell:
楼主,这个修改时间有个问题,退出修改界面就不保存设置的时间了, ...
Android中如何修改系统时间(应用程序获得系统权限) -
flyar520:
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
Android横屏状态下返回到壁纸界面屏幕刷新问题 -
flyar520:
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
Android横屏状态下返回到壁纸界面屏幕刷新问题 -
taowayi:
推荐android一键反编译神器 apkdec
Android apk反编译
1.目录树 /framework/base/api /framework/base/awt /framework/base/build /framework/base/camera
关 于camera的HAL接口库。最终生成native共享库libcamera.so
,编译时根据是否定义USE_CAMERA_STUB来决定系统是否有Camera硬件支持。若没有实际的Camera硬件,则编译时会和虚拟
camera静态库(libcamerastub.a,由camerahardwarestub.cpp,fakecamera生成)链接生成
libcamera.so。 /framework/base/cmds 关于android系统启动时用到的command等 /framework/base/cmds/am /framework/base/cmds/app_process 可
执行文件app_process,该文件可以根据输入参数决定是Zygote启动(参考init.rc中的语句 service zygote
/system/bin/app_process -Xzygote /system/bin --zygote
--start-system-server). 该执行程式会链接libandroid_runtime.so去链接android runtime。后面我会在详细分析此部分。 /framework/base/cmds/backup 可执行程式btool /framework/base/cmds/bmgr java可执行程式, backup manager, java库形式分发到目标系统/system/framework/bmgr.jar /framework/base/cmds/bootanimation android启动动画效果程式,该程式必须在android runtime启动后运行。 /framework/base/cmds/dumpstate android系统调试辅助工具,生成可执行程式dumpstate,同时建立两个程式dumpcrash bugreport指向该程式。 /framework/base/cmds/dumpsys 生成可执行程式dumpsys /framework/base/cmds/ime java可执行程式 ,IME输入法 input method manager, java库形式分发到目标系统/system/framework/ime.jar
/framework/base/cmds/input java可执行程式,管理input事件例如key event,text event 等,java库形式分发到目标系统/system/framework/input.jar /framework/base/cmds/installd 可执行程式installd,install manager,仅在非simulator系统中运行,安装到目标系统/system/bin/installd /framework/base/cmds/keystore 可执行程式keystore
,用途???仅在非simulator系统中运行,安装到目标系统/system/bin/keystore
/framework/base/cmds/pm java可执行程式,package manager,java库形式分发到目标系统/system/framework/pm.jar /framework/base/cmds/runtime runtime可执行程式,仅在simulator中使用 /framework/base/cmds/service service可执行程式,用来查找,检查,呼叫service,安装到目标系统/system/bin/service /framework/base/cmds/servicemanager android系统的service manager,可执行文件,安装到目标系统/system/bin/servicemanager servicemanager会和kernel的binder driver协作共同完成service的添加、查询、获取、检查等。 /framework/base/cmds/surfaceflinger
surfaceflinger可执行程式,安装到目标系统/system/bin/surfaceflinger, 该程式会初始化surfaceflinger,surfaceflinger::inistantiate(),该程式会链接到libsurfaceflinger.so /framework/base/cmds/svc /framework/base/cmds/system_server system server库libsystem_server.so->system/lib/libsystem_server.so和system_server可执行程式->system/bin/system_server. 该可执行程式不清楚什么用途???? /framework/core/ /framework/core/config 几个简单java常量,(debug标志等) /framework/core/java/* framewor
k的核心,此处主要指application framework,java库形式分发到/system/framework/ 包括framework.jar,framework-tests.jar sure??? /framework/core/jni framework所需的JNI接口实现库,分发到/system/lib/lib/libandroid_runtime.so /framework/core/res framework所需的资源文件打包,/system/framework/framework-res.apk,
/framework/libs /framework/libs/audioflinger,
生成libaudioflinger.so,
若无实际硬件和静态库libaudiointerface.a(audio interface虚拟设备)链接。
若有实际硬件和libaudio.so链接,若支持bluetooth,则和liba2dp.so链接
/framework/libs/surfaceflinger 生成libsurfaceflinger.so /framework/libs/ui 生成libui.so
/framework/libs/utils 生成libutils.so /framework/services/java/* system server java可执行程式service.jar,分发到/system/framework/service.jar /framework/services/jni/* system server JNI接口实现库,libanroid_servers.so,分发到/system/lib/libanroid_servers.so
启动 Zygote -Xzygote /system/bin --zygote --start-system-server AndroidRuntime->AppRuntime int main(int argc,const char* const argv[]) { AppRuntime runtime;生成AndroidRuntime实例 ... AndroidRuntime.Start("com.android.internal.os.ZygoteInit",startSystemServer);
} 其中
AndroidRuntime.Start("com.android.internal.os.ZygoteInit",startSystemServer);
呼叫Android::Start(const char* className,const bool startSystemServer) /framework/base/core/jni/AndroidRuntime.cpp 该函数的处理内容:
1.处理Jave Virtual Machine的一些参数选项; 2.创建Dalvik Java虚拟机,JNI_CreateJavaVM(&mJavaVM,&env,&initArgs); 3.注册Android Runtime中的JNI接口给虚拟机; 4.呼叫Java类
com.android.internal.os.ZygoteInit的main函数
在
类
com.android.internal.os.ZygoteInit的main函数中,
1.注册Zygote socket用来接收请求; 2.加载preloaded class、resources用来加快启动速度,文件清单在framework.jar中的preloaded-classes,framework-res.apk中的res中; 3.启动System Server; fork出独立的进程名称为system-server,呼叫com.android.server.SystemServer类的main函数; 在HandleSystemServerProcess函数中,RuntimeInit.ZygoteInit调用会呼叫AppRuntime的OnZygoteInit函数 4.RuntimeInit.ZygoteInit函数会呼叫
com.android.server.SystemServer类的main函数。
在此main函数中,系统首先加载android_server共享库libandroid_server.so 源代码位于/framework/base/service/jni 在该库中有定义JNI_OnLoad函数,所以Dalvik在加载
libandroid_server.so
的时候会首先呼叫该JNI_OnLoad函数,该函数将android server注册到Java虚拟机中,包括
KeyInputQueue,HardwareService,AlarmManager,BatteryService,SensorService,SystemServer
等;
呼叫在libanroid_server.so中注册的native函数init1,该函数位于/frameworks/base/services/jni/com_android_server_SystemServer.cpp中;
init1函数呼叫libsystem_server中的system_init函数,该函数位于/frameworks/base/cmds
/system_server/library/system_init.cpp中,该函数将SurfaceFlinger/AudioFlinger
/MediaPlayer/CameraService等组件注册到ServiceManager中 system_init函数反过来呼叫java类com.android.server.SystemServer的init2函数; 5.在init2函数中,android创建了serverthread,在该thread中android开始注册各种service到service manager中 包括EntropyService,PowerManager,ActivityManager,Telephony,PackageManager,ContentManager,ContentProvider,
BatteryService,HardwareService,AlarmManager等等。 注意该线程使用Looper来执行thread 至此android system server启动完成。
发表评论
-
Android systrace
2018-09-12 11:13 1038Understanding Systrace Caution: ... -
Android simpleperf
2018-09-12 11:02 1951Introduction of simpleperf What ... -
Android selinux安全策略
2016-06-21 17:16 4111基础知识 SEAndroid在架构和机制上与SELinux完 ... -
Android wifi captive portal 验证
2016-02-23 20:38 5200只要是国内的用户,基本上刷完5.0版本后如果没挂上V P N, ... -
Android CTS windows环境下测试
2015-09-08 11:36 6456Windows下CTS测试步骤 1.获 ... -
Android 之 日期时间 时区同步
2015-05-13 15:47 6375系统设置--日期和时间-- ... -
虚拟按键 振动效果
2015-05-12 11:50 2128[DESCRIPTION] Setting->情景模式- ... -
Android 签名信息读取
2014-08-22 17:32 1384public void getSingInfo() { ... -
Android UiAutomator 自动化测试
2014-07-04 17:39 10002一、一个BUG引发的问题 ... -
Android 多语言 多地区对应表
2014-05-13 17:09 2151Arabic, Egypt (ar_EG) Arabic, ... -
Android emulated sdcard
2013-08-12 21:46 6170如果要添加 emulated sdcard ,需要一下几个 ... -
#if、#ifdef、#if defined之间的区别
2013-05-17 15:19 58474#if的使用说明 #if的后面接的是表达式 #if ( ... -
Android 动态库死机调试方法
2013-03-05 13:54 4876android系统中调试Java非常容易,一般遇到错误都在 ... -
Android sqlite3 详解
2012-09-13 22:13 2408SQLite库包含一个名字叫做sqlite3的命令行,它可以让 ... -
Android 多语言开发
2012-08-16 18:37 2408第一部分 多语言定制的机制 1、ICU4C简介 ICU4 ... -
Android 添加底层核心服务
2012-06-04 10:52 5816为 Android添加底层核 ... -
Android 之响应的系统设置的事件
2012-05-24 18:17 19791、Configuration类专门用于描述手机设备上的配置信 ... -
Android CRT Screen 电视效果
2012-05-17 11:12 2307Android 2.3 对关屏进行了优化,增加了一种类似于 ... -
android编译dex-preopt
2012-05-11 18:48 5444对于android2.3编译时候选择下面的情况,既可以对dex ... -
Android 移动终端camera 防偷*拍设置
2012-04-26 10:35 1896目前市面上的所有移动终端几乎都有camera应用,但andro ...
相关推荐
在Android开发中,有时我们需要向框架(Framework)中添加自定义的资源,以便在系统级别使用。本文将详细介绍两种向Android Framework中添加新资源的方法。 首先,我们要理解Android的资源管理机制。Android的资源...
Android Framework层代码,用于Audio系统framework代码学习和分析,深入理解安卓音频
Tengine Convert Tool支持将多个framworks的模型转换为适用于Tengine-Lite AI框架的tmfile。 由于此工具依赖protobuf来解析Caffe,ONNX,TensorFlow,TFLite等的原型文件,因此只能在x86 Linux系统上运行。 Tengine...
《计算框架在快速傅立叶变换中的应用》是由Charles Van Loan撰写的一本关于数学分析领域的专著。该书聚焦于快速傅立叶变换(FFT)的计算框架,并深入探讨了FFT在信号处理、图像处理以及其他科学计算领域的应用。书中...
C#实例下载 供大家学习 有很好的实例 供初学者可以参考
在网页设计和开发中,CSS(层叠样式表)框架是开发者的重要工具,它们提供预定义的样式和组件,帮助快速构建响应式、美观且功能丰富的网站。本篇将详细介绍5个广受欢迎的通用CSS框架,助您在项目中找到最适合的解决...
Express和MongoDB项目结构这是一个基本的项目结构,可帮助您使用Express框架和MongoDB,并以基于干净的MVC架构的良好结构实践为基础,开始构建自己的RESTful Web API(适用于Android,IOS或JavaScript framworks)。...
美国则通过一系列项目和模型,如FRAMWORKS模型和SFPE防火工程手册,推动了性能化防火设计的发展。日本自20世纪50年代以来,经历了从指令性规范到性能化规范的转变,例如1996年的《建筑基准法》修订。澳大利亚和...
通过阅读和分析源码,你将能更好地掌握Spring框架的设计思想,提升自己的编程技能和解决问题的能力。 总之,"spring-framework-5.1.x"压缩包提供了一个完整的Spring 5.1.x源码环境,对于想要深入了解Spring框架、...
关键字:软件/技术/ Framworks技能 [HTML5,CSS3,BOOTSRAP,PYTHON,JAVA,MICROSOFT SQL Server,FLASK,数据分析,机器学习,自然语言处理,FASTAPI,DOCKER,AZURE机器学习服务,GIT,OFFICE365,WEB SCRAPING...
重塑JS 受JQuery和Angular启发的JS FrameWork 必需:安装java-derby和tomcat #如何使用框架 1)复制将整个文件夹粘贴到您... **注意:这并不完全像JQuery和Angular一样,是一个实现这些FramWorks背后的逻辑的项目**
GeoMX是基于MXNet的两层参数服务器框架,旨在通过在Web上协作培训共享的深度学习模型,以保护隐私的方式集成多...与其他分布式深度学习软件framworks和新兴的基于单层参数服务器架构的联合学习技术不同,GeoMX应用程序
从1.6版开始,支持以下.NET Framworks: .NET Framework 4.5.1 .NET Framework 4.6.1 .NET Framework 4.7 .NET Standard 2.0(.NET Core 2.0,Mono 5.4,.NET Framework 4.6.1+) 如果您的应用程序/库未在任何...
ProtoBuf-Replication-Prototype二手的Framworks /工具AWS开发工具包杰克斯ProtoBuf 弹簧靴Eclipse> Juno AWS开发工具包-Eclipse-插件安装说明签出git项目将3个文件夹作为eclipse-projects导入eclipse测试指令本地...
“对于任何项目, “初学者”通常都是最困难的部分,因此,这里有许多指向博客文章,文章的链接,有关所有语言,framworks,模块,插件等入门的视频等。此列表尚处于初期阶段。 如果您要添加一些链接/资源,请随时...
它主要用于将基于Flash的Web应用程序移植到HTML5,尽管它还与HaxePunk,HaxeFlixel和其他基于OpenFL的framworks兼容。 由于每个新的OpenFL版本都对共享类和通用的自定义后端机制进行了越来越多的更改,因此开发...
使用的语言和Framworks 我们使用以下语言作为源代码前端 - HTML5 CSS3 Java脚本React.js 后端- JavaMySQL 文件结构如下1.文件此文件夹包含文档的文本文件。 2.源代码Main.java-这是代码的驱动程序类收集-此文件夹...
不和谐的框架 类似于discord-js框架构建的discord.py框架 PS:这种类型的framworks很少使用,即使在discord.py中也是如此。 这样做只是为了好玩,不建议在正常情况下使用。 该框架是从以下js框架复制的: :
matlab滑动条码1.简介 这些代码和幻灯片在机器感知和互动小组(MPIG)的一年级研究生的机器学习课程中使用。...Framworks的描述应用 18_深度学习简介 4.在线视频 MPIG的硕士生提供“不受监督的学习”和“深度学习