<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-cn">
		<id>http://wiki.tomtalk.net/index.php?action=history&amp;feed=atom&amp;title=PA10</id>
		<title>PA10 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.tomtalk.net/index.php?action=history&amp;feed=atom&amp;title=PA10"/>
		<link rel="alternate" type="text/html" href="http://wiki.tomtalk.net/index.php?title=PA10&amp;action=history"/>
		<updated>2026-04-24T04:18:04Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>http://wiki.tomtalk.net/index.php?title=PA10&amp;diff=3289&amp;oldid=prev</id>
		<title>2013年2月3日 (日) 22:25 Tom</title>
		<link rel="alternate" type="text/html" href="http://wiki.tomtalk.net/index.php?title=PA10&amp;diff=3289&amp;oldid=prev"/>
				<updated>2013-02-03T22:25:52Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;在Android中，安全性贯穿着应用程序生命周期的所有阶段，从设计时的策略考虑到运行时边界检查。&lt;br /&gt;
&lt;br /&gt;
==10.1 理解Android安全性模型==&lt;br /&gt;
&lt;br /&gt;
在部署方面，Android应用程序必须使用数字证书签名，才能将它们安装到设备上。在执行方面，Android在独立进程中运行每个应用程序，每个应用程序都具有唯一且固定的用户ID（在安装时分配）。这围绕进程提供了一个边界，阻止了一个应用程序直接访问另一个应用程序的数据。而且，Android定义了一个声明性权限模型来保护敏感的信息（比如联系人列表）。&lt;br /&gt;
&lt;br /&gt;
签名Android应用程序需要3个要素：数字证书、.apk文件和知道如何将数字证书的签名应用到.apk文件的实用程序。JDK发行版中包含一个免费的实用程序，名为jarsigner。这个实用程序是一个命令行工具，知道如何使用数字证书签名.jar文件。&lt;br /&gt;
&lt;br /&gt;
证书具有有效期，Google建议将有效期设置得很长，以支持众多的应用程序更新。那么，如果证书到期了会发生什么？Android仍然会运行该应用程序吗？幸运的是，是这样的（Android仅在安装时测试证书的有效期）。安装了应用程序以后，即使证书过期了应用程序也可以继续运行。&lt;br /&gt;
&lt;br /&gt;
那么更新又如何呢？不幸的是，在证书过期之后不能更新应用程序。换句话说，根据Google建议，需要确保证书的d寿命足够长，足以支持应用程序的整个生命期。&lt;br /&gt;
&lt;br /&gt;
==10.2 执行运行时安全性检查==&lt;br /&gt;
&lt;br /&gt;
Android中的运行时安全检查是在进程级别和操作级别上进行的。在进程级别，Android禁止一个应用程序直接访问另一个应用程序的数据。实现方法是，每个应用程序都在不同的进程中运行，使用唯一且固定的用户ID。在操作级别，Android定义了一组受保护的功能和资源。要使应用程序能够访问此信息，必须向AndroidManifest.xml文件添加一个或多个权限请求。也可以为应用程序定义自定义的权限。&lt;br /&gt;
&lt;br /&gt;
在桌面环境中，大部分应用程序都使用相同的用户ID运行，与此不同的是，Android应用程序通常使用自己的唯一ID运行。通过使用不同的ID运行每个应用程序，Android围绕每个进行创建了一种隔离边界。这能够阻止一个应用程序直接访问另一个应用程序的数据。&lt;br /&gt;
&lt;br /&gt;
尽管每个进程都具有边界，但应用程序之间的数据共享显然也可以实现，但必须显式地进行共享。换句话说，要获得另一个应用程序的数据，必须借助该应用程序的组件。例如，可以查询另一个应用程序的ContentProvider，可以调用另一个应用程序中的活动，或者可以与另一个应用程序的服务通信。所有这些途径都提供了在应用程序之间共享信息的方法，但它们以显式方式实现此目的，因为你不会访问基础的数据库、文件等内容。&lt;br /&gt;
&lt;br /&gt;
进程边界上的Android安全性非常简单明了，而对资源（比如联系人数据）、功能（比如设备的照相机）和我们自己的组件保护就比较有趣了。为了提供此类保护，Android定义了一种权限方案。&lt;br /&gt;
&lt;br /&gt;
关于权限的完整列表，请访问以下URL：&lt;br /&gt;
&lt;br /&gt;
http://developer.android.com/reference/android/Manifest.permission.html&lt;br /&gt;
&lt;br /&gt;
AndroidManifest.xml中的权限&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;manifest … &amp;gt;&lt;br /&gt;
    &amp;lt;application&amp;gt;&lt;br /&gt;
    …&lt;br /&gt;
    &amp;lt;/application&amp;gt;&lt;br /&gt;
    &amp;lt;uses-permission android:name=&amp;quot;android.permission.CAMERA&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;uses-permission android:name=&amp;quot;android.permission.READ_CONTACTS&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;uses-permission android:name=&amp;quot;android.permission.READ_CALENDAR&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tom</name></author>	</entry>

	</feed>