Android第一天
来源:互联网 发布:springboot 初始化sql 编辑:程序博客网 时间:2024/06/06 03:28
Jvm 和dvm的区别:
1. jvm是面向pc机的,dvm是面向手机的
2. 运行java程序 java---.class ---jar
手机上 .java ---.classs-----.dex------.odex
3. jvm运行在内存上,而dvm运行在寄存器上 寄存器在cpu上
Android的系统架构
- 设备驱动程序层(Linux Kernel):该层主要包括:驱动、内存管理、进程管理、网络协议等组件。
- 执行层c/c++函数库层(Libraries)及Android Runtime:
- Java不能直接访问硬件,要访问硬件,必须使用NDK。NDK是由c/c++语言编写的库(.so文件),该层是对应用程序框架层提供支持的层。
- SSL:Secure Sockets Layer安全套接字层
- libc:C运行时库
- WebKit:负责浏览器支持(Chrome和Safari都使用该库来支持浏览器)
- FreeType:负责字体支持
- 应用程序框架层(Application FrameWork):该层一般都是开发人员直接调用的API。该层主要由Java语言编写。
- 应用程序层(Applications):由运行在Dalvik虚拟机上的app组成。(Dalvik是Google公司为Android专门设计的Java虚拟机,运行Java程序的速度比JVM更快,以此来克服手持设备在内存、处理器速度和功率等方面上的限制)。该层由Java语言编写。
- Dalvik是冰岛一个小镇的名字。Dalvik VM获取生成的java类文件,将它们组合为一个或者多个、Dalvik可执行文件(.dex)。Dalvik VM的目标是找到所有可能的方式来优化JVM性能、内存及电池寿命。
- 采用Dalvik VM的一个结果是,Android中最终的可执行程序代码不是java字节码,而是.dex文件。这意味着无法直接执行java字节码,必须得到java的类文件,然后将它们转换为.dex文件。
项目目录介绍:
- src(开发人员源码放置目录)
- gen(自动生成R.java,所有的资源文件都会在R.java文件中以final static 内部类的形式被注册。所以可以通过R..id,R.layout等形式来访问资源。)
- assets(资产目录。在这个目录中放置的资源文件,不会在R.java文件中被注册,也就是不会生成资源id。一般程序中的音频或视频文件可以放置在这个目录下。这个目录支持任意深度的子目录,而res资源目录则不可以。)
- bin(编译后的class等文件在此目录。系自动生成)
- libs(项目自动生成)
- res(资源文件。是Android编程中最重要的目录。所有的资源都定义在这个目录下。)
- drawable(图片放置的目录)【备注:android中不允许图片资源的文件名中出现大写字母,并且不能以数字开头】
- layout(布局文件放置的目录)
- menu(菜单文件放置的目录)
- values(字符串、尺寸等文件放置的目录)
- AndroidManifest.xml (Android清单文件——是Android开发中非常重要的文件。
- 该文件中定义了本App的版本号;
- 适用的手机操作系统最大及最小的兼容版本号;
- 整个项目中每写一个组件(Activity、Service、Broadcast),都需要在该清单文件中注册;
- 运行本程序的权限等等。
【备注:】res和assests目录的不同:
- 是否在R.java文件中被注册;
- res所放的文件类型是规定好的;而assests目录下放置的文件类型不限制;
- 访问方法不同。res中文件使用R.内部静态类.id来访问;而assest中的文件通过IO流来访问。
0 0
- Android的第一天
- Android第一天
- Android学习第一天
- android学习第一天
- Android第一天
- Android 布局第一天
- android 第一天课程
- android培训第一天
- android入门第一天
- android第一天
- Android学习第一天
- Android 开发第一天
- Android学习第一天
- Android开发第一天
- Android 学习第一天
- android自学第一天。
- android第一天
- Android 学习第一天
- ffmpeg2.6.2在Ubuntu下使用NDK编译成.so文件
- In App Purchases 入门
- ios学习(七)MBProgressHUD特效
- for循环体条件里面的变量没有声明类型的悲剧
- linux mysql 操作命令
- Android第一天
- Linux - Socket网络套接字
- Eclipse4.2.0安装插件checkstyle
- 关于python2.7中matplotlib模块的安装
- Struts2使用注解,完成请求响应,实现零配置
- Facebook POP动效库使用教程
- extjs gridpanel动态列和数据
- 《剑指Offer》学习笔记--面试题47:不用加减乘除做加法
- sql 连接池