我们知道Android系统的启动是从Init.c开始
那么Android应用的启动过程是从哪里开始呢?
下面是具体的时序图参考:

从Launcher.java开始 由于虚拟机的特性每个应用都会独占一个进程,ActivityThead是应用启动的标志
本帖附件

乱码三千 – 码出一个新世界
我们知道Android系统的启动是从Init.c开始
那么Android应用的启动过程是从哪里开始呢?
下面是具体的时序图参考:

从Launcher.java开始 由于虚拟机的特性每个应用都会独占一个进程,ActivityThead是应用启动的标志
本帖附件

1 | int main(int argc, char **argv) |
1 | service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server |
1 | int main(int argc, const char* const argv[]) |
1 | public static void main(String argv[]) { |
1 | public static void main(String[] args) { |
1 | static JNINativeMethod gMethods[] = { |
1 | extern "C" status_t system_init() |
1 | public static final void init2() { |
1 | @Override |
1 | public void systemReady(final Runnable goingCallback) { |
1 | final boolean resumeTopActivityLocked(ActivityRecord prev) { |
本帖附件


选择默认配置即可


这里有三个Add选项
源码加载完成后关闭该窗口



代码显示窗口字体设置

各工具栏命令如下:
对应的文件菜单的功能
New(快捷键ctrl+N) 新建一个文件
Open(快捷键ctrl+O) 打开一个文件
Save(快捷键ctrl+S) 保存当前打开的文件
Save As(快捷键ctrl+shift+S) 将当前打开的文件保存为其它名子的文件
Save All(快捷键ctrl+A) 保存所有打开的和修改过的文件
Print 打印当前打开的文件
对应的编辑菜单功能
Cut(快捷键ctrl+X)
Copy(快捷键ctrl+C)
Paste(快捷键ctrl+V)
Undo(快捷键ctrl+Z)
Redo(快捷键ctrl+Y)
对应查找菜单功能
Search(快捷键ctrl+F) 在当前打开的文件中查找
Search Backward(快捷键F3) 在当前光标位置进行向后查找
Search Forward(快捷键F4) 在当前光标位置进行向前查找
Search Files(快捷键ctrl+shift+F) 在多文件(Source Insight工程中)中查找
Replace(快捷键ctrl+H) 在当前文件中进行查找和替代

对应于窗口功能,与普通的多文档编辑器相同,用来设置打开多个文件时窗口显示方式和规则。

用来设置Project窗口、Context窗口、Relation窗口和Clip窗口的显示或关闭。当快捷键点亮时,所对应的窗口显示。

Jump To Definition(快捷键ctrl+=) 跳转到当前光标所在位置的函数或变量的定义处(并打开文件)
Symbol Info 弹出一个窗口来显示当前光标位置的函数或变量的定义原型
Browse Project Symbols(快捷键F7) 在整个工程中查找一个函数或变量的出现位置
Lookup Reference(快捷键ctrl+/) 建立一个Reference链接,所对应的链接处会出现一个链接标志,通过链接标志可以方便的进行函数的查看。

Go To Previous Link 跳转到前一个Reference链接(此功能必须先建立一个Reference链接)
Go To Next Link(shift+F9) 跳转到前一个Reference链接(同上)
Go Back(Alt+)) 光标调转到前一个历史操作位置
Go Forward(Alt+.) 光标调转到后一个历史操作位置
Go To Line(F5) 跳转到指定的行位置
Bookmark(ctrl+M) 书签

帮助功能
本帖附件

Android系统架构师安卓系统的体系机构,Android的系统架构和其他操作系统一样,采用了分层的架构,共分为4层,从高到低分别是Android应用层,Android应用架构层,Android系统运行层和Linux内核层。

1. 应用程序
顶层中有所有的Android应用程序,包括通讯录、浏览器等,你写的应用程序也被安装在这层;所有的的应用程序都是使用Java语言编写的。
2. 应用框架层
这一层主要提供构建应用程序是可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用API来构建自己的应用程序
活动管理者(Activity Manager):控制应用程序生命周期和活动栈的所有方面
内容提供器(Content Providers):允许程序之间发布和分享数据。
资源管理器(Resource Manager):提供对非代码嵌入资源的访问,如字符串、颜色设置和用户界面布局。
通知管理器(Notification Manager):允许应用程序显示对话框或者通知给用户
视图系统(View System):一个可拓展的视图集合,用于创建应用程序用户界面
3. 系统运行库层
1) 程序库
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。他们通过Android应用程序框架为开发者提供服务,以下是一些核心库:
2) Android运行库
Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该个税文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由java编译器编译,然后通过SDK中的”dx”工具转化成 .dex格式由虚拟机执行
Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。
4. Linux内核层
Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动,音频驱动,照相机驱动,蓝牙驱动,WIFI驱动,电源管理等
区别DVM与JVM
1Dalvik:基于寄存器,编译和运行都会更快些
JVM:基于栈,编译和运行都会慢一些
Dalvik:执行.dex格式的字节码,是对.class文件进行压缩后产生的,文件变小
JVM:执行.class格式的字节码
Dalvik: 一个应用启动都运行一个单独的虚拟机运行在一个单独的进程中
JVM:只能运行一个实例,也就是所有应用都运行在同一个JVM中
本帖附件

安卓手机从开机到桌面显示的这个过程,即为Android系统启动过程,那么在这个过程中, Android系统内部都做了哪些操作呢?
首先咱们来看一张Android系统架构图:

Android系统的启动是由下往上进行的

从系统核心库Init.c的main函数开始执行—>Android Runtime—>执行init1函数初始化native也就是Libraries层—>执行init2函数初始化Framework层—>最后是Application层
具体流程图如下:

具体时序图如下:

当然 还有详细的思维导图供大家参考

本帖附件

mui是最接近原生App体验的前端框架。
体积极小:100k的js文件,60k的css文件。
原生编写,不依赖任何三方框架
极强:xcode和Android studio里所有原生控件都具备
高性能:精练的代码、适时的5+原生动画调用,达到原生应用的体验
多端发布:编写一套代码,iOS、Android、浏览器、微信App、百度直达号、流应用全覆盖
Facebook出品
文档全
社区成熟
组件丰富
劣势
需要维护两套代码,即 iOS,Android 各一套。并且开发调试 iOS 只能使用 Mac 设备
对开发设备有要求,调试不方便
iOS, android, H5 共用一套代码,
基于vue
但是
社区极度不成熟
文档不全
组件有限
资料少
前身是PhoneGap,后被Adobe公司收购, 目前已经捐赠给Apache开源
优势
集成方便
文档全
组件丰富
劣势
流畅度欠缺
优势
基于Angular语法,简单易学
开发效率高(如果熟悉Angular的话)
劣势
受限于Angular
流畅度一般
可定制性差
google出品
性能强
组件丰富
跨平台
但是
开发门槛稍高 需要学习Dart语言
本帖附件

Source Insight 4.0是一款功能强大的程序编辑器和代码浏览器,只要你拥有相应的程序语言包就能够进行程序分析, 比如说目前最好的开源语言java
作为一个android开发人员, 如果你想在windows平台上阅读程序源码, 那么Source Insight是你的布尔首选
链接: https://pan.baidu.com/s/1dFWD4YX 密码: icjm
解压密码: biu 因可能被检测版权问题,故必须加密打包分享。
链接: https://pan.baidu.com/s/1eSZtsbw 密码: 3kjj
解压密码: biu 因可能被检测版权问题,故必须加密打包分享。
https://545c.com/f/21042697-503735264-7eb2bc
(访问密码:312306)



附录二:
如果安装或者安装后提示有问题,请进行完全卸载后,再重装一遍即可。
完全卸载方式:
1、清除注册表信息:
- “win ”+ R 或者 “开始” -> “运行”,输入“regedit”,回车;
- 在弹出的注册表管理器中,选择“编辑”-> “查找”->“source insight”,或按照下述路径展开:HKEY_CURRENT_USER -> software -> Source Dynamics -> Source Insight;
- 将该项下面的source insight 需要清除的对应版本项目选中,右键“删除“。
2、删除全局配置信息:
- 在 ./user/document/source insight 3.0/4.0 下的所有文件及该文件夹
- 注意此处的路径可能不同 也可能是:“库”->“用户”(也可能是你的名字) -> 文档 -> source insight3.0/4.0
- 或者 你上次安装的时候所指定的其他位置
本帖附件
