Android进阶(jni部分一)

前言

现在准备花一点时间在Android的技术更新上,往下层走。首先是从应用层走到jni层。开始慢慢的学习没并且做好记录。也许个人的技术不好,但是希望记录能够帮助同行。

Android程序执行流程

Android 系统启动过程

Android系统基于linux内核,所以启动时候最先通过Bootloader来加载linux内核,然后初始化Linux内核,最后去调用初始化的init进程。Android启动分为四个必须步骤:

  • init进程启动(初始化作用)

    启动顺序start_kernel()->init_post()->run_init_process()->init进程开始运行,

  • Native服务启动(本地服务

    app_process启动Zygote进程,Zygote进程启动后会启动一个Dalvik的实例,这个实例作为父进程,会为上层应用提供子进程,所以说Zygote进程负责Android系统的所有进程的创建。这个时候运行空间才开始运行起来,本地服务也会开始启动。

    Android进阶(jni部分一)_第1张图片

  • System Server和Android服务启动

    SystemServer被Zygote创建,Android的的所有服务都建立SystemServer上。

  • Home服务启动

    当Java系统启动完所有其他的Android服务,AcitivtyManger Service就开始启动Home应用。


Android应用程序启动过程

我们在点击桌面的Android应用程序,系统会为这个点击事件添加一些参数,包装成一个Intent.

{action:"android.intent.action.MAIN",
category:“android.intent.category.LAUNCHER"}

这个意图传给应用程序,通过清单文件来匹配action,找到入口Activity

android app启动

Android Sdk命令行工具

adb 命令

  • 关闭adb服务命令

    adb kill-server
    
  • 打开adb服务命令

    adb start-server
    
  • 查询当前设备命令

    adb devices
    
  • 安装程序

    adb install name.apk
    # 如果是debug版本的apk.需要加-t,因为德不孤版本的readOnly=true
    # -r 重装    -k 是保持用户数据
    
  • 卸载程序

    adb uninstall name.apk
    
  • 设备交换文件命令

    adb pull [手机文件路径] [电脑路径]  # 手机发送文件电脑
    adb push [电脑文件路径] [手机路径]  # 电脑文件发送到手机
    
    

shell命令

  • 文件操作命令

    格式为 adb shell [操作] 
    # adb shell cd /home
    
操作符 含义
mkdir 新建目录
touch 新建文件
cd 切换目录
echo “”>文件名 新建文件并写入内容
cat [文件名]>[目标] 连接到文件并且打印到设备上
cp [ 文件] >[目标] 复制文件到…
ls 显示目标目录内容
mv [文件] 目标路径 移动文件
rm 删除
wc 显示当前文件字数行数
more [文件] 分页显示
grep ” “ [文件] 查找指定字符串在文件
rmdir 删除空目录
ln -s 建立软连接
  • 系统管理命令
操作符 含义
stat [文件] 文件的相关信息
ifconfig 查询网络
who 自己的用户命令
top 显示当前系统中耗电资源最多的进程
ps -aux 所有瞬间进程状态
du 显示指定文件所占磁盘空间总量
df -h 查看电脑存储硬盘使用情况
free -h 查看内存使用情况
netsta 网络信息命令格式
  • 备份压缩命令
操作符 含义
tar -xvf 解压
tar -cvf 压缩一个文件-c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。 -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出

你可能感兴趣的:(android开发,liunx入门到进阶)