17
解决常见问题
解决常见问题 本章是针对Android常见错误的一些解决方法。当发生错误是,千万不要忘记使用ddms的logcat来仔细察看错误发生的原因。参考调试Android应用程序了解更多关于调试的内容。
17
共同的任务
使用Eclipse插件创建一个Android应用。 开始创建一个新的Android应用程序最快和最简单的方式是使用Android Eclipse插件。插件可以自动地为你的应用生成恰当的项目结构,并且为你自动地编译源代码。 当然知道接下来的也是个好主意。看看Overview of an Android Application以了解一个Android应用工作的原理。 同样也建议你看一看在SDK中samples/文件夹下的ApiDemos应用和其它应用样例. 最后,,Hello Android 和Notepad code tutorials它们都是使用Eclipse开始开发Android的很好的例子。尤其是Hello Android的例子,十分好地介绍用插件来创建一个新的Android应用。
16
资源和国际化
资源和国际化 资源是外部文件(即非源代码文件),它们被你的代码使用,并且在编译时被编译到你的应用程序中。Android支持很多不同类型的资源文件,包括 XML、PNG和JPEG文件。XML文件会由于其所描述的内容不同而形式不同。该文档描述了所有支持的文件类型及每种类型的语法或格式。 资源从源代码中被抽取出来,基于效率考虑,XML文件被编译成二进制、可以快速加载的形式。字符串,同样被压缩为一种更富效率的存储形式。由于这些原因,在Android平台中我们就有了这些不同的资源类型。 该文档主要包含以下几个部分: 目录 [隐藏] 1 资源和国际化 1.1 资源 1.1.1 创建资源 1.1.2 使用资源 1.1.2.1 在代码中使用资源 1.1.2.2 引用资源 1.1.2.3 引用主题属性 1.1.2.4 使用系统资源 1.1.3 支持对替换(Alternate)语言和配置的替换资源 1.1.4 资源参考 1.1.5 术语 1.2 国际化(I18N) 这是一个技术意味浓厚的文档,它和资源参考一起发布,它们包含了有关资源的很多信息。在使用Android的过程中并不需要把这个文档烂熟于胸,但是当你需要它时你应该知道来这里寻找信息。
16
安全模型
Android中的安全与许可 Android是一个多进程系统,每个应用(以及系统的部分)运行在自己的进程中。很多应用和系统间的安全通过标准Linux工具在进程级执行,比如为应用分配的用户和组标识。额外的细粒度安全特性通过“许可”机制来提供,该机制能够对一个指定进程可实现的特定操作进行约束。 用户标识和文件访问 每个安装在设备上的Android包(.apk)文件,Linux都赋予它一个唯一的用户标识,创建一个沙盒(sandbox)并防止它触及其它应用(同样,也避免其它应用触及它)。这个用户标识是在应用安装在设备上时赋予的,并且通常该应用在设备上的整个生命周期内该标识保持不变。 因为安全enforcement发生在进程级,而正常情况下,每个进程都需要作为不同的Linux用户来运行,任意两个包的代码都不会运行在同一进程中。你可以使用每个包内AndroidManifest.xml中的Manifest标签下的sharedUserId属性来给它们赋予相同的用户标识。通过这样做,为了安全起见,这两个包就会别当作相同的应用,具有相同的用户标识和文件许可。注意:为了保持安全,只有两个具有同样签名(并且请求相同的sharedUserId)的应用才会赋予相同的用户标识. 应用创建的任何文件都会被赋予应用的用户标识,并且,正常情况下不能被其它包访问。当使用getSharedPreferences(String, int), openFileOutput(String, int)或者createDatabase(String, int, int, SQLiteDatabase.CursorFactory)来创建应用时,你可以使用MODE_WORLD_READABLE和/或MODE_WORLD_WRITABLE标志位来允许其它包读/写该文件。当设置了这些标志位,文件虽然始终为你的应用所有,但是它的全局可读/写许可已经被适当设置,所有的应用都可以看到它。
16
数据存储与获取
参数 一个轻量级的存储和获取机制,采用一对简单的数据类型:key和value。它的典型应用是存储应用软件参数。 使用应用软件参数 你可以存储应用软件启动时需要载入的参数,例如默认问候语或文本字体。调用Context.getSharedPreferences()读取和写入参数值,如果你想将参数共享给包内的其它组件,请为参数分配一个名字。或者使用Activity.getPreferences()和无名参数以对调用保持私有。你不能跨越包将参数共享。 这里是一个为计算器静音按键模式设置用户参数的例子。 public class Calc extends Activity { public static final String PREFS_NAME = “MyPrefsFile”; … @Override protected void onCreate(Bundle state){ super.onCreate(state); … // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean(“silentMode”, false); setSilent(silent); } @Override protected void onStop(){ super.onStop(); // Save user preferences. We need an Editor object [...]
15
构建组成模块
AndroidManifest.xml 文件 AndroidManifest.xml is a required file for every application. It sits in the root folder for an application, and describes global values for your package, including the application components (activities, services, etc) that the package exposes and the implementation classes for each component, what kind of data each can handle, and where they can [...]
15
用户界面
屏幕元素的层次 The basic functional unit of an Android application is the activity–an object of the class android.app.Activity. An activity can do many things, but by itself it does not have a presence on the screen. To give your activity a screen presence and design its UI, you work with views and viewgroups — basic units [...]
14
参考信息
参考信息 本部分包含了与开发Android应用程序各个细节相关的大量参考资料。它包括应用程序框架的细节和Android核心库的文档。请先从新手上路起步并安装运行Android SDK。 下面是本部分的目录: 包索引 Android系统库中所有包的列表。带有超链接可以连向各个包的摘要页面。 类索引 SDK提供的所有的类的列表和描述。 类层次结构 连向各个类页面的超链接列表。 视图列表 Android SDK中提供的各种控件和布局器的直观显示。 Intents列表 描述了被Activities处理的Intents类。 Permissions列表 描述了应用程序可向manifest文件请求的许可。 资源类型列表 描述了你可以在应用程序中创建使用和打包进程序的多种资源。 Android IDL参考 本文档介绍了如何通过AIDL(Android Interface Definition Language Android接口描述语言)实现进程间通信。 术语表 对文档中使用的通用术语进行了定义。 索引 将Android系统库中的所有的包名、类名、方法、构造函数、常量、枚举和成员变量按字母的顺序列出。

