Posts tagged with note


Security Sandbox 安全沙盒

Android操作系统是基于多用户的iinux系统上的,从他的系统架构图就中可以看得很明显:

Android System Architecture

所以很多地方Android都直接利用了linux的特性。

  • Android里面每个应用都被当作linux系统中的一个用户,被赋予一个唯一的user ID。这个user ID只有操作系统知道,应用自己是不知道的(当然通过root之后没有什么不可能)。这样应用的文件也就很简单的可以通过user permission来设定。
  • 每个应用都运行在独立的进程里,这样的好处是Android系统对应用的管理可以简化到对进程的管理,如挂起恢复等都可以直接用进程的特性。而内存管理也变得简单,因为不同的应用就是不同的进程,不会相互影响。
  • 另外,每个京城都有着自己独立的虚拟机dvm,也就意味着应用都是运行在独立的虚拟机里的,虚拟机相当于沙盒,互相之间的影响非常小。

当然应用之间不可能完全没有交流,Android提供了如下几种方式:

  • 两个应用如果是同一个组织个人开发,并且有着同样的签名,那么他们可以要求系统赋予他们一样的user ID,这样他们可以互相访问文件;而android在设计时为了节省系统资源,则认为既然你们都已经有一样的user

  • 使用groovy语法,定义在build.gralde中
println "hello"  
  • 和makefile,ant一样定义task
task hello {  
    doLast {
        println "my task"
    }
}

task hello << {  
   println "shortcut for task"
}
  • 同样可以定义依赖,生成DAG
task next(dependsOn: first) << {  
    println "my next task"
}
  • 能够在DAG上挂载hook
gradle