Android 初始化语言

合集下载

Android中使用TextToSpeech的方法

Android中使用TextToSpeech的方法

Android中使⽤TextToSpeech的⽅法前⾔在⼀年前,和朋友⼀起码了⼀个英语APP,仿照某APP实现了单词的功能,最开始就是借助的TextToSpeech,后⾯感觉声⾳不够好听,于是使⽤了第三⽅APP初稿如图:实现1.初始化语⾳。

这是⼀个异步操作。

初始化完成后调⽤oninitListener(第⼆个参数)。

TextToSpeech mTts = new TextToSpeech(this, this);2.实现TextToSpeech.OnInitListener注意:语⾔可能不可⽤。

// 实现TextToSpeech.OnInitListener.public void onInit(int status) {if (status == TextToSpeech.SUCCESS) {//设置⾸选语⾔为中⽂,注意,语⾔可能是不可⽤的,结果将指⽰此int result = mTts.setLanguage(Locale.CHINA);if (result == NG_MISSING_DATA ||result == NG_NOT_SUPPORTED) {//语⾔数据丢失或不⽀持该语⾔。

Log.e(TAG, "语⾔数据丢失或不⽀持该语⾔");} else {//检查⽂档中其他可能的结果代码。

// 例如,语⾔可能对区域设置可⽤,但对指定的国家和变体不可⽤// TTS引擎已成功初始化。

// 允许⽤户按下按钮让应⽤程序再次发⾔。

mAgainButton.setEnabled(true);}} else {// 初始化失败Log.e(TAG, "初始化失败");}}3.写⼀个朗读⽅法,在需要的时候触发(如:点击事件)TextToSpeech的speak⽅法有两个重载。

执⾏朗读的⽅法speak(CharSequence text,int queueMode,Bundle params,String utteranceId);第⼆个参数queueMode⽤于指定发⾳队列模式,两种模式选择。

Android的初始化语言脚本init.rc解析

Android的初始化语言脚本init.rc解析

Android的初始化语言脚本init.rc解析Android的初始化语言脚本init.rc解析Android init.rc (Android init language)Android初始化语言由四大类声明组成:行为类(Actions),命令类(Commands),服务类(Services),选项类(Options).* 初始化语言以行为单位,由以空格间隔的语言符号组成。

C风格的反斜杠转义符可以用来插入空白到语言符号。

双引号也可以用来防止文本被空格分成多个语言符号。

当反斜杠在行末时,作为折行符。

* 以#开始(前面允许有空格)的行为注释行。

* Actions和Services隐含声明一个新的段落。

所有该段落下Commands或Options的声明属于该段落。

第一段落前的Commands或Options被忽略。

* Actions和Services拥有独一无二的命名。

在它们之后声明相同命名的类将被当作错误并忽略。

Actions-------Actions是一系列命令的命名。

Actions拥有一个触发器(trigger)用来决定action何时执行。

当一个action在符合触发条件被执行时,如果它还没被加入到待执行队列中的话,则加入到队列最后。

队列中的action依次执行,action中的命令也依次执行。

Init在执行命令的中间处理其它活动(设备创建/销毁,property设置,进程重启)。

Actions表现形式为:onServices--------Services是由init启动,在它们退出时重启(可选)。

Service表现形式为:service [ ]*...Options-------Options是Services的修饰,它们影响init何时、如何运行service.critical这是一个设备关键服务(device-critical service) .如果它在4分钟内退出超过4次,设备将重启并进入恢复模式。

Android 初始化语言(Android init Language翻译)!

Android 初始化语言(Android init Language翻译)!

在分析Android系统的init程序源码时看到了这份Doc,觉得对系统的分析挺有用的,所以翻译了出来!Android初始化语言(init.*.rc、init.conf文件格式)Android初始化语言包含了四种类型的声明:Actions(行动)、Commands(命令)、Services (服务)和Options(选项)。

所有这些都是以行为单位的,各种记号由空格来隔开。

C语言风格的反斜杠号可用于在记号间插入空格。

双引号也可用于防止字符串被空格分割成多个记号。

行末的反斜杠用于折行。

注释行以井号(#)开头(允许以空格开头)。

Actions和Services声明一个新的分组。

所有的命令或选项都属于最近申明的分组。

位于第一个分组之前的命令或选项将会被忽略。

Actions和Services有唯一的名字。

如果有重名的情况,第二个申明的将会被作为错误忽略。

(???我们是否应该以覆盖来代替忽略)Actions(行动)----------Actions其实就是一序列的Commands(命令)。

Actions都有一个trigger(触发器),它被用于决定action的执行时间。

当一个符合action触发条件的事件发生时,action会被加入到执行队列的末尾,除非它已经在队列里了。

队列中的每一个action都被依次提取出,而这个action中的每个command(命令)都将被依次执行。

Init在这些命令的执行期间还控制着其他的活动(设备节点的创建和注销、属性的设置、进程的重启)。

Actions的形式如下:onServices(服务)----------Services(服务)是一个程序,他在初始化时启动,并在退出时重启(可选)。

Services (服务)的形式如下:service [ ]*创建和执行一个程序()。

在程序完全执行前,init将会阻塞。

由于它不是内置命令,应尽量避免使用exec,它可能会引起init卡死。

Android包管理机制(一)PackageInstaller的初始化

Android包管理机制(一)PackageInstaller的初始化

Android包管理机制(⼀)PackageInstaller的初始化前⾔包管理机制是Android中的重要机制,是应⽤开发和系统开发需要掌握的知识点之⼀。

包指的是Apk、jar和so⽂件等等,它们被加载到Android内存中,由⼀个包转变成可执⾏的代码,这就需要⼀个机制来进⾏包的加载、解析、管理等操作,这就是包管理机制。

包管理机制由许多类⼀起组成,其中核⼼为PackageManagerService(PMS),它负责对包进⾏管理,如果直接讲PMS会⽐较难以理解,因此我们需要⼀个切⼊点,这个切⼊点就是常见的APK的安装。

讲到APK的安装之前,先了解下PackageManager、APK⽂件结构和安装⽅式。

1.PackageManager简介与ActivityManager和AMS的关系类似,PMS也有⼀个对应的管理类PackageManager,⽤于向应⽤程序进程提供⼀些功能。

PackageManager是⼀个抽象类,它的具体实现类为ApplicationPackageManager,ApplicationPackageManager中的⽅法会通过IPackageManager与AMS进⾏进程间通信,因此PackageManager所提供的功能最终是由PMS来实现的,这么设计的主要⽤意是为了避免系统服务PMS直接被访问。

PackageManager提供了⼀些功能,主要有以下⼏点:1. 获取⼀个应⽤程序的所有信息(ApplicationInfo)。

2. 获取四⼤组件的信息。

3. 查询permission相关信息。

4. 获取包的信息。

5. 安装、卸载APK.2.APK⽂件结构和安装⽅式APK是AndroidPackage的缩写,即Android安装包,它实际上是zip格式的压缩⽂件,⼀般情况下,解压后的⽂件结构如下表所⽰。

⽬录/⽂件描述assert存放的原⽣资源⽂件,通过AssetManager类访问。

Android启动-init简介

Android启动-init简介

2 概念介绍(准备工作)
关键词:内核空间和用户空间
2 / 31
android 系统启动流程
2.1 内核空间
Android 本质上就是一个基于 Linux 内核的操作系统+庞杂的上层应用。一个完整的 Linux 系统首先会将一个 Linux 内核装载到内存,也就是编译 Linux 内核源代码生成的 bzImage 文件,对于为 Android 优化的 Linux 内核源代码会生成 zImage 文件。该文件就 是 Linux 内核的二进制版本,zImage 在内核空间运行。内核空间简而言之就是内核 kernel 的非用户 user 能控制的运行空间。
1 / 31
android 系统启动流程
1. 概述
Linux 内核启动之后,执行第一个进程 Init,init 会启动本地服务,创建 Zygote 进程, 并最终到达 systemserver,systemserver 再往上启动 framework 层相关服务和进程,启 动 launcher 等完成整个开机流程。 下面先给一张 android 系统启动框架图:
2.4 zygote 是所有 java 进程的父进程
zygote 进程被 init 启动起来,再往上启动 systemserver,并随时等待其他 java 进程 请求,负责 java 进程的真正的创建和入口函数的执行。 所以我们很有必要搞清楚,zygote 到底是怎么启动的以及他自身的工作原理。
3 / 31
android 系统启动流程
Android 启动-Init 介绍 目录
1. 概述................................................................................................................................................ 2 2 概念介绍(准备工作)................................................................................................................. 2 2.1 内核空间.............................................................................................................................. 3 2.2 用户空间.............................................................................................................................. 3 2.3 两个空间需要通讯.............................................................................................................. 3 2.4 zygote 是所有 java 进程的父进程.......................................................................................3 3 Init 进程解析.................................................................................................................................. 4 3.1 /system/core/init/init.c 分析................................................................................................ 4 3.2 核心任务一: 各种初始化...................................................................................................6 3.3 核心任务二: 解析和执行 init.rc 文件............................................................................... 7 3.4 核心任务三: 执行 command,监控 service 重启和 socket 请求................................. 12 4 认识和解析 init.rc 的内容........................................................................................................... 13 4.1 认识 AIL 语言写成的 init.rc............................................................................................... 13 4.1.1 行(line)的概念........................................................................................................ 13 4.1.2 段(section)的概念.................................................................................................. 14 4.1.3 动作(action)和服务(service)的概念...................................................................... 15 4.1.3.1 目前 init.rc 内已经写入的主要的 action 和 service.................................. 15 4.1.3.2 Action............................................................................................................ 15 4.1.3.3 Command...................................................................................................... 16 4.1.3.4 Services......................................................................................................... 16 4.1.3.5 Option........................................................................................................... 17 4.2 解析 init.rc 的过程............................................................................................................ 18 4.2.1 init_parse_config_file 和 parse_config................................................................... 18 4.2.2 next_token............................................................................................................... 20 4.2.3 lookup_keyword、kw_is 和 keywords.h.................................................................24 4.2.4 parse_new_section.................................................................................................. 29

android程序开发初级教程(一)开始helloandroid

android程序开发初级教程(一)开始helloandroid

Android程序开发初级教程(一) 开始Hello Android平台简介令人激动的Google手机操作系统平台-Android正式发布了,这是一个开放源代码的操作系统,内核为Linux. 作为开发者,我们所关心的是这个平台的架构以及所支持的开发语言。

下面是这个平台的架构模型:这个平台有以下功能:+ Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的。

+ Dalvik virtul machine: 一个基于Linux的虚拟机。

+ Integrated browser: 一个基于开源的WebKit引擎的浏览器,在应用程序层。

+ Optimized graphics: 包含一个自定义的2D图形库和基于OpenGL ES 1.0 标准的3D实现。

+ SQLite: 数据库+ Media support: 通用的音频,视频和对各种图片格式的支持(MPEG4, H.264,MP3, AAC, AMR, JPG, PNG, GIF)+ GSM Telephony: GSM 移动网络, 硬件支持。

+ Bluetooth, EDGE, 3G, and WiFi: 都依赖于硬件支持。

+ Camera, GPS, compass, and accelerometer: 都依赖于硬件支持。

+Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且提供了Eclipse的插件。

下面我们就来亲身体验一下Android程序的开发之旅。

先介绍一下开发环境,下面是对系统及相关软件的版本要求:操作系统:Windows XP or VistaMac OS X 10.4.8 or later (x86 only)Linux (tested on Linux Ubuntu Dapper Drake)Supported Development EnvironmentsEclipseEclipse 3.2, 3.3 (Europa)Android Development Tools plugin (optional)Other development environments or IDEsJDK 5 or JDK 6 (JRE alone is not sufficient)Not compatible with Gnu Compiler for Java (gcj)Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows我使用Eclipse 3.3 + JDK 1.6. + Ant 1.7 的组合。

Android编译系统环境初始化过程分析资料

Android编译系统环境初始化过程分析资料

Android编译系统环境初始化过程分析Android源代码在编译之前,要先对编译环境进行初始化,其中最主要就是指定编译的类型和目标设备的型号。

Android的编译类型主要有eng、userdebug和user三种,而支持的目标设备型号则是不确定的,它们由当前的源码配置情况所决定。

为了确定源码支持的所有目标设备型号,Android编译系统在初始化的过程中,需要在特定的目录中加载特定的配置文件。

接下来本文就对上述的初始化过程进行详细分析。

对Android编译环境进行初始化很简单,分为两步。

第一步是打开一个终端,并且将build/envsetup.sh加载到该终端中:[html] view plain copy 在CODE上查看代码片派生到我的代码片$ . ./build/envsetup.shincluding device/asus/grouper/vendorsetup.shincluding device/asus/tilapia/vendorsetup.shincluding device/generic/armv7-a-neon/vendorsetup.shincluding device/generic/armv7-a/vendorsetup.shincluding device/generic/mips/vendorsetup.shincluding device/generic/x86/vendorsetup.shincluding device/lge/mako/vendorsetup.shincluding device/samsung/maguro/vendorsetup.shincluding device/samsung/manta/vendorsetup.shincluding device/samsung/toroplus/vendorsetup.shincluding device/samsung/toro/vendorsetup.shincluding device/ti/panda/vendorsetup.shincluding sdk/bash_completion/adb.bash从命令的输出可以知道,文件build/envsetup.sh在加载的过程中,又会在device目录中寻找那些名称为vendorsetup.sh的文件,并且也将它们加载到当前终端来。

android起步过程及各个镜像间的关系

android起步过程及各个镜像间的关系

android启动过程及各个镜像间的关系Android启动过程Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中。

可以分析一下它的代码,看看在其中到底做了一些什么样的初始化任务,它的源文件在system/core/init/init.c 中。

它会调用到init.rc初始化文件,这个文件在out/target/product/generic/root下,我们在启动以后,会发现根目录是只读属性的,而且sdcard的owner是system,就是在这个文件中做了些手脚,可以将它改过来,实现根目录的可读写。

通过分析这几个文件,还可以发现,android启动时首先加载ramdisk.img镜像,并挂载到/目录下,并进行了一系列的初始化动作,包括创建各种需要的目录,初始化console,开启服务等。

System.img是在init.rc中指定一些脚本命令,通过init.c进行解析并挂载到根目录下的/system目录下的。

ramdisk.img、system.img、userdata.img镜像产生过程:首先在linux终端下使用命令file ramdisk.img,打印出如下字符ramdisk.img: gzip compressed data, from Unix,可以看出,它是一个gzip压缩的格式,下面对其进行解压,使用fedora自带的工具进行解压,或者使用gunzip进行解压(可能需要将扩展名改为.gz),可以看到解压出一个新的ramdisk.img,这个ramdisk.img是使用cpio压缩的,可以使用cpio 命令对其进行解压,cpio –i –F ramdisk.img,解压后可以看到生成了一些文件夹和文件。

看到这些文件就会明白,它和root目录下的内容完全一样。

说明了ramdisk.img其实是对root 目录的打包和压缩。

android语言表

android语言表

-----------------------------------------------从网络查得以下信息-----------------------------------------------语言代码 语言名称af 南非语af-ZA 南非语ar 阿拉伯语ar-AE 阿拉伯语(阿联酋)ar-BH 阿拉伯语(巴林)ar-DZ 阿拉伯语(阿尔及利亚)ar-EG 阿拉伯语(埃及)ar-IQ 阿拉伯语(伊拉克)ar-JO 阿拉伯语(约旦)ar-KW 阿拉伯语(科威特)ar-LB 阿拉伯语(黎巴嫩)ar-LY 阿拉伯语(利比亚)ar-MA 阿拉伯语(摩洛哥)ar-OM 阿拉伯语(阿曼)ar-QA 阿拉伯语(卡塔尔)ar-SA 阿拉伯语(沙特阿拉伯)ar-SY 阿拉伯语(叙利亚)ar-TN 阿拉伯语(突尼斯)ar-YE 阿拉伯语(也门)az 阿塞拜疆语az-AZ 阿塞拜疆语(拉丁文)az-AZ 阿塞拜疆语(西里尔文)be 比利时语be-BY 比利时语bg 保加利亚语bg-BG 保加利亚语bs-BA 波斯尼亚语(拉丁文,波斯尼亚和黑塞哥维那) ca 加泰隆语ca-ES 加泰隆语cs 捷克语cs-CZ 捷克语cy 威尔士语cy-GB 威尔士语da 丹麦语da-DK 丹麦语de 德语de-AT 德语(奥地利)de-CH 德语(瑞士)de-DE 德语(德国)de-LI 德语(列支敦士登)de-LU 德语(卢森堡)dv 第维埃语dv-MV 第维埃语el 希腊语el-GR 希腊语en 英语en-AU 英语(澳大利亚)en-BZ 英语(伯利兹)en-CA 英语(加拿大)en-CB 英语(加勒比海)en-GB 英语(加拿大)en-IE 英语(爱尔兰)en-JM 英语(牙买加)en-NZ 英语(新西兰)en-PH 英语(菲律宾)en-TT 英语(特立尼达)en-US 英语(美国)en-ZA 英语(南非)en-ZW 英语(津巴布韦)eo 世界语es 西班牙语es-AR 西班牙语(阿根廷)es-BO 西班牙语(玻利维亚)es-CL 西班牙语(智利)es-CO 西班牙语(哥伦比亚)es-CR 西班牙语(哥斯达黎加)es-DO 西班牙语(多米尼加共和国) es-EC 西班牙语(厄瓜多尔)es-ES 西班牙语(传统)es-ES 西班牙语(国际)es-GT 西班牙语(危地马拉)es-HN 西班牙语(洪都拉斯)es-MX 西班牙语(墨西哥)es-NI 西班牙语(尼加拉瓜)es-PA 西班牙语(巴拿马)es-PE 西班牙语(秘鲁)es-PR 西班牙语(波多黎各(美)) es-PY 西班牙语(巴拉圭)es-SV 西班牙语(萨尔瓦多)es-UY 西班牙语(乌拉圭)es-VE 西班牙语(委内瑞拉)et 爱沙尼亚语et-EE 爱沙尼亚语eu 巴士克语eu-ES 巴士克语fa 法斯语fa-IR 法斯语fi 芬兰语fi-FI 芬兰语fo 法罗语fo-FO 法罗语fr 法语fr-BE 法语(比利时)fr-CA 法语(加拿大)fr-CH 法语(瑞士)fr-FR 法语(法国)fr-LU 法语(卢森堡)fr-MC 法语(摩纳哥)gl 加里西亚语gl-ES 加里西亚语gu 古吉拉特语gu-IN 古吉拉特语he 希伯来语he-IL 希伯来语hi 印地语hi-IN 印地语hr 克罗地亚语hr-BA 克罗地亚语(波斯尼亚和黑塞哥维那) hr-HR 克罗地亚语hu 匈牙利语hu-HU 匈牙利语hy 亚美尼亚语hy-AM 亚美尼亚语id 印度尼西亚语id-ID 印度尼西亚语is 冰岛语is-IS 冰岛语it 意大利语it-CH 意大利语(瑞士)it-IT 意大利语(意大利)ja 日语ja-JP 日语ka 格鲁吉亚语ka-GE 格鲁吉亚语kk 哈萨克语kk-KZ 哈萨克语kn 卡纳拉语kn-IN 卡纳拉语ko 朝鲜语ko-KR 朝鲜语kok 孔卡尼语kok-IN 孔卡尼语ky 吉尔吉斯语ky-KG 吉尔吉斯语(西里尔文)lt 立陶宛语lt-LT 立陶宛语lv 拉脱维亚语lv-LV 拉脱维亚语mi 毛利语mi-NZ 毛利语mk 马其顿语mk-MK 马其顿语(FYROM)mn 蒙古语mn-MN 蒙古语(西里尔文)mr 马拉地语mr-IN 马拉地语ms 马来语ms-BN 马来语(文莱达鲁萨兰)ms-MY 马来语(马来西亚)mt 马耳他语mt-MT 马耳他语nb 挪威语(伯克梅尔)nb-NO 挪威语(伯克梅尔)(挪威)nl 荷兰语nl-BE 荷兰语(比利时)nl-NL 荷兰语(荷兰)nn-NO 挪威语(尼诺斯克)(挪威)ns 北梭托语ns-ZA 北梭托语pa 旁遮普语pa-IN 旁遮普语pl 波兰语pl-PL 波兰语pt 葡萄牙语pt-BR 葡萄牙语(巴西)pt-PT 葡萄牙语(葡萄牙)qu 克丘亚语qu-BO 克丘亚语(玻利维亚)qu-EC 克丘亚语(厄瓜多尔)qu-PE 克丘亚语(秘鲁)ro 罗马尼亚语ro-RO 罗马尼亚语ru 俄语ru-RU 俄语sa 梵文sa-IN 梵文se 北萨摩斯语se-FI 北萨摩斯语(芬兰)se-FI 斯科特萨摩斯语(芬兰)se-FI 伊那里萨摩斯语(芬兰)se-NO 北萨摩斯语(挪威)se-NO 律勒欧萨摩斯语(挪威)se-NO 南萨摩斯语(挪威)se-SE 北萨摩斯语(瑞典)se-SE 律勒欧萨摩斯语(瑞典)se-SE 南萨摩斯语(瑞典)sk 斯洛伐克语sk-SK 斯洛伐克语sl 斯洛文尼亚语sl-SI 斯洛文尼亚语sq 阿尔巴尼亚语sq-AL 阿尔巴尼亚语sr-BA 塞尔维亚语(拉丁文,波斯尼亚和黑塞哥维那) sr-BA 塞尔维亚语(西里尔文,波斯尼亚和黑塞哥维那) sr-SP 塞尔维亚(拉丁)sr-SP 塞尔维亚(西里尔文)sv 瑞典语sv-FI 瑞典语(芬兰)sv-SE 瑞典语sw 斯瓦希里语sw-KE 斯瓦希里语syr 叙利亚语syr-SY 叙利亚语ta 泰米尔语ta-IN 泰米尔语te 泰卢固语te-IN 泰卢固语th 泰语th-TH 泰语tl 塔加路语tl-PH 塔加路语(菲律宾)tn 茨瓦纳语tn-ZA 茨瓦纳语tr 土耳其语tr-TR 土耳其语ts 宗加语tt 鞑靼语tt-RU 鞑靼语uk 乌克兰语uk-UA 乌克兰语ur 乌都语ur-PK 乌都语uz 乌兹别克语uz-UZ 乌兹别克语(拉丁文) uz-UZ 乌兹别克语(西里尔文) vi 越南语vi-VN 越南语xh 班图语xh-ZA 班图语zh 中文zh-CN 中文(简体)zh-HK 中文(香港)zh-MO 中文(澳门)zh-SG 中文(新加坡)zh-TW 中文(繁体)zu 祖鲁语zu-ZA 祖鲁语----------------------------------------------------------------------------------v4.11语言表(举例zh-rCN是中文-中国大陆,r是地区的意思)----------------------------------------------------------------------------------af南非语af-rZA南非语am???am-rET???ar阿拉伯语ar-rEG阿拉伯语(埃及)ar-rIL???be比利时语bg保加利亚语bg-rBG保加利亚语ca加泰隆语ca-rES加泰隆语cs捷克语cs-rCZ捷克语da丹麦语da-rDK丹麦语de de 德语de-rAT德语(奥地利de-rCH德语(瑞士)de-rDE德语(德国)de-rLI德语(列支敦士登)el希腊语el-rGR el-GR 希腊语en-rAU英语(澳大利亚)en-rCA英语(加拿大)en-rGB英语(加拿大)en-rIE英语(爱尔兰)en-rIN???en-rNZ英语(新西兰)en-rSG???en-rUS英语(美国)en-rZA英语(南非)es西班牙语es-rES西班牙语(传统)es-rUS???et???fa法斯语fa-rIR法斯语fi芬兰语fi-rFI芬兰语fr法语fr-rBE法语(比利时)fr-rCA法语(加拿大)fr-rCH法语(瑞士)fr-rFR法语(法国)hi印地语hi-rIN印地语hr克罗地亚语hr-rHR克罗地亚语hu匈牙利语hu-rHU匈牙利语in???in-rID???it意大利语it-rCH意大利语(瑞士)it-rIT意大利语(意大利) iw???iw-rIL???ja日语ja-rJP日语ko朝鲜语ko-rKR朝鲜语lt立陶宛语lt-rLT立陶宛语lv拉脱维亚语lv-rLV拉脱维亚语ms马来语ms-rMY马来语(马来西亚)nb挪威语(伯克梅尔)nb-rNO挪威语(伯克梅尔)(挪威) nl荷兰语nl-rBE荷兰语(比利时)nl-rNL荷兰语(荷兰)pl波兰语pl-rPL波兰语pt葡萄牙语pt-rBR葡萄牙语(巴西)pt-rPT葡萄牙语(葡萄牙) rm???rm-rCH???ro罗马尼亚语ro-rRO罗马尼亚语ru俄语ru-rRU俄语sk斯洛伐克语sk-rSK斯洛伐克语sl斯洛文尼亚语sl-rSI斯洛文尼亚语sr塞尔维亚语sr-rRS塞尔维亚语sv瑞典语sv-rSE瑞典语sw斯瓦希里语sw-rTZ???th th 泰语th-rTH泰语tl塔加路语tl-rPH塔加路语(菲律宾)tr土耳其语tr-rTR土耳其语uk乌克兰语uk-rUA乌克兰语vi越南语vi-rVN越南语zh-rCN中文(简体)zh-rTW中文(繁体) zu祖鲁语zu-rZA祖鲁语。

android源码分析之Runtime的初始化

android源码分析之Runtime的初始化

android源码分析之Runtime的初始化Android运行时作为android架构的一部分,起着非常重要的作用,它和核心库(Core Libraries)组成了Android运行时库层。

本文将依据android源码对AndroidRuntime(android运行时)的建立过程进行分析。

1、Android架构中的AndroidRuntimeandroid采用的是层次化系统架构,它的架构图如下:由架构图可知,AndroidRuntime处于Linux内核层以及应用框架层中间,而Java的运行环境依赖于Java虚拟机,所以AndroidRuntime对于android系统非常重要。

Init进程是Linux 环境下非常重要的一个进程,而Zygote进程是Java环境下的第一个进程,所有其他的Java 环境下的进程都是由Zygote进程来进行fork的,而init进程在启动Zygote进程之后,初始化Zygote进程之前,会先进行AndroidRuntime的启动和环境建立,下文将对此过程进行详细分析。

2、init进程分析init进程作为linux启动过程中的一个重要的进程,它主要负责文件系统的挂载,属性的初始化,各种配置的加载启动以及Action触发,Service的启动,而Zygote作为Java环境下的服务进程,也在Init.rc中进行了配置,而init进程是由main函数进行触发的,其main函数如下://Init.cppint main(int argc, char **argv){...//清除umask默认属性umask();add_environment("PATH",_PA TH_DEFPATH);//判断是不是初始化的第一阶段bool is_first_stage = (arg == 1)||(strcmp(argv[1],"--second-stage")!=0);if(is_first_stage){//进行系统文件系统等的挂载mount("tmpfs","/dev","tmpfs",MS_NOSUID,"mode=0755");mkdir("/dev/pts",0755);mkdir("/dev/socket",0755);mount("devpts","/dev/pts","devpts",0,NULL);mount("proc","/proc","proc",0,NULL);mount("sysfs","/sys","sysfs",0,NULL);}open_devull_stdio();//klog初始化klog_init();klog_set_level(KLOG_NOTICE_LEVEL);if(!is_first_stage){//关闭/dev/.booting文件的相关权限close("/dev/.booting",O_WRONL Y|O_WCREA T|O_CLOEXEC,000);//初始化部分属性property_init();//先初始化DT,因为DT的属性集的优先级高于comand lineprocess_kernel_dt();//处理内核命令行process_kernel_cmdline;//导出内核变量export_kernel_boot_props();}...//初始化信号量signal_handler_init();property_load_boot_defaults();//开启属性服务start_property_service();//解析/init.rc文件init_parse_config_file(/init.rc);...}此处的代码与android 4.4等,在代码上有略微的差别,但是基本的操作还是一样的,首先进行一些属性的初始化,内核命令行等以及信号量的初始化,最后再启动属性服务以及对init.rc文件进行解析,所以,接下来分析Init.rc文件://Init.rcimport /init.environ.rcimport /b.rcimport /init.${ro.hardware}.rcimport /init.${ro.zygote}.rcimport /init.trace.rc...由代码可知,与android4.4等有明显的差别,此处采用导入.rc文件的方式来初始化相应模块,此处分析zygote模块,对于android6.0来说,它提供了多个zygote相关的.rc文件,有Init.zygote32.rc、Init.zygote32_64.rc、Init.zygote64.rc、Init.zygote64_32.rc等,本文分析Init.zygote32.rc,其他流程是一样的,但是在源码中,只发现了Init.zygote32.rc的相关实现。

Android系统语言默认设置为简体中文

Android系统语言默认设置为简体中文
2编译的时候通过指明编译参数为简体中文这样编译传统就会编译出来的系统属性文件在
Android系统语言默认设置为简体中文
设置语言的原理很简单,可以通过修改系统属性来达到默认语言的作用。
这里有两种方法,需要的可以借鉴下:
1、在init.rc或者在其他的开机初始化文件如:default.prop中加入如下设置系统属性的代码:
[ro.product.locale.region]: [CN]
2、编译的时候,通过指明编译参数为简体中文,这样编译传统就会编译出来的系统属性文件,在
系统初始化的时候将会把上面的属性给进行正确的初始化,例如:
make PRODUCT-machineID-eng-zh_CN
[nguage]: [zh]
[persist.sys.country]: [CN]
[localevar]: []
[persist.sys.timezone]: [Asia/Shanghai]
[nguage]: [zh]

android中如何修改默认语言和国家

android中如何修改默认语言和国家

android中如何修改默认语言和国家.查了很多的网页,上面都只有写要修改PRODUCT_LOCALES字段.但.MK文件太多的,我找了很久都没有找到这个字段在哪里定义的.最后发现的结果:./device/rockchip/sdkdemo/boardconfig.mk中.这个文件夹在标准的android代码中属于定制文件目录,可以在相应的项目中找到对应的文件夹.修改此项.修改的方法是将默认的国家放在此字段的第一个位置.一般默认的是英语.例如韩国:PRODUCT_LOCALES := ko_KR en_US zh_CN另附转文一篇:这个讲得详细一些,还包含另一种修改方法,可参考.转自:/archives/android-custom-system-language-to-simplified-chinese. htmlAndroid系统原版默认的语言为英文,而我们定制系统可能需要用户一开机就是简体中文。

我们可以通过修改系统属性来达到默认语言的作用。

这里有两种方法,需要的可以借鉴下:1、在init.rc或者在其他的开机初始化文件如:default.prop中加入如下设置系统属性的代码:[nguage]: [zh][persist.sys.country]: [CN][persist.sys.localevar]: [][persist.sys.timezone]: [Asia/Shanghai][nguage]: [zh][ro.product.locale.region]: [CN]2、编译的时候,通过指明编译参数为简体中文,这样编译传统就会编译出来的系统属性文件,在系统初始化的时候将会把上面的属性给进行正确的初始化,例如:make PRODUCT-machineID-eng-zh_CN其他相关资料:1、ICU4C简介ICU4C(ICU for C,/ ) 是ICU在C/C++平台下的版本,ICU(International Component for Unicode)是基于"IBM公共许可证"的,与开源组织合作研究的, 用于支持软件国际化的开源项目。

Android开发要求规范

Android开发要求规范

安卓应用开发规1. 开发工具设置1.1 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了。

1.2 缩进统一为4个空格,将Tab size设置为4则可以保证tab键按4个空格缩进。

另外,不要勾选上Use tab character,可以保证切换到不同tab长度的环境时还能继续保持统一的4个空格的缩进样式。

1.3 一行声明一个变量,不要一行声明多个变量,这样有利于写注释。

private String param1; // 参数1private String param2; // 参数21.4. 行宽设置为100,设置格式化时自动断行到行宽位置。

1.5. 使用快捷键进行代码自动格式化。

1.6. 一个方法最多不要超过40行代码。

1.7 围型的常量用枚举类定义,而不要直接用整型或字符,这样可以减少围值的有效性检查。

// 用枚举类定义,Goodpublic enum CouponType {// 现金券SerializedName("1")CASH,// 抵用券SerializedName("2")DEBIT,// 折扣券SerializedName("3")DISCOUNT}// 用整型定义,Badpublic static final int TYPE_CASH = 1; // 现金券public static final int TYPE_DEBIT = 2; // 抵扣券public static final int TYPE_DISCOUNT = 3; // 折扣券1.8 文字大小的单位统一用sp,元素大小的单位统一用dp。

1.9 应用中的字符串统一在strings.xml中定义,然后在代码和布局文件中引用。

1.10 颜色值统一在colors.xml中定义,然后在代码和布局文件中引用。

另外,不要在代码和布局文件中引用系统的颜色,除了透明。

Android初始化流程简要分析

Android初始化流程简要分析

AndroidAndroid初始化流程简要分析lirankeTABLE OF CONTENTS1INIT PROCESS (2)1.1M AIN FUNCTION(引自SDK参考文档) (2)1.1.1Process step: (2)1.1.2Start services: (3)1.2F LOW CHART: (4)1.2.1Flow chart: (4)1.3A NALYSE: (5)1.3.1FD: (5)1.4S YSTEM STATUS (7)1.4.1Process list (7)2ADBD (9)3SERVICEMANAGER (9)3.1I NTROCUCE (9)3.2C OMPILER (10)3.3F LOW: (10)3.3.1Main of Frameworks\base\cmds\servicemanager\service_manager.c (10)3.4M AIN_RUNTIMER.CPP (16)4MOUNTD (17)4.1A NALYSE (17)5DEBUGGERD (18)5.1C HART (18)6RILD (18)6.1C HART (18)6.1.1RIL Architecture: (18)6.1.2RIL Flow: (19)7ZYGOTE (20)7.1I NTRODUCE (20)7.2APP_PROCESS (21)7.2.1compile: (21)7.2.2Class chart: (22)7.2.3Flow chart: (22)7.3Z YGOTE I NIT (24)7.3.1compile: (24)7.3.2ZygoteInit Main function flow chart (24)8SYSTEM_SERVER (26)8.1C OMPILE: (26)8.2A NALYSE: (27)8.2.1Server Class chart (27)8.2.2Syste_init (28)8.2.3startSystemServer (29)8.2.4runSelectLoopMode (29)8.2.5context = ActivityManagerService.main(factoryTest)的执行过程 (36)9MEDIA (38)10BOOTSOUND (38)11DBUS (38)12INSTALLD (38)12.1C HART (38)12.2A NALYSE (39)1Init processInit is the first process after kernel is started. Init code local at system/core/init(Android) dir, main function is included init.c. Init is called by kernel_init function localling at init(kernel) dir, via execve function.1.1Main function(引自sdk参考文档)Init is the first process after kernel is started. Init code local at system/core/init(Android) dir, main function is included init.c. Init is called by kernel_init function localling at init(kernel) dir, via execve function.1.1.1Process step:1. Mount basic file system, and nitialize log system.2. Parse /init.rc and /init.%hardware%.rc.3. Execute early-init action in init.rc.4. Device specific initialize.5. Initialize property system, and load android image, then print” ANDROID”.6. Execute init action in init.rc.7. Start property service.8. Execute early-boot and boot actions in init.rc.9. Execute property action in init.rc.10. Enter into an indefinite loop to wait for device/property set/child process exit events. For example, if anSD card is plugined, init will receive a device add event, so it can make node for the device. Most of the important process is forked in init, so if any of them crashed, init will receive a SIGCHLD then translate it intoa child process exit event, so in the loop init can handle the process exit event and execute the commandsdefined in *.rc(it will run command onrestart).1.1.2Start services:The .rc file is a script file defined by Android. The default is device/system/rootdir/init.rc. We can take a loot at the file format(device/system/init/readme.txt is a good overall introduction of the script). Basically the script file contains actions and services.Init.rc will run the following services:console: star a shell. The source is in device/system/bin/sh.adbd: start adb daemon. The source is in device/tools/adbd. By default is disabled.servicemanager: start binder system. The source is in device/commands/binder.mountd: mount all fs defined in /system/etc/mountd.conf if started, receive commands through local socket to mount any fs. The source is in device/system/bin/mountd.debuggerd: start debug system. The source is in device/system/bin/debuggerd.rild: start radio interface layer daemon. The source is in device/commands/rild.zygote: start Android Java Runtime and start system server. It’s the most important service. The source is in device/servers/app.media: start AudioFlinger, MediaPlayerService and CameraService. The source is in device/commands/mediaserver.bootsound: play the default boot sound /system/media/audio/ui/boot.mp3. The source is in device/commands/playmp3.dbus: start dbus daemon, it’s only used by Blu eZ. The source is in device/system/Bluetooth/dbus-daemon.hcid: redirect hcid’s stdout and stderr to the Android logging system. The source is in device/system/bin/logwrapper. By default is disabled.hfag: start Bluetooth handsfree audio gateway, it’s only used by BlueZ. The source is in device/system/Bluetooth/bluez-utils. By default is disabled.hsag: start Bluetooth headset audio gateway, it’s only used by BlueZ. The source is indevice/system/Bluetooth/bluez-utils. By default is disabled.installd: start install package daemon. The source is in device/servers/installd.flash_recovery: load /system/recovery.img. The source is in device/commands/recovery/mtdutils.1.2Flow chart:1.2.1Flow chart:1.3Analyse:1.3.1FD:FD Include :device _fd, property_set_fd, signal_recv_fd, signal_fd(global value)ufds: struct pollfd ufds[4] ={ device _fd , property_set_fd , signal_recv_fd , keychord_fd }1.device_fdFd:device_fd2.property_set_fd(1)Fd: property_set_fd(2) Property_set_fd C/S chart:#define PROP_SERVICE_NAME "property_service"fd = create_socket(PROP_SERVICE_NAME, SOCK_STREAM, 0666, 0, 0);//socket and bindServer(start_property_service) fcntl(fd, F_SETFD, FD_CLOEXEC);fcntl(fd, F_SETFL, O_NONBLOCK);listen(fd, 8);Client (load_properties_from_file)socket_local_client(PROP_SERVICE_NAME,ANDROID_SOCKET_NAMESPACE_RESERVED,SOCK_STREAM);//socket, connect r = send(s, msg, sizeof(prop_msg), 0)Close(fd)3.signal_recv_fdsignal_recv_fd and signal_fd:/* create a signalling mechanism for the sigchld handler */if (socketpair(AF_UNIX, SOCK_STREAM, 0, s) == 0) {signal_fd = s[0];signal_recv_fd = s[1];fcntl(s[0], F_SETFD, FD_CLOEXEC);fcntl(s[0], F_SETFL, O_NONBLOCK);fcntl(s[1], F_SETFD, FD_CLOEXEC);fcntl(s[1], F_SETFL, O_NONBLOCK);}……//read signalread(signal_recv_fd, tmp, sizeof(tmp);while (!wait_for_one_process(0)); //阻塞4.signal_fd( see to signal_recv_fd)1.4System status1.4.1Process listUSER PID PPID VSIZE RSS WCHAN PC NAME root 1 0 548 196 c00b8c14 0000d5cc S /initroot 2 0 0 0 c006bf70 00000000 S kthreaddroot 3 2 0 0 c005cc50 00000000 S ksoftirqd/0root 4 2 0 0 c007e408 00000000 S watchdog/0 root 5 2 0 0 c0068eec 00000000 S events/0root 6 2 0 0 c0068eec 00000000 S khelperroot 10 2 0 0 c0224f90 00000000 S suspend/0root 81 2 0 0 c0068eec 00000000 S kblockd/0root 89 2 0 0 c01f2f7c 00000000 S kseriodroot 111 2 0 0 c0068eec 00000000 S kmmcdroot 117 2 0 0 c0068eec 00000000 S btaddconnroot 118 2 0 0 c0068eec 00000000 S btdelconnroot 135 2 0 0 c00448e0 00000000 S bpmdroot 141 2 0 0 c008b5f4 00000000 S pdflushroot 142 2 0 0 c008b5f4 00000000 S pdflushroot 143 2 0 0 c008f948 00000000 S kswapd0root 189 2 0 0 c0068eec 00000000 S aio/0root 195 2 0 0 c01721f0 00000000 S mtdblockdroot 340 2 0 0 c01b4eb0 00000000 S accessory notifroot 349 2 0 0 c0068eec 00000000 S camera_task/0root 376 2 0 0 c0061438 00000000 S w1_controlroot 378 2 0 0 c0061438 00000000 S w1_bus_master1root 386 2 0 0 c0068eec 00000000 S charge ?root 428 2 0 0 c02ca26c 00000000 S krfcommdroot 430 2 0 0 c0068eec 00000000 S rpciod/0root 724 2 0 0 c0216908 00000000 S mmcqdroot 726 1 772 180 c019dbc4 afe0c1dc S /system/bin/shsystem 727 1 840 188 c022d8a0 afe0c47c S /system/bin/servicemanager root 729 1 1920 336 ffffffff afe0c1dc S /system/bin/mountdroot 730 1 704 176 c0257854 afe0ce0c S /system/bin/debuggerdroot 731 1 4132 628 c027e2f8 afe0ce0c S /opl/bin/tcmdroot 732 1 852 248 c00b92b0 afe0c5a4 S /opl/bin/adapterradio 733 1 12796 648 ffffffff beaab18c S /system/bin/rildroot 734 1 72000 14172 c00b92b0 afe0c5a4 S zygoteroot 735 1 33848 4512 ffffffff afe0c47c S /system/bin/mediaserverroot 736 1 1080 216 c00b8c14 bedc021c S /system/bin/dbus-daemon root 737 1 832 208 c02b6e80 afe0c1dc S /system/bin/installdroot 740 1 856 260 c00b92b0 afe0c5a4 S /opl/bin/bpdroot 741 1 828 172 c00b8c14 afe0d27c S /opl/bin/battmondroot 768 1 720 272 c02265ec afe0c1dc S /system/bin/logcatroot 769 1 716 264 c02265ec afe0c1dc S /system/bin/logcatroot 816 2 0 0 c0068eec 00000000 S battery.0system 825 734574128 28360 ffffffff afe0c47c S system_serverradio 877 734158260 20040 ffffffff afe0d404 S com.android.phoneapp_5 879 734 100888 13616 ffffffff afe0d404 S android.process.acoresystem 882 734 144664 24296 ffffffff afe0d404 S android.process.omsservice app_45 884 734 92304 10932 ffffffff afe0d404 S com.motorola.motohomeapp_22 890 734 117068 30228 ffffffff afe0d404 S oms.homeapp_3 918 734 98760 12652 ffffffff afe0d404 S oms.widgetmanagerapp_5 928 734 100888 13336 ffffffff afe0d404 S com.android.inputmethod.borqs app_24 930 734 105176 19168 ffffffff afe0d404 S com.db4o.servo.searchapp_18 960 734 104180 15208 ffffffff afe0d404 S com.android.mmsapp_8 979 734 118860 14044 ffffffff afe0d404 S android.process.mediaapp_9 991 734 91980 12264 ffffffff afe0d404 S com.android.alarmclockapp_15 998 734 103144 12908 ffffffff afe0d404 S oms.dcdsystem 1018 734 94732 13792 ffffffff afe0d404 S oms.dmapp_14 1025 734 95636 13036 ffffffff afe0d404 S com.android.calendarapp_42 1041 734 93292 11316 ffffffff afe0d404 S com.motorola.smsautoregapp_40 1090 734 97152 15192 ffffffff afe0d404 S com.motorola.mtcapp_38 1102 734 93832 12868 ffffffff afe0d404 S com.streamezzo.browser.android app_26 1115 734 96596 15084 ffffffff afe0d404 S oms.mediacenterapp_37 1126 734 98208 15212 ffffffff afe0d404 S com.hyfsoft.docviewerapp_20 1146 734 99260 15320 ffffffff afe0d404 S com.android.musicapp_47 1157 734 100204 15964 ffffffff afe0d404 S com.motorola.cameraapp_11 1183 734 122672 23576 ffffffff afe0d404 S com.android.browserapp_6 1199 734 117032 20388 ffffffff afe0d404 S oms.mobilemusicsystem 1244 734 99292 15940 ffffffff afe0d404 S com.android.settingsapp_23 1311 734 96932 16004 ffffffff afe0d404 S oms.bruroot 1334 2 0 0 c0216908 00000000 S mmcqdapp_8 1351 734 100308 15876 ffffffff afe0d404 S com.android.cameraapp_1 1424 734 111904 17024 ffffffff afe0d404 S oms.messagingapp_4 1436 734 101172 15504 ffffffff afe0d404 S oms.mailapp_2 1484 734 100716 18128 ffffffff afe0d404 S com.msapp_16 1663 734 101024 16748 ffffffff afe0d404 S oms.android.filemanagerroot 1684 1 3364 176 ffffffff 0000e8f4 S /sbin/adbdroot 1692 1684 776 348 c0059cd4 afe0d0ac S /system/bin/shroot 1724 1692 920 356 00000000 afe0c1dc R ps从真正的应用层的角度来看,所有的应用程序(如settings,media……)的父进程都是zygote. 因为任何一个应用都是一个VM。

Android(安卓)初始化语言

Android(安卓)初始化语言

Android初始化语言一、基础篇Android初始化语言包含了四种类型的声明:Actions(行动)、Commands(命令)、Services(服务)和Options(选项)。

所有这些都是以行为单位的,各种记号由空格来隔开。

C语言风格的反斜杠号可用于在记号间插入空格。

双引号也可用于防止字符串被空格分割成多个记号。

行末的反斜杠用于折行。

注释行以井号(#)开头(允许以空格开头)。

Actions和Services声明一个新的分组。

所有的命令或选项都属于最近申明的分组。

位于第一个分组之前的命令或选项将会被忽略。

Actions和Services有唯一的名字。

如果有重名的情况,第二个申明的将会被作为错误忽略。

(我们是否应该以覆盖来代替忽略)二、进阶篇Actions(行动)Actions其实就是一序列的Commands(命令)。

Actions都有一个trigger(触发器),它被用于决定action的执行时间。

当一个符合action触发条件的事件发生时,action会被加入到执行队列的末尾,除非它已经在队列里了。

队列中的每一个action都被依次提取出,而这个action中的每个command(命令)都将被依次执行。

Init在这些命令的执行期间还控制着其他的活动(设备节点的创建和注销、属性的设置、进程的重启)。

Actions的形式如下:on <trigger><command><command><command>Services(服务)Services(服务)是一个程序,他在初始化时启动,并在退出时重启(可选)。

Services(服务)的形式如下:service <name> <pathname> [ <argument> ]*<option><option>...Options(选项)Options(选项)是一个Services(服务)的修正者。

Android系统初始化开始位置及流程分析

Android系统初始化开始位置及流程分析

Android系统初始化开始位置及流程分析Android系统初始化开始位置及流程分析android系统的初始化过程是从那里开始呢?它在加载linux基本内核后,就开始运行一个初始化进程,叫做init进程,那么怎么样知道它是加载init进程的呢?难道上天就注定的吗?呵呵,不是的,原来是从android加载linux内核时,就设置了下面的参数:Kernel command line: noinitrd root=/dev/nfs console=ttySAC0 init=/init nfsroot=192.168.1.103:/nfsboot ip=192.168.1.20:192.168.1.103:192.168.1.1:255.255.255.0::eth0:o n在这行命令里,就是告诉linux内核初始化完成后开始运行init进程,由于init进程就是放在系统根目录下面。

而这个进程的代码,就是位于源码的目录system/core/init下面,现在就来仔细地分析这个进程到底做了什么事情,以便理解整个系统运行情况。

在分析过程中,会学习很多有用知识,甚至linux编程知识。

这么有用,还等什么呢?现在就开始,找到目录system/core/init/init.c代码,先从main函数开始,如下:#001 int main(int argc, char **argv)#002 {#003 int device_fd = -1;#004 int property_set_fd = -1;#005 int signal_recv_fd = -1;#006 int keychord_fd = -1;#007 int fd_count;#008 int s[2];#009 int fd;#010 struct sigaction act;#011 char tmp[PROP_VALUE_MAX];#012 struct pollfd ufds[4];#013 char *tmpdev;#014 char* debuggable;#015#016#017 act.sa_handler = sigchld_handler;#018 act.sa_flags = SA_NOCLDSTOP;#019 act.sa_mask = 0;#020 act.sa_restorer = NULL;#021 sigaction(SIGCHLD, &act, 0);在上面这段代码里,调用函数sigaction来设置处理子进程发送回来的关闭信号,其中SIGCHLD是设置子进程信号处理,SA_NOCLDSTOP是表示子进程结束时不要向父进程发送SIGCHLD,sigchld_handler是信号SIGCHLD的处理函数。

Android时区及语言代码

Android时区及语言代码

Android时区及语⾔代码1. 设置默认时区PRODUCT_PROPERTY_OVERRIDES += \persist.sys.timezone=Asia/Shanghai\注:搜索“persist.sys.timezone”,并更改其值persist.sys.timezone值域•Marshall Islands 马绍尔群岛 Pacific/Majuro•Midway Island 中途岛 Pacific/Midway•Hawaii 夏威夷 Pacific/Honolulu•Alaska 阿拉斯加州 America/Anchorage•Pacific Time 太平洋时间 America/Los_Angeles•Tijuana 蒂华纳 America/Tijuana•Arizona 亚利桑那 America/Phoenix•Chihuahua 吉娃娃 America/Chihuahua•Mountain Time ⼭地时间 America/Denver•Central America 中美洲 America/Costa_Rica•Central Time 美国中部时间 America/Chicago•Mexico City 墨西哥城 America/Mexico_City •Saskatchewan 萨斯喀彻温省 America/Regina•Bogota 波哥⼤ America/Bogota•Eastern Time 东部时间 America/New_York•Atlantic Time (Barbados) ⼤西洋时间(巴巴多斯) America/Barbados •Atlantic Time (Canada) ⼤西洋时间(加拿⼤) America/Halifax •Manaus 马瑙斯 America/Manaus•Santiago 圣地亚哥 America/Santiago•Newfoundland 纽芬兰 America/St_Johns•Brasilia 巴西利亚 America/Sao_Paulo•Buenos Aires 布宜诺斯艾利斯 America/Argentina/Buenos_Aires •Greenland 格陵兰 America/Godthab•Montevideo 蒙得维的亚 America/Montevideo•Mid-Atlantic 中⼤西洋 Atlantic/South_Georgia•Azores 亚速尔群岛 Atlantic/Azores•Cape Verde Islands 佛得⾓群岛 Atlantic/Cape_Verde •Casablanca 卡萨布兰卡 Africa/Casablanca•London, Dublin 伦敦,都柏林 Europe/London •Amsterdam, Berlin 阿姆斯特丹,柏林 Europe/Amsterdam•Belgrade 贝尔格莱德 Europe/Belgrade•Venezuela 委内瑞拉 America/CaracasBrussels 布鲁塞尔 Europe/Brussels•Sarajevo 萨拉热窝 Europe/Sarajevo•Windhoek 温得和克 Africa/Windhoek•W. Africa Time W.⾮洲时间 Africa/Brazzaville•Amman, Jordan 约旦安曼, Asia/Amman•Athens, Istanbul 雅典,伊斯坦布尔 Europe/Athens•Beirut, Lebanon 贝鲁特,黎巴嫩 Asia/Beirut•Cairo 开罗 Africa/Cairo•Helsinki 赫尔⾟基 Europe/Helsinki•Jerusalem 耶路撒冷 Asia/Jerusalem•Minsk 明斯克 Europe/Minsk•Harare 哈拉雷 Africa/Harare•Baghdad 巴格达 Asia/Baghdad•Moscow 莫斯科 Europe/Moscow•Kuwait 科威特 Asia/Kuwait•Nairobi 内罗毕 Africa/Nairobi•Tehran 德⿊兰 Asia/Tehran•Baku 巴库 Asia/Baku•Tbilisi 第⽐利斯 Asia/Tbilisi•Yerevan 埃⾥温 Asia/Yerevan•Dubai 迪拜 Asia/Dubai•Kabul 喀布尔 Asia/Kabul•Islamabad, Karachi 伊斯兰堡,卡拉奇 Asia/Karachi•Ural'sk Ural'sk Asia/Oral•Yekaterinburg 叶卡捷琳堡 Asia/Yekaterinburg•Kolkata 加尔各答 Asia/Calcutta•Sri Lanka 斯⾥兰卡 Asia/Colombo •Kathmandu 加德满都 Asia/Katmandu •Astana 阿斯塔纳 Asia/Almaty •Yangon 仰光 Asia/Rangoon •Krasnoyarsk 克拉斯诺亚尔斯克 Asia/Krasnoyarsk •Bangkok 曼⾕ Asia/Bangkok•Beijing 北京 Asia/Shanghai•Hong Kong ⾹港 Asia/Hong_Kong •Irkutsk 伊尔库次克 Asia/Irkutsk •Kuala Lumpur 吉隆坡 Asia/Kuala_Lumpur •Perth 珀斯 Australia/Perth•Taipei 台北 Asia/Taipei•Seoul 汉城 Asia/Seoul •Tokyo, Osaka 东京,⼤阪 Asia/Tokyo •Yakutsk 雅库茨克 Asia/Yakutsk •Adelaide 阿德莱德 Australia/Adelaide •Darwin 达尔⽂ Australia/Darwin •Brisbane 布⾥斯班 Australia/Brisbane •Hobart 霍巴特 Australia/Hobart •Sydney, Canberra 悉尼,堪培拉 Australia/Sydney •Vladivostok 符拉迪沃斯托克 Asia/Vladivostok •Guam 关岛 Pacific/Guam •Magadan 马加丹 Asia/Magadan •Auckland 奥克兰 Pacific/Auckland•Fiji 斐济 Pacific/Fiji•Tonga 汤加 Pacific/Tongatapu2. 设置默认语⾔PRODUCT_PROPERTY_OVERRIDES += \nguage=EN\nguage=EN\persist.sys.country=US\ro.product.region=USLANGUAGE-COUNTRY•简体中⽂(中国) zh-cn 繁体中⽂(台湾地区) zh-tw•繁体中⽂(⾹港) zh-hk 英语(⾹港) en-hk•英语(美国) en-us 英语(英国) en-gb•英语(全球) en-ww 英语(加拿⼤) en-ca•英语(澳⼤利亚) en-au 英语(爱尔兰) en-ie•英语(芬兰) en-fi 芬兰语(芬兰) fi-fi•英语(丹麦) en-dk 丹麦语(丹麦) da-dk•英语(以⾊列) en-il 希伯来语(以⾊列) he-il•英语(南⾮) en-za 英语(印度) en-in•英语(挪威) en-no 英语(新加坡) en-sg•英语(新西兰) en-nz 英语(印度尼西亚) en-id•英语(菲律宾) en-ph 英语(泰国) en-th•英语(马来西亚) en-my 英语(阿拉伯) en-xa•韩⽂(韩国) ko-kr ⽇语(⽇本) ja-jp•荷兰语(荷兰) nl-nl 荷兰语(⽐利时) nl-be•葡萄⽛语(葡萄⽛) pt-pt 葡萄⽛语(巴西) pt-br•法语(法国) fr-fr 法语(卢森堡) fr-lu•法语(瑞⼠) fr-ch 法语(⽐利时) fr-be•法语(加拿⼤) fr-ca 西班⽛语(拉丁美洲) es-la•西班⽛语(西班⽛) es-es 西班⽛语(阿根廷) es-ar•西班⽛语(美国) es-us 西班⽛语(墨西哥) es-mx•西班⽛语(哥伦⽐亚) es-co 西班⽛语(波多黎各) es-pr•德语(德国) de-de 德语(奥地利) de-at•德语(瑞⼠) de-ch 俄语(俄罗斯) ru-ru•意⼤利语(意⼤利) it-it 希腊语(希腊) el-gr•挪威语(挪威) no-no 匈⽛利语(匈⽛利) hu-hu•⼟⽿其语(⼟⽿其) tr-tr 捷克语(捷克共和国) cs-cz•斯洛⽂尼亚语 sl-sl 波兰语(波兰) pl-pl•瑞典语(瑞典) sv-se 西班⽛语 (智利) es-cl。

Android系统默认修改

Android系统默认修改

Android4.4系统默认设置修改1.修改默认语言在build\tools\buildinfo.sh文件末尾添加如下代码:echo "nguage=zh"echo "ro.product.locale.region=CN"2.修改默认时区在core_base.mk中添加:PRODUCT_PROPERTY_OVERRIDES += /persist.sys.timezone= Asia/Shanghai另外还有一种方法:在 init.rc 中添加#set default timezonesetprop persist.sys.timezone Asia/Shanghai3.修改系统12/24小时制Android源码中默认使用12小时制,如果想要改成24小时制的话,方法如下:1)到源码目录 frameworks/base/packages/SettingsProvider/res/values/defaults.xml 文件中增加一行:<string name="time_12_24">24</string>2)到源码目录frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.ja va文件中的loadSystemSettings()方法中增加下面一行设置时间格式:loadStringSetting(stmt,Settings.System.TIME_12_24,R.string.time_12_24);3)可以用以下代码查看系统是否是24小时制:ContentResolver c = getContentResolver();String strTimeFormat =android.provider.Settings.System.getString(c,android.provider.Settings.System.TIME_12_24); if(strTimeFormat.equals("24")){Log.e("time", "The system time is 24 hour format");}else{Log.e("time", "The system time is 12 hour format");}4.设置Android默认锁定屏幕旋转解决方法:cat frameworks/base/packages/SettingsProvider/res/values/defaults.xml<resources>......<!--<bool name="def_accelerometer_rotation">true</bool>--><bool name="def_accelerometer_rotation">false</bool>......</resources>5.默认不要锁屏,设置-安全--屏幕锁定 (无)frameworks/base/packages/SettingsProvider/res/values/defaults.xml<bool name="def_lockscreen_disabled">true</bool>6. 默认允许未知来源<bool name="def_install_non_market_apps">true</bool>1.diff --git a/packages/apps/Settings/src/com/android/settings/DevelopmentSettings.ja va b/packages/apps/Settings/src/com/android/settings/Devel2.index 0a987df..503270a 1007553.---a/packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java4.+++ b/packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java5.@@ -508,15 +508,9 @@ public class DevelopmentSettings extends SettingsPreference Fragment6. final Context context = getActivity();7. final ContentResolver cr = context.getContentResolver();8.mHaveDebugSettings = false;9.-10. /// M: CR ALPS00244115. Lock and unlock screen, the "USB debugging"is unchecked.11. boolean isChecked = (mAdbDialog != null && mAdbDialog.isShowing())? true :12. (Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) != 0);13.- //added by ouyang 2015-11-10 set mEnableAdb=true if model is J514.- if (android.os.SystemProperties.isJ5Version()) {15.- isChecked=true;16.- }17.- //added by ouyang 2015-11-10 end18. updateSwitchPreference(mEnableAdb, isChecked);19. /// M: update usb preference again20. mExt.customUSBPreference(mEnableAdb);[html]view plain copy1.diff --git a/packages/apps/Settings/src/com/android/settings/SecuritySettings.java b/packages/apps/Settings/src/com/android/settings/Security2.index 4de173a..392e6ee 1007553.---a/packages/apps/Settings/src/com/android/settings/SecuritySettings.java4.+++ b/packages/apps/Settings/src/com/android/settings/SecuritySettings.java5.@@ -402,14 +402,7 @@ public class SecuritySettings extends SettingsPreferenceFra gment6. root.findPreference(KEY_DEVICE_ADMIN_CATEGORY);7.mToggleAppInstallation = (SwitchPreference) findPreference(8. KEY_TOGGLE_INSTALL_APPLICATIONS);9.-10.- //added by ouyang 2015-11-10 setChecked(true) if the model is J511.- if (android.os.SystemProperties.isJ5Version()) {12.- setNonMarketAppsAllowed(true);13.- }14. mToggleAppInstallation.setChecked(isNonMarketAppsAllowed());15.- //added by ouyang 2017-05-09 end16.-17. // Side loading of apps.18. // Disable for restricted profiles. For others, check if policy disallows it.19. mToggleAppInstallation.setEnabled(!um.getUserInfo(UserHandle.myUserId()).isRestricted());7.默认显示“开发者选项”请修改./packages/apps/Settings/src/com/android/settings/Settings.javaprivate void updateHeaderList(List<Header> target)/*final boolean showDev = mDevelopmentPreferences.getBoolean(DevelopmentSettings.PREF_SHOW,android.os.Build.TYPE.equals("eng"));*/修改为 boolean showDev = true;8.永不休眠1)设置默认永不休眠./frameworks/base/packages/SettingsProvider/res/values/defaults.xml<integer name="def_screen_off_timeout">-1</integer>./device/9tripod/x4418/overlay/frameworks/base/packages/SettingsProvider/res/val ues/defaults.xml<integer name="def_screen_off_timeout">-1</integer>2)设置英文never项./packages/apps/Settings/res/values/arrays.xml<!-- Display settings. The delay in inactivity before the screen is turned off. These are shown in a list dialog. --><string-array name="screen_timeout_entries"><item>15 seconds</item><item>30 seconds</item><item>1 minute</item><item>2 minutes</item><item>5 minutes</item><item>10 minutes</item><item>30 minutes</item>+<item>never</item></string-array><!-- Do not translate. --><string-array name="screen_timeout_values" translatable="false"><!-- Do not translate. --><item>15000</item><!-- Do not translate. --><item>30000</item><!-- Do not translate. --><item>60000</item><!-- Do not translate. --><item>120000</item><!-- Do not translate. --><item>300000</item><!-- Do not translate. --><item>600000</item><!-- Do not translate. --><item>1800000</item>+<item>-1</item></string-array>3)设置中文永不休眠项./packages/apps/Settings/res/values-zh-rCN/arrays.xm l<string-array name="screen_timeout_entries"><item msgid="3342301044271143016">"15 秒"</item><item msgid="8881760709354815449">"30 秒"</item><item msgid="7589406073232279088">"1 分钟"</item><item msgid="7001195990902244174">"2 分钟"</item><item msgid="7489864775127957179">"5 分钟"</item><item msgid="2314124409517439288">"10 分钟"</item><item msgid="6864027152847611413">"30 分钟"</item><!-- add :20170509, taikoto --><item msgid="9989898989898989898">"永不休眠"</item></string-array>4)设置电源管理服务./frameworks/base/services/java/com/android/server/power/PowerManagerServi ce.javaprivate int getScreenOffTimeoutLocked() {int DonotSleeptimeout;int timeout =mScreenOffTimeoutSetting;if(isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {timeout = Math.min(timeout,mMaximumScreenOffTimeoutFromDeviceAdmin);if(mUserActivityTimeoutOverrideFromWindowManager >= 0) {timeout = (int)Math.min(timeout,mUserActivityTimeoutOverrideFromWindowManager); }DonotSleeptimeout = mScreenOffTimeoutSetting;if(DonotSleeptimeout < 0){DonotSleeptimeout= mMaximumScreenOffTimeoutFromDeviceAdmin ;returnMath.max(DonotSleeptimeout, mMaximumScreenOffTimeoutFromDeviceAdmin); }return Math.max(timeout,MINIMUM_SCREEN_OFF_TIMEOUT);}privatevoid updateUserActivitySummaryLocked(long now, int dirty) {// Update the status of the useractivity timeout timer.if ((dirty & (DIRTY_USER_ACTIVITY |DIRTY_WAKEFULNESS |DIRTY_SETTINGS)) != 0) {mHandler.removeMessages(MSG_USER_ACTIVITY_TIMEOUT);long nextTimeout = 0;if (mWakefulness !=WAKEFULNESS_ASLEEP) {final int screenOffTimeout =getScreenOffTimeoutLocked();final int screenDimDuration =getScreenDimDurationLocked(screenOffTimeout);mUserActivitySummary = 0;if (mLastUserActivityTime >=mLastWakeTime) {nextTimeout =mLastUserActivityTime+ screenOffTimeout- screenDimDuration;if (now < nextTimeout) {mUserActivitySummary |=USER_ACTIVITY_SCREEN_BRIGHT;} else {nextTimeout =mLastUserActivityTime + screenOffTimeout;if (now <nextTimeout) {mUserActivitySummary|= USER_ACTIVITY_SCREEN_DIM;}}}if (mUserActivitySummary == 0&&mLastUserActivityTimeNoChangeLights >= mLastWakeTime) {nextTimeout =mLastUserActivityTimeNoChangeLights + screenOffTimeout; if (now < nextTimeout&&mDisplayPowerRequest.screenState!=DisplayPowerRequest.SCREEN_STATE_OFF) {mUserActivitySummary =mDisplayPowerRequest.screenState==DisplayPowerRequest.SCREEN_STATE_BRIGHT ?USER_ACTIVITY_SCREEN_BRIGHT : USER_ACTIVITY_SCREEN_DIM; }}if (mUserActivitySummary != 0&&mScreenOffTimeoutSetting > 0) {Message msg =mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT);msg.setAsynchronous(true);mHandler.sendMessageAtTime(msg,nextTimeout);}} else {mUserActivitySummary = 0;}if (DEBUG_SPEW) {Slog.d(TAG,"updateUserActivitySummaryLocked: mWakefulness="+wakefulnessToString(mWakefulness)+ ",mUserActivitySummary=0x" + Integer.toHexString(mUserActivitySummary) + ",nextTimeout=" + TimeUtils.formatUptime(nextTimeout));}}}5)设置显示配置./packages/apps/Settings/src/com/android/settings/DisplaySettings.java privatevoid updateTimeoutPreferenceDescription(long currentTimeout) {ListPreference preference =mScreenTimeoutPreference;String summary;if (currentTimeout < -1) {// Unsupported valuesummary = "";} else {final CharSequence[] entries =preference.getEntries();final CharSequence[] values =preference.getEntryValues();if (entries == null ||entries.length == 0) {summary = "";} else {int best = 0;for (int i = 0; i <values.length; i++) {long timeout =Long.parseLong(values[i].toString());if (currentTimeout >=timeout) {best = i;}}summary = preference.getContext().getString(R.string.screen_timeout_summary,entries[best]);if(currentTimeout < 0)summary =entries[best].toString();}}preference.setSummary(summary);}6)修改系统设置修改./packages/apps/Settings/src/com/android/settings/DisplaySettings.java文件,将: private static final int FALLBACK_SCREEN_TIMEOUT_VALUE = 30000;改为: private static final int FALLBACK_SCREEN_TIMEOUT_VALUE = -1;9.修改默认亮度修改./frameworks/base/packages/SettingsProvider/res/values/defaults.xml中的 <!-- Default screen brightness, from 0 to 255. 102 is 40%. --><integer name="def_screen_brightness">51</integer><integer name="def_screen_brightness">255</integer>./frameworks/base/core/java/android/os/PowerManager.java设置进度条的范围,BRIGHTNESS_DIM = 20 BRIGHTNESS_ON=255.。

android init language

android init language

Android初始化语言init.rc 文件并不是普通的配置文件,而是由一种被称为“Android初始化语言”(Android Init Language,这里简称为AIL)的脚本写成的文件。

AIL由如下4部分组成:1. 动作(Actions)2. 命令(Commands)3.服务(Services)4. 选项(Options)这4部分都是面向行的代码,也就是说用回车换行符作为每一条语句的分隔符。

而每一行的代码由多个符号(Tokens)表示。

可以使用反斜杠转义符在Token中插入空格。

双引号可以将多个由空格分隔的Tokens合成一个Tokens。

如果一行写不下,可以在行尾加上反斜杠,来连接下一行。

也就是说,可以用反斜杠将多行代码连接成一行代码。

AIL的注释与很多Shell脚本一行,以#开头。

AIL在编写时需要分成多个部分(Section),而每一部分的开头需要指定Actions或Services。

也就是说,每一个Actions或Services确定一个Section。

而所有的Commands和Options只能属于最近定义的Section。

如果Commands和Options在第一个Section之前被定义,它们将被忽略。

Actions和Services的名称必须唯一。

如果有两个或多个Action或Service拥有同样的名称,那么init在执行它们时将抛出错误,并忽略这些Action和Service。

下面来看看Actions、Services、Commands和Options分别应如何设置。

Actions的语法格式如下:on <trigger><command><command><command>也就是说Actions是以关键字on开头的,然后跟一个触发器,接下来是若干命令。

例如,下面就是一个标准的Action。

on bootifup lohostname localhostdomainname localdomain其中boot是触发器,下面三行是command那么init.rc到底支持哪些触发器呢?目前init.rc支持如下5类触发器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android 初始化语言(init.*.rc、init.conf文件格式)基础篇Android初始化语言包含了四种类型的声明:Actions(行动)、Commands(命令)、Services(服务)和Options(选项)。

所有这些都是以行为单位的,各种记号由空格来隔开。

C语言风格的反斜杠号可用于在记号间插入空格。

双引号也可用于防止字符串被空格分割成多个记号。

行末的反斜杠用于折行。

注释行以井号(#)开头(允许以空格开头)。

Actions和Services声明一个新的分组。

所有的命令或选项都属于最近申明的分组。

位于第一个分组之前的命令或选项将会被忽略。

Actions和Services有唯一的名字。

如果有重名的情况,第二个申明的将会被作为错误忽略。

(???我们是否应该以覆盖来代替忽略)进阶篇Actions(行动)----------Actions其实就是一序列的Commands(命令)。

Actions都有一个trigger (触发器),它被用于决定action的执行时间。

当一个符合action触发条件的事件发生时,action会被加入到执行队列的末尾,除非它已经在队列里了。

队列中的每一个action都被依次提取出,而这个action中的每个command (命令)都将被依次执行。

Init在这些命令的执行期间还控制着其他的活动(设备节点的创建和注销、属性的设置、进程的重启)。

Actions的形式如下:on <trigger><command><command><command>Services(服务)----------Services(服务)是一个程序,他在初始化时启动,并在退出时重启(可选)。

Services(服务)的形式如下:service <name> <pathname> [ <argument> ]*<option><option>...Options(选项)----------Options(选项)是一个Services(服务)的修正者。

他们影响Services (服务)在何时,并以何种方式运行。

critical(关键)说明这是一个对于设备关键的服务。

如果他四分钟内退出大于四次,系统将会重启并进入recovery(恢复)模式。

disabled(失效)说明这个服务不会同与他同trigger(触发器)下的服务自动启动。

他必须被明确的按名启动。

setenv <name> <value> (设置环境变量)在进程启动时将环境变量<name>设置为<value>。

socket <name> <type> <perm> [ <user> [ <group> ] ]创建一个Uinx域的名为/dev/socket/<name> 的套接字,并传递它的文件描述符给已启动的进程。

<type> 必须是 "dgram"或"stream"。

User 和group默认为0。

user <username>在启动这个服务前改变该服务的用户名。

此时默认为root。

(???有可能的话应该默认为nobody)。

当前,如果你的进程要求Linux capabilities(能力),你无法使用这个命令。

即使你是root,你也必须在程序中请求capabilities(能力)。

然后降到你想要的 uid。

group <groupname> [ <groupname> ]*在启动这个服务前改变该服务的组名。

除了(必需的)第一个组名,附加的组名通常被用于设置进程的补充组(通过setgroups())。

此时默认为root。

(???有可能的话应该默认为nobody)。

oneshot服务退出时不重启。

class <name>指定一个服务类。

所有同一类的服务可以同时启动和停止。

如果不通过class选项指定一个类,则默认为"default"类服务。

onrestart当服务重启,执行一个命令(下详)。

Triggers(触发器)----------Triggers(触发器)是一个用于匹配特定事件类型的字符串,用于使Actions (行动)发生。

boot这是init执行后的第一个被触发的Triggers(触发器)。

(在/init.conf (启动配置文件)被装载之后)<name>=<value>这种形式的Triggers(触发器)会在属性<name>被设置为指定的<value>时被触发。

device-added-<path>device-removed-<path>这种形式的Triggers(触发器)会在一个设备节点文件被增删时触发。

service-exited-<name>这种形式的Triggers(触发器)会在一个特定的服务退出时触发。

Commands(命令)----------exec <path> [ <argument> ]*创建和执行一个程序(<path>)。

在程序完全执行前,init将会阻塞。

由于它不是内置命令,应尽量避免使用exec,它可能会引起 init卡死。

(??? 是否需要一个超时设置?)export <name> <value>在全局环境变量中设在环境变量 <name>为<value>。

(这将会被所有在这命令之后运行的进程所继承)ifup <interface>启动网络接口<interface>import <filename>解析一个init配置文件,扩展当前配置。

hostname <name>设置主机名。

chmod <octal-mode> <path>更改文件访问权限。

chown <owner> <group> <path>更改文件的所有者和组。

class_start <serviceclass>启动所有指定服务类下的未运行服务。

class_stop <serviceclass>停止指定服务类下的所有已运行的服务。

domainname <name>设置域名。

insmod <path>加载<path>中的模块。

mkdir <path> [mode] [owner] [group]创建一个目录<path>,可以选择性地指定mode、owner以及group。

如果没有指定,默认的权限为755,并属于root用户和root组。

mount <type> <device> <dir> [ <mountoption> ]*试图在目录<dir>挂载指定的设备。

<device> 可以是以 mtd@name 的形式指定一个mtd块设备。

<mountoption>包括 "ro"、"rw"、"remount"、"noatime"、 ...setkey待完成......(暂时不可用)setprop <name> <value>设置系统属性 <name> 为 <value>值.setrlimit <resource> <cur> <max>设置<resource>的rlimit(资源限制)。

start <service>启动指定服务(如果此服务还未运行)。

stop <service>停止指定服务(如果此服务在运行中)。

symlink <target> <path>创建一个指向<path>的软连接<target>。

sysclktz <mins_west_of_gmt>设置系统时钟基准(0代表时钟滴答以格林威治平均时(GMT)为准)trigger <event>触发一个事件。

用于将一个action与另一个 action排列。

(?????)write <path> <string> [ <string> ]*打开路径为<path>的一个文件,并写入一个或多个字符串。

Properties(属性)----------Init更新一些系统属性以提供对正在发生的事件的监控能力:init.action此属性值为正在被执行的action的名字,如果没有则为""。

mand此属性值为正在被执行的command的名字,如果没有则为""。

init.svc.<name>名为<name>的service的状态("stopped"(停止), "running"(运行), "restarting"(重启))实例篇init.conf实例-----------------1.# not complete -- just providing some examples of usage2.#3.on boot4. export PATH /sbin:/system/sbin:/system/bin5. export LD_LIBRARY_PATH /system/lib6.7. mkdir /dev8. mkdir /proc9. mkdir /sys10.11. mount tmpfs tmpfs /dev12. mkdir /dev/pts13. mkdir /dev/socket14. mount devpts devpts /dev/pts15. mount proc proc /proc16. mount sysfs sysfs /sys17.18. write /proc/cpu/alignment 419.20. ifup lo21.22. hostname localhost23. domainname localhost24.25. mount yaffs2 mtd@system /system26. mount yaffs2 mtd@userdata /data27.28. import /system/etc/init.conf29.30. class_start default31.32.service adbd /sbin/adbd33. user adb34. group adb35.36.service usbd /system/bin/usbd -r37. user usbd38. group usbd39. socket usbd 66640.41.service zygote /system/bin/app_process -Xzygote /system/bin--zygote42. socket zygote 66643.44.service runtime /system/bin/runtime45. user system46. group system47.48.on device-added-/dev/compass49. start akmd50.51.on device-removed-/dev/compass52. stop akmd53.54.service akmd /sbin/akmd55. disabled56. user akmd57. group akmd复制代码调试记录---------------在默认情况下,程序在被init执行时会将标准输出和标准错误都重定向到/dev/null(丢弃)。

相关文档
最新文档