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表现形式为:

on

Services

--------

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

service [ ]*

...

Options

-------

Options是Services的修饰,它们影响init何时、如何运行service.

critical

这是一个设备关键服务(device-critical service) .如果它在4分钟内退出超过4次,设备将重启并进入恢复模式。

disabled

这个服务的级别将不会自动启动,它必须被依照服务名指定启动才可以启动。

setenv

设置已启动的进程的环境变量的值

socket [ [ ] ]

创建一个名为/dev/socket/的unix domin socket,并传送它的fd到已启动的进程。必须为"dgram"或"stream".用户和组默认为0.

user

在执行服务前改变用户名。当前默认为root.如果你的进程需要linux能力,你不能使用这个命令。你必须在还是root时请求能力,并下降到你需要的uid.

group [ ]*

在执行服务前改变组。在第一个组后的组将设为进程附加组(通过setgroups()).当前默认为root.

oneshot

在服务退出后不重启。

class

为service指定一个类别名。同样类名的所有的服务可以一起启动或停止。如果没有指定类别的服务默认为"default"类。

onrestart

当服务重启时执行一个命令。

Triggers

--------

Triggers(触发器)是一个字符串,可以用来匹配某种类型的事件并执行一个action。

boot

这是当init开始后执行的第一个触发器(当/init.conf被加载)

=

当property 被设为指定的值时触发。

device-added-

device-removed-

当设备节点被添加或移除时触发。

service-exited-

当指定的服务存在时触发

Commands

--------

exec [ ]*

Fork并执行一个程序().这将被block直到程序执行完毕。最好避免执行例如内建命令以外的程序,它可能会导致init被阻塞不动。

export

设定全局环境变量的值,当这个命令执行后所有的进程都可以取得。

ifup

使网络接口联机。

import

解析一个init配置文件,扩展当前配置文件。

hostname

设置主机名

chmod

改变文件访问权限

chown

改变文件所属和组

class_start

当指定类别的服务没有运行,启动该类别所有的服务。

class_stop

当指定类别的服务正在运行,停止该类别所有的服务。

domainname

设置域名。

insmod

加载该路径的模块

mkdir [mode] [owner] [group]

创建一个目录,可选选项:mod,owner,group.如果没有指定,目录以755权限,owner为root,group为root创建.

mount

[ ]*

尝试mount 到目录

. 可以用mtd@name格式以命名指定一个mtd

块设备。包含"ro","rw","remount","noatime".

setkey

暂时没有

setprop

设置系统property 的值.

setrlimit

设置resource的rlimit.

start

启动一个没有运行的服务。

stop

停止一个正在运行的服务。

symlink

创建一个的符号链接到

sysclktz

设置系统时区(GMT为0)

trigger

触发一个事件。用于调用其它action。

write [ ]*

打开的文件并写入一个或多个字符串。

Properties

----------

Init会更新一些系统property以提供查看它正在干嘛。

init.action

当前正在执行的action,如果没有则为""

https://www.360docs.net/doc/d915374829.html,mand

被执行的命令,如果没有则为""

init.svc.

命名为的服务的状态("stopped", "running", "restarting") init.rc 示例:

-----------------

# not complete -- just providing some examples of usage

#

on boot

export PATH /sbin:/system/sbin:/system/bin

export LD_LIBRARY_PATH /system/lib

mkdir /dev

mkdir /proc

mkdir /sys

mount tmpfs tmpfs /dev

mkdir /dev/pts

mkdir /dev/socket

mount devpts devpts /dev/pts

mount proc proc /proc

mount sysfs sysfs /sys

write /proc/cpu/alignment 4

ifup lo

hostname localhost

domainname localhost

mount yaffs2 mtd@system /system

mount yaffs2 mtd@userdata /data

import /system/etc/init.conf

class_start default

service adbd /sbin/adbd

user adb

group adb

service usbd /system/bin/usbd -r

user usbd

group usbd

socket usbd 666

service zygote /system/bin/app_process -Xzygote /system/bin --zygote socket zygote 666

service runtime /system/bin/runtime

user system

group system

on device-added-/dev/compass

start akmd

on device-removed-/dev/compass

stop akmd

service akmd /sbin/akmd

disabled

user akmd

group akmd

调试

---------------

默认情况下,init执行的程序输出的信息和错误到/dev/null.为了debug,你可以通过Android程序logwrapper执行你的程序。这将复位向输出/错误输出到Android logging系统(通过logcat访问)。

例如

service akmd /system/bin/logwrapper /sbin/akmd

Android开发入门教程经典解析-JAVA语言

Android入门教程之Java核心技术阶段初级课程,从知识分类来说,可以分为三个部分来说明: (一)基础语法: 讲解Java发展史,Java环境搭建,环境变量配置,Java程序的基本结构,java和javac命令的使用,Notepad++工具的使用,语法格式,变量和常量,二进制转换,运算符、表达式,分支结构和循环结构语句,数组与多维数组,冒泡排序,二分查找,随机生成一组不重复的数算法,通过模拟一个双色球案例,把基础语法容融会贯通,打下扎实的基础。 (二)面向对象: 讲解Java中的OOP/OOD/OOA的知识,深入讲解OOP的封装、继承、多态、抽象的概念与实际应用,涉及内容为类与对象的定义和关系,封装分别在Java EE开发和Android开发中的不同,对象的引用传递,对象的内存分配和GC,构造方法和匿名对象,如何开发和定义一个类,深入讲解String类的原代码原理内部实现、特性和内存管理,通过四种字符串连接时的场景分析来深入理解Java编译期和运行期的区别,String的相关操作方法;static 关键字,构造方法私有化,对象数组与动态数组的实现原理,链表数据结构,内部类及优缺点,在EE开发和Android开发的区别和经验;继承的思想,方法重写与重载,super关键字,抽象类、接口和多态的思想,以及真实环境中的应用,Object类,包装类与特性,包与修饰符;课程贯彻的设计模式有:单例模式、工厂模式、策略模式、适配器模式、模板方法模式、代理模式。以及OO设计中的六大原则。通过本节课程你可以彻底理解什么是面向对象编程,加以时日练习,必成大器。 (三)Eclipse与异常处理 异常的基本处理格式和5大关键字的联合使用,Java中异常处理的新特性,自定义异常类,编译时异常与运行时异常的区别,JVM对异常的处理过程,经过前两节课程共两周多的Notepad++写代码,已经达到了纯手写代码的目的,本节课程开始引入了99.9%的程序员都在使用的集成开发环境Eclipse,他对异常调试的强大支持,会让你叹为观止,当然Eclipse 不仅仅只有这些,在这里,你将一一学到。 Android入门教程之Java核心技术阶段中级课程,Java基础、面向对象、Java高级开发,讲解以下内容: (一)常用类库API与算法 讲解StringBuffer类的内部原理,分析原代码实现,与String的区别与应用经验,如何实现国际化程序,日期操作API,Comparable的两种实现,对象克隆,Arrays工具类、Math 工具类、Random类的使用,选择排序算法和二叉树数据结构实现,通过本节课程,你将学到常用类库API和工作中最最常见的排序算法和二叉树,本节过后,你的功力又增强了。 (二)IO与New IO

Java作为Android开发语言的原因

Java作为Android开发语言的原因 1 Java语言的影响及谷歌选择的原因 1.1 Java语言的影响 (1)JUnit 在这十年里,JUnit带来了测试驱动开发的普及浪潮。许多其它流行语言的单元测试版本也跟着被创造出来了,例如.NET、C、Python、Perl。 (2)Eclipse 刚进入20世纪,随着Java语言和它的API的成熟,EclipseIDE(集成开发环境)为程序员提供了一个帮助他们提高生产效率和融入到成长中的Java社区的环境。Eclipse也是第一个用SWT UI工具包的大型项目。Eclipse已经逐步向成为一个普及的集成开发环境的目标发展。现在它为集成平台插件提供了丰富的基础平台。 (3)Spring Spring框架在提高Java开发人员的生产效率方面扮演着一个重要的角色。它维持了简单和特点的平衡。Spring为Java开发人员提供了一套服务。这套服务提供了普遍使用的应用功能,例如数据访问和事务管理。作为Sun公司的企业JavaBean系统的竞争者,Spring为Java应用开发创造出了另外一个可选的简单的路径,同时也创造出了一个Java 应用开发思想上的健康竞争。 (4)Solr 多年来,Solr服务器(集成了Lucene搜索引擎)已经为web和企业应用提供了一个简单实用的搜索功能的解决方案。Solr 的特别之处在于它为强力和快速的Lucene搜索库提供了HTTP访问,使它能够成为任何系统的一部分,无论这系统是不是由Java实现。比其它项目好的地方,Solr已经使强力快速的搜索成为现代Web应用的一个可选项。 (5)Hudson and Jenkins 原名为Hudson,现在也叫Jenkins,这个持续集成工具是Java 开发设置的关键部分。Jenkins为软件项目提供了自动构建和测试。随着JUnit的测试持续集成,Jenkins在Java的平台上是敏捷研发成为可能。虽然Hudson和Jenkins现在集成在一起,但并没有偏离Kohsuke Kawaguchi的努力,Kohsuke使它成为世界级的持续集成平台,并提高了大部分Java研发的质量。 (6)Hadoop是著名的MapReduce模型的Java实现。它的强壮使得最大多数的“大数据”系统成为可能。通过降低从巨大的数据中抽取有价值的数据的成本,Hadoop 已经被大量使用,如Facebook用它来做海量数据分析,Yahoo!的个人和广告业务,还有很多其他的公司。 (7)Android Google选择用Java语言作为它十分流行的Android移动操作系统的编程语言。这个选择在整个件研发人员的社区中引起了新的关注。Android程序编译过程比普通Java程序要多经过一个步骤,将JVM二进制码转换成Dalvik二进制码。Google 已经可以利用Eclipse 为软件研发人员提供一个成熟的编写Android应用的开发环境。 1.2谷歌选择Java作为其开发Android的原因 Android支持使用Java作为编程语言来开发应用程序,而Android的Java开发方面从接口到功能,都有层出不穷的变化。考虑到Java虚拟机的效率和资源占用,谷歌重新设计了Android的Java,以便能提高效率和减少资源占用,因而与J2ME等不同。其中Activity等

如何向android的setting语言列表中添加一门语言

如何向android的setting语言列表中添加一门语言(已经解决) 看了下,android2.2系统有越南语的字库,所以支持越南语,但setting中语言列表里没有越南语选项,起初我在LocalePicker.java的onCreate方法的133行做了如下修改: 1.mLocales = new Loc[finalSize+1]; 2.for (int i = 0; i < finalSize ; i++) { 3.mLocales[i] = preprocess[i]; 4.} 5.Locale temp = new Locale("vi", "VN");//vi是越南语 6.mLocales[finalSize] = new Loc(toTitleCase(getDisplayName(temp)), temp); 7.Arrays.sort(mLocales); 复制代码 重新编译后,语言列表里有了越南语,但点击后系统语言还是默认的英文,也就是说系统语言没有更改成功,我再看了下/data/property/目录下关于语言和国家的两个属性文件都是修改成功了的,再继续往下跟代码,但没有所获,google了一下,搜到了一篇关于android2.1 架构解析之语言定制的帖子(https://www.360docs.net/doc/d915374829.html,/gigatron/blo ... c8ab20843bd0e24445d,有兴趣的朋友可以看下),里面说语言选择列表在external/icu4c/stubdata/Android.mk中配置,我在这里面添加了越南语,最后返回上一级,查看readme.txt,官方已经给出说明,改动后需要将语言配置的txt转成dat,可是在run icu_dat_generator.py 4.2这个命令时一直报错,到现在还没弄好,希望有涉及过这方面的朋友分享下经验,谢谢! 问题已经解决,解决步骤开始写在回复里,现在直接写到该位置吧: 第一种:修改配置文件 位置:build/target/product/languages_full.mk| languages_small.mk,这两个文件里头,有PRODUCT_LOCALES := en_US en_GB fr_FR it_IT es_ES es_US 这样的片段,其实setting中语言选择列表的数据源头就来源于此,既然找到了源头,那只要在之后加上我们想要的语言即可,比如要加越南语只要在后面加上“vi_VN”即可,但细心的同学打开这两个文件比较的时候会发现一个问题: 里面都有PRODUCT_LOCALES :=这样的片段,只是languages_small.mk 的语言要比前者少些,聪明,这就是答案,从命名上也可发现一个full一个small,当我们不需要更多的语言时候,那languages_small.mk里面的语言就可以满足,而且语言少,生成的image所占用的空间也会相对小些,没验证过哈,只是根据同目录下full.mk里的注释“Get a list of languages. We use the small list to save space on smaller devices.”推测的。 好了,接下来,会有一个问题就是在哪个地方去设置full还是small呢?刚提到一个full.mk的文件,这里面有这样的片段:$(call inherit-product, build/target/product/languages_small.mk),后者路径就是我们要设置的地方。好了,改好后,得整个make下,这个得花些时间,好多模块都是重新编译。 第二种:编码方式修改 Android里一个listview会对应一个数据数组,那我们只需在这个数组里按格式添加我们所需要的数据就行了,我们的目标是com.android.settings.LocalePicker.java,在

android开发笔记

实现直接拒接来电 经过简单的google/baidu后,发现android没有现成的API去拒接电话。android可以通过注册BroadcastReceiver截取短信,因为这个broadcast是一个ordered broadcast,所以只要优先级比短信接收程序高,就可以提前终止掉这个broadcast receiver。 但是,电话呼入则没有类似的机制。不过,综合网上的一些资料,通过以下大体的步骤,则可以实现拒接电话: 1、注册broadcast receiver,监视手机状态: Java代码 1. 2. 3. 4. 5. 当手机接收到电话时,则会触发该broadcast receiver。 2、最重要的,就是取得可以控制电话的API。这些API貌似是android内部的接口,并未暴露。具体方式参见该帖子:https://www.360docs.net/doc/d915374829.html,/u/20091226 ... d-586a278875c0.html 使用时需要手动添加import: Java代码 1.import com.android.internal.telephony.ITelephony; import com.android.internal.telephony.ITelephony; 同样的方式,在stackoverflow上也有人大致地提了下:https://www.360docs.net/doc/d915374829.html,/questio ...

安卓原生开发语言及优势分析

时代的发展和进步督促着我们一步步前进,只有不断的创新,企业才能进步发展。我们着眼于未来,积极发掘市场需求,这样,就可以使我们的企业走向长期的成功和繁荣。shenh uax2 AndroidAPP是一种手机应用软件,是使用在安卓手机上或者是Android系统的第三方应用程序。APP的英文Application的简称,通常是指iphone,安卓等手机应用软件,现在的APP多指智能手机的第三方应用程序。 目前国内的Android APP商店众多,新的十大安卓应用市场排名:360手机助手、百度手机助手、应用宝、豌豆荚、小米商店、安卓市场、91市场、淘宝手机助手、安智市场、移动MM市场。 安卓原生开发优势 1、Android是用户量多的移动操作系统 新中国智能手机市场报告, 2015年第一季度中国智能手机出货量同比增长了17%,总计达到1.1亿部。庞大的手机用户量为开发提供了良好的发展前景。 2、Android APP 推广相对容易 相较于苹果手机用户,安卓用户的下载就相对容易非常多,用户不仅可以通过应用商店下载您的应用,同时运营商能够通过二维码推广为用户提供推广途径,吸引更多用户下载。 3、Android 系统开放性高 相对苹果系统的全封闭式,安卓系统的高度开放,给了开发者相当高的开发自由度,您的应用可以更加接近您所想所要的。 4、安卓原生开发开发语言 安卓应用软件开发语言有C语言和其他语言,但是主流的开发语言是Java语言,使接口到功能,都有层出不穷的变化。提高了软件的交互的可能性是Java的特性,可以说安卓手机几乎所有的应用程序都是利用Java语言来进行编写的。使用Java语言开发的软件的程序库、数据库、运行库都是Android手机软件的一大特点。Java语言自身的优点也有很多,所以安卓应用软件的开发应用到了Java的核心类的知识量,这也让使用Java语言开发的安卓软件具备优势。 1、Java语言是发展快的程序语言,具有面向对象的特点,比较通俗易懂; 2、Java语言的显著特点就是简单,继承了C++语言的先进精华,是计算机程序语言发展的一大进步; 3、Java语言拥有独立的体系结构,可以不受限制,随意在任何系统当中运行,所以体系结构的中立决定了Java语言可以在不同的计算机结构中得以运行。使用Java语言开发的不同程序在不同结构的计算机显示的语言位数却是统一的。

android手机测试总结(笔记)

2012年3月21日 系统测试(非功能性测试) 1、适配性测试 a) 手机的型号 b) 网络通信情况(2G\3G\WIFI\飞行模式、NET\WAP、中国电信、移动、联通) c) Android的版本号(Android 4.0、Android 2.3、Android 2.2、Android 2.1)主要是2.2\2. 3.*\ 4.0 d) 屏幕的分辨率(1280×720、960×640、960×540、854×480、800×480、640×480、640×360、480×360、480×320、400×240、320×240、220×176、) 2、功能模块测试(功能性测试) a) 根据预先编写的测试用例测试 3、异常测试(手机交互性事件) a) *按键打断,如:电源键、home键、音量键、返回键等;插拔数据线 b) 其他程序后台相互切换

c) *网络切换(2G\3G\WIFI\飞行模式、NET\WAP、中国电信、移动、联通、) d) 待机后是否能恢复程序和网络 e) 短信、电话和闹铃 f) 安装、覆盖安装和卸载 g) 有无SIM卡、有无SD卡 4、编写帮助文档或使用说明 2012-6-28 用户体验测试 1、界面 ①文字错误、图片不显示或显示不正确、缺少输入项、按钮的大小和点击效果 ②布局、图片和配色设计问题,测试人员很难进入 ③提示信息,提示信息语言准确简洁,有指导性。在应该提示的位置放入提示信息,比如程序需要接入网络,在无网络的情况下应给予提示 ④提示信息,提示信息的方式有很多,大概有弹出式和非弹出式两种,根据实际情况来区分

⑤阅读性,手机因输入方式和屏幕大小限时,目前以阅读为主要(除聊天软件),做好阅读是关键。文字字体、大小、颜色和背景颜色可调整,夜间模式 ⑥简洁,看看any.do就知道什么是简洁了,如穿着白纱美女的油画一般 ⑦输入法,输入法不能挡住输入框;回车可以跳转到下一个输入框 2、稳定性 ①网络,需要访问网络的程序,在网络不稳定的情况下,应能正常运行,不应出现意外退出和错误;如程序无法在该环境下运行,应提示用户 ②网络切换,同上 ③网络信号弱,同上 ④进程切换,在多进程切换中,应正常运行,并保持切换前页面,不应出现意外退出和错误 3、性能 ①程序进行某些功能时,不应使手机出现卡、顿等情况,视实际情况而定 4、安装 ①路径,可选择手机、SD卡

(完整word版)按键精灵Android版MQ语言基础说明

按键精灵Android版:MQ 语言 MQ是按键精灵针对旗下移动产品而设计的全新脚本开发语言。语言支持全中文阅读脚本,上手简单,易学易用。MQ语言的基本特性如下: 1 数据类型 在MQ语言里,数据类型包括如下5种: Null : 不包含任何有效数据; Boolean:仅包含True和False两个常数; Integer:32位有符号整数,范围为-2,147,483,648 到2,147,483,647 之间; Float:双精度浮点数,负数范围从-1.79769313486232E308 到 -4.94065645841247E-324,正数范围从4.94065645841247E-324 到 1.79769313486232E308; String : 字符串。 MQ语言为动态类型,即定义变量时并不指定类型,在给变量赋值时才确定类型,并且类型随时可以通过赋值操作而变化。 常量 MQ语言中,用户可直接在脚本内写入没有命名的常量的,具体类型与写法如下: 整数型:可直接输出整数数字,如100;亦可加&H前缀,表明该常量为16进制数字,如&H64。浮点型:可直接输出小数点数字,如3.1415;亦可采用E分隔整数和底数部分,如314.15e-2。字符串型:凡采用一对双引号包含的内容均被视为字符串型常量。其中允许使用转义字符包括有:'\b' (退格),'\f' (表单),'\n' (换行),'\r' (回车),'\t' (横向制表),'\v' (纵向制表),'\\' (反斜杠),'\" '(双引号),以及'\' '(单引号)。另外也支持反斜杠

加数字来描述一个字符。(注意,如果需要在这种描述方法后接一个是数字的字符,那么反斜杠后必须写满三个数字)。 MQ语言中有一下已经预先定义好的常量,目标包括True和False(不区分大小写),今后还会增加。 变量 MQ语言的命名方式如下: 变量名不区分大小写,同时关键字(如If、Dim)与子程序的名字也无须区分大小写。 变量名、关键字及子程序的命名同时支持中文及英文,除了第一个字母外,后续内容还可以用数字。 变量在使用前必须用Dim语句定义,但Dim语句不必指定类型。声明多个变量时,使用逗号分隔变量。例如:Dim Top, Bottom, Left, Right, 上, 下, 左2, 右1。 变量的作用域由声明它的位置决定。如果在子程序中声明变量,则只有该子程序中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为局部变量。如果在子程序之外声明变量,则该变量可以被当前脚本的所有子程序所识别,称为全局变量。 变量还可以定义为数组的形式,数组可以是一维的,也可以是多维的,数组的每个维度的索引都是从0开始的正整数,当定义一维数组时,可以指定数组的初始元素个数,也可以不指定。如:Dim Array() Dim Array(10) 上述例子都可以定义一个一维数组。但即使指定了数组的初始元素个数,以后也可以随时增加新的元素(直接访问新的元素即可)。当定义多维数组的时候,则必须指定数组在每个维度的初始元素个数,各个维度的初始元素个数之间用逗号分隔,如:

安卓开发学习笔记

1.avd:android virtual device 2.5554:模拟器端口号 3.ddms 观察线程thread 堆栈heap 、file explorer、emulator control(模拟打电话发短信) 4.Extras文件夹拓展工具 5.Adb.exe: android debug bridge 安卓调试桥 6.Adb常用指令:(配置环境变量) 1)adb devices:列出所有连接设备 2)Reset adb:重启adb调试桥 3)Adb kill-server:杀死adb调试桥 4)Adb start-server:启动adb调试桥 5)Netstat -ano:查看端口号 ----------------------------------------------------------------------------------------- 7.Platforms是系统文件 8.Assets是资产目录存放在该文件夹下面这些文件会被打包到应用程序的apk 9.Bin 编译后的文件目录 10.Gen自动生成的其下的R.java的内容也是通过修改其他文件内容而自动生成 11.Android.jar基于此jar包的开发 12.Project.properties 代表编译的版本可以修改 13.Libs 支持jar 包会被添加到Android dependence(依赖)目

录下 14.Res 资源目录 15.Drawable存放应用程序图标会自动生成一个id 在R文件里 1)H high 高分辨率 2)M middle 中分辨率 3)L low 低分辨率 4)X extra large 特大分辨率 5)Xx 超大分辨率 16. R文件的作用:自动编译生成res文件中的ID 17.Android manifest:应用程序的清单文件 程序的配置信息启动的图标应用程序名称包名版本号 -------------------------------------------------------------------------------------- 18.Android下软件安装的过程: 1)拷贝xxx.apk到/data/app/xxx-1.apk 2)在data/data目录下创建一个文件夹文件夹名称是当前应 用程序的包名。 3)软件卸载的过程是相反的 19.system/app下安装的是系统自带的应用 20.Windows下注册表是通过数据库实现;Android下的注册表是用xml文件实现

android的多国语言适配

android多国语言文件夹 android多国语言文件夹文件汇总如下:(有些语言的书写顺序可能跟中文是相反的)中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-zh-rHK 英语(美国):values-en-rUS 英语(英国):values-en-rGB 英文(澳大利亚):values-en-rAU 英文(加拿大):values-en-rCA 英文(爱尔兰):values-en-rIE 英文(印度):values-en-rIN 英文(新西兰):values-en-rNZ 英文(新加坡):values-en-rSG 英文(南非):values-en-rZA 阿拉伯文(埃及):values-ar-rEG 阿拉伯文(以色列):values-ar-rIL 保加利亚文: values-bg-rBG 加泰罗尼亚文:values-ca-rES 捷克文:values-cs-rCZ 丹麦文:values-da-rDK 德文(奥地利):values-de-rAT 德文(瑞士):values-de-rCH 德文(德国):values-de-rDE 德文(列支敦士登):values-de-rLI 希腊文:values-el-rGR 西班牙文(西班牙):values-es-rES 西班牙文(美国):values-es-rUS

芬兰文(芬兰):values-fi-rFI 法文(比利时):values-fr-rBE 法文(加拿大):values-fr-rCA 法文(瑞士):values-fr-rCH 法文(法国):values-fr-rFR 希伯来文:values-iw-rIL 印地文:values-hi-rIN 克罗里亚文:values-hr-rHR 匈牙利文:values-hu-rHU 印度尼西亚文:values-in-rID 意大利文(瑞士):values-it-rCH 意大利文(意大利):values-it-rIT 日文:values-ja-rJP 韩文:values-ko-rKR 立陶宛文:valueslt-rLT 拉脱维亚文:values-lv-rLV 挪威博克马尔文:values-nb-rNO 荷兰文(比利时):values-nl-BE 荷兰文(荷兰):values-nl-rNL 波兰文:values-pl-rPL 葡萄牙文(巴西):values-pt-rBR 葡萄牙文(葡萄牙):values-pt-rPT 罗马尼亚文:values-ro-rRO 俄文:values-ru-rRU 斯洛伐克文:values-sk-rSK 斯洛文尼亚文:values-sl-rSI

【IT专家】初次是使用AndroidStudio用Kotlin语言新建Android项目

本文由我司收集整编,推荐下载,如有疑问,请与我司联系初次是使用AndroidStudio用Kotlin语言新建Android项目2017/07/08 506 1.首先我们得有AndroidStudio编译工具如果没有,可以在官网下载:https://developer.android.google/studio/index.html ?2.AndroidStudio中要有Kotlin插件如图: 如果还有不会下在插件的同学们请查看我前面的博客:Android Studio安装插件– blog.csdn/male09/article/details/68952350 或者还想了解更多的插件请查看我的:Android Studio插件整理– blog.csdn/male09/article/details/68952466 3.有了插件我们就得把我的的Activity转换成Kotlin 如图: 4.配置Kotlin: 自动配置有这几个方法: a.如果是第一次工具会提示你是否需要配置如图: 你可以点击配置: b.双击Shift配置Kotlin: 手动配置Kkotlin: a.在工程的build.gradle中配置 1.ext.kotlin_version = ‘你的kotlin配置版本’2.classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” ?//你通过kotlin直接赋值到xml文件中要配置一下 3. classpath “org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version” 下面是我的所有配置仅供参考: ?// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { ext.kotlin_version = ‘1.1.3-2’ repositories { jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:2.3.3’ classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” classpath “org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version” // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}allprojects { repositories { jcenter() }}task clean(type: Delete) { delete rootProject.buildDir} b.在工程的build.gradle中配置 1.apply plugin: ‘kotlin-android’ 2.apply plugin: ‘kotlin-android-extensions’3pile “org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version” 下面的代码仅供参考: ?apply plugin: ‘com.android.application’apply plugin: ‘kotlin-android’apply plugin:

第一行代码Android学习笔记完全版

第一行代码Android学习笔记 感谢《第一行代码》,感谢郭霖博主,拯救我于水火。之前看视频学习Android,自以为已经小成了。在网易工作的朋友问了我几个问题,我就懵逼了。然后,遇到了《第一行代码》,终于把我带进了Android的世界。好书,真的会醉人啊。 这是学习第二遍时的部分笔记,以备后用。 这是第二版,比第一版增加了一些常用的方法。 hujunjob 于北航 2015.04.02

目录 第一章Android系统 (6) 1.1 安卓系统架构 (6) 1.2 Android 项目中的资源 (6) 第二章Activity (6) 一、创建Activity步骤: (6) 二、采用Intent切换activity (7) 1、显式Intent (7) 2、隐式Intent (7) 3、隐式Intent的其他用法 (8) 三、Intent传递数据 (8) 1、向下一个activity传递数据 (8) 2、返回数据给上一个activity (8) 四、activity的生命周期 (9) 1、活动状态 (9) 2、activity生存期 (9) 3、activity被回收数据保存 (11) 五、activity的启动模式 (11) 六、activity最佳实践 (11) 1、知道当前页面是哪一个activity (11) 2、随时随地退出程序 (11) 3、给每个activity都添加一个合适的启动方法 (13) 第三章UI (13) 一、常用控件 (13) 1、TextView (13) 2、Button (13) 3、EditText (13) 4、ImageView (14) 5、ProgressBar (14) 6、AlertDialog (14) 7、ProgressDialog (15) 二、基本布局 (15) 1、LinearLayout (15) 2、RelativeLayout (15) 3、FrameLayout (15) 4、TableLayout (15) 5、GridLayout (16) 三、自定义控件 (16) 1、添加自定义标题布局(无操作的) (16) 2、创建自定义控件 (16) 四、ListView (17) 1、最简单的Adapter (17) 2、定制ListView界面 (18)

Android Alarm学习笔记

设置一个Alarm需要更新一下数据。 1. update alarms.db 2. update com.android.alarmclock_preferences.xml 3. update Settings.System.NEXT_ALARM_FORMATTED for status bar 4. set Kernel RTC alarm or send a message if no driver 具体的函数调用如下所示: com.android.alarmclock.AlarmClock.onCreate() -> SetAlarm.onPreferenceTreeClick() -> SetAlarm.saveAlarm() -> Alarm.setAlarm() -> Alarm.setNextAlert() -> Alarm.enableAlert(ALARM_ALERT_ACTION)/saveNextAlarm(Settings.System.NEXT _ALARM_FORMATTED) -> android.app.AlarmManager.set() -> AlarmManagerService.set() -> AlarmManagerService.setRepeating -> AlarmManagerService.setLocked() -> android.app.IAlarmManager.set() -> RTC.save()// /dev/alarms Alarm闹铃的函数调用如下所示: RTC (WAKEUP) -> AlarmReceiver.onReceive(ALARM_ALERT_ACTION) -> AlarmAlert.onCreate() -> AlarmAlertWakeLock.acquire()/KeyguardManager.newKeyguardLock().disableKeyg uard() -> AlarmKlaxon.postPlay() -> AlarmKlaxon.KillerCallback().onKilled() -> AlarmAlert.dismiss() -> AlarmAlertWakeLock.release()/KeyguardManager.newKeyguardLock().reenableKey guard() DeskClock App中的code block说明如下: Alarm是描述闹钟的抽象类。 AlarmAlert处理闹铃过程中系统相关的事件,继承AlarmAlertFullScreen。AlarmAlertFullScreen显示闹铃界面,并处理闹钟界面上到控件消息。AlarmAlertWakeLock提供控制wakelock接口。 AlarmClock闹钟界面,包括闹钟列表、数字时钟、option菜单。 AlarmKlaxon是一个服务,提供闹铃和震动功能,如果一个闹铃fire,前面一个闹铃已经在闹来,则取消前面那个,闹后来者。 AlarmPreference闹铃文件。 ContentProvider维护闹钟表,字段包括_id、hour、minutes、daysofweek、alarmtime、enabled、vibrate、message、alert。 Alarms提供了操作闹钟的接口,相当于AlarmManager。enableAlert()设置一个闹钟,用的是PendingIntent到方式计算时间。RTC的设置在enableAlert()的am.set(AlarmManager.RTC_WAKEUP, atTimeInMillis, sender); RTC_WAKEUP表示该Alarm如果在关机的情况下来到,则会自动开机闹铃。 DeskClock桌面时钟到activity。其中包括了系统时间、日期、电池及天气等信息,其中天气信息是判断是否存在提供天气信息的app后,从数据库中读取当前的天气信息来更新。也就

Android 系统语言简写大全

Android 系统语言简写大全 今天我给大家分享一下Android系统语言的简写大全,这个主要就是让大家更多的了解android,也没有什么知识点,那么我们现在就开始和大家一下分享一下吧: Java代码: Arabic, Egypt (ar_EG) Arabic, Israel (ar_IL) Bulgarian, Bulgaria (bg_BG) Chinese, PRC (zh_CN) Chinese, Taiwan (zh_TW) Croatian, Croatia (hr_HR) Czech, Czech Republic (cs_CZ) Danish, Denmark (da_DK) Dutch, Netherlands (nl_NL) Dutch, Belgium (nl_BE) English, US (en_US) English, Britain (en_GB) English, Canada (en_CA) English, Australia (en_AU) English, India (en_IN) English, Ireland (en_IE) English, New Zealand (en_NZ) English, Singapore (en_SG) English, South Africa (en_ZA) Finnish, Finland (fi_FI) French, France (fr_FR) French, Belgium (fr_BE) French, Canada (fr_CA) French, Switzerland (fr_CH) German, Germany (de_DE) German, Austria (de_AT) German, Switzerland (de_CH) German, Liechtenstein (de_LI) Greek, Greece (el_GR) Hindi, India (hi_IN) Hungarian, Hungary (hu_HU) Indonesian, Indonesia (id_ID) Italian, Italy (it_IT) Italian, Switzerland (it_CH) Japanese, Japan (ja_JP) Korean, Korea (ko_KR) Latvian, Latvia (lv_LV) Lithuanian, Lithuania (lt_LT) Norwegian Bokm?l, Norway (nb_NO) Polish, Poland (pl_PL) Portuguese, Brazil (pt_BR) Portuguese, Portugal (pt_PT) Romanian, Romania (ro_RO) Russian, Russia (ru_RU) Serbian, Serbia (sr_RS) Slovak, Slovakia (sk_SK) Slovenian, Slovenia (sl_SI) Spanish, Spain (es_ES) Spanish, US (es_US) Swedish, Sweden (sv_SE) Thai, Thailand (th_TH) Tagalog, Philippines (tl_PH) Turkish, Turkey (tr_TR) Ukranian, Ukrania (uk_UA) Vietnamese, Vietnam (vi_VN)

Android学习笔记

Android学习笔记(by quqi99 MSN: quqi99@https://www.360docs.net/doc/d915374829.html,)Android platform是一个用于开发移动程序的软件包,它包括了操作系统、中间件及一些关键应用。开发者能使用android SDK为Android platform开发应用,这些应用使用JA V A 语言书写,运行在虚拟机Dalvik(一个专为手机程序开发的基于linux内核的JA V A虚拟机)。 https://www.360docs.net/doc/d915374829.html,/wiki/index.php?title=%E7%BF%BB%E8%AF%91%E4%BB%BB %E5%8A%A1%E9%A2%86%E5%8F%96&printable=yes https://www.360docs.net/doc/d915374829.html,/forumdisplay.php?fid=2 1 什么是Android 1.1 Android的特性 ?应用框架,让一些基础设施得以重用 ?Dalvik虚拟机,专为开发移动程序优化 ?集成的浏览器,(基于WebKit引擎) ?优化的图形库,(2D图形库以及基于OpenGL ES 1.0规范的3D图形库) ?SQLite,用于结构化数据的存储,是一个数据库 ?多媒体支持,支持多种音频,视频格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) ?GSM技术(依赖具体硬件) ?Bluetooth, EDGE, 3G, WiFi(依赖具体硬件) ?Camera, GPS, compass, accelerometer(依赖具体硬件) ?丰富的开发环境(DEBUG工具,内存及性能工具,Eclipse的插件等) 1.2 Android的架构 Android操作系统的模块如下:

android+添加波斯语与新添加一种系统不带的语言方法

如何添加一种新语言 钟斌 2011-12-16 前些时候,因为客户要求加波斯语,但是目前android2.3.1并没有这种语言,在客户要求一定要有波斯语的情况,经过长时间的摸索与在网上求助,终于将波斯语给加出来了。 下面讲讲新增加一种语言的步骤: 1.在sdkDemo.mk 中添加语言和国家的国际化的缩写代码,如伊朗:IR表示,波斯语用 fa表示,这是国际化的标准,不可以随便写的。如果不知道国家与地区的缩写,可以去网上找找。 PRODUCT_LOCALES := fa_IR en_US zh_CN en_GB fr_FR it_IT es_ES …….. sdkDemo.mk的路径为:gingerbread\device\rockchip\sdkDemo\sdkDemo.mk. 2.在framework/base/data/font目录下添加波斯语的字库,如 DroidSansArabic.ttf 3.字库加完后,就要去调用字库了,调用字库的文件是在 external/skia/src/ports/SKFontHost-android.app下, static const FontInitRec gSystemFonts[] = { { "DroidSans.ttf", gSansNames }, ……… { "DroidSansArabic.ttf", gFBNames }, 4.字库准备好了,还有一些makefile需要修改了。在 external/icu4c/studata/ Android.mk下: config := $(word 1, \ $(if $(findstring ar,$(PRODUCT_LOCALES)),large) \ $(if $(findstring fa,$(PRODUCT_LOCALES)),large) \ 5. 在frameworks/base/core/res/res/下新增加一个values-fa-rIR的文件夹,并新建一个strings.xml文件。 6. 上面五步加完后,在settings→Language&keyboard→Select language 列表下就会出现波斯语这个选项了,但是选了波斯语后,并没有出现波斯语文字。这时就需要在相应的APP下的res/下新建values-fa-rIR的文件夹,并翻译strings.xml文件即可。如主app的strings.xml路径为: gingerbread\packages\apps\Desktop2D_mbx_new\res\values-fa-rIR \strings.xml

相关文档
最新文档