1.Android中的应用程序都是Java开发的。
2.Android系统架构(四层架构)
-
Linux内核层
Android操作系统是基于Linux开发的。这一层为Android设备的各种硬件提供了底层的驱动。
-
系统运行库层
- C/C++库为Android系统提供了主要的特性支持(数据库、3D绘图、浏览器内核等)。
- Android运行时库。
- 提供了一些核心库,能够允许使用Java语言来编写Android应用
- Dalvik虚拟机(5.0系统之后改为ART运行环境),使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例
-
应用框架层
这一层主要提供了构建应用程序时可能用到的各种API。
-
应用层
安装在手机上的应用程序都属于这一层。
3.Android主要内容
-
四大组件
活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)、内容提供者(Content Provider)
-
丰富的系统控件
-
SQLite数据库
-
地理位置定位
-
强大的多媒体
-
传感器
4.开发环境
-
JDK
是Java语言的软件开发工具包,它包含了Java的运行环境、工具集合、基础类库等内容。
-
Android SDK
是谷歌提供的Android开发工具包,用来提供Android相关的API
-
Eclipse+ADT(过时了)
-
Android Studio
5.创建项目
- Application Name:代表应用名称
- Project Name:代表项目名称
- Package Name:代表项目的包名。包名具有唯一性:Android系统是通过包名来区分不同应用程序的
- Minimum Required SDK:代表程序最低兼容的版本
- Target SDK:代表在该目标版本上已经做过了充分的测试,系统不会再这个版本上做向前兼容的操作了
- Compile With:代表程序将使用哪个版本的SDK进行编译
- Theme:代表程序UI所使用的主题
- Company Domain:代表公司域名
- Project location:代表项目代码存放的位置
6.分析Android项目目录结构
-
Eclipse(过时了):
-
src:存放所有Java代码的地方
-
gen:存放的内容都是自动生成的。主要有一个R.java文件,在项目中添加的任何资源都会在其中生成一个相应的资源id
-
assets:存放一些随系统程序打包的文件,在程序运行时可以动态读取到这些文件的内容
-
bin:存放了一些在编译时自动产生的文件。其中会有一个当前项目编译好的安装包
-
libs:存放第三方Jar包,放在这个目录下的Jar包都会被自动添加到构建路径里去
-
res:存放项目中使用到的所有图片、布局、字符串等资源。
子目录:
- drawable:存放图片
- layout:存放布局
- values:存放字符串
-
AndroidManifest.xml:整个Android项目的配置文件。用来注册程序中定义的所有四大组件、给应用程序添加权限声明、指定创建项目时指定的程序最低兼容版本和目标版本
-
project.properties:指定编译程序时所使用的SDK版本
-
-
Android Studio:
- .gradle和.idea: 存放的都是Android Studio自动生成的一些文件
- app:存放项目中的代码、资源等内容
- build:主要存放一些在编译时自动生成的文件
- libs:存放项目中使用到的第三方Jar包。放在这个目录下的jar包都会被自动添加到构建路径里去
- androidTest:用来编写Android Test测试用例的
- java:存放所有Java代码的地方
- res:存放在项目中使用到的所有图片、布局、字符串等资源
- AndroidManifest.xml:整个Android项目的配置文件。用来注册程序中定义的所有四大组件,给应用程序添加权限声明
- test:用来编写Unit Test测试用例
- .gitignore:用于将app模块内的指定的目录或文件排除在版本控制之外
- app.iml:IntelliJ IDEA项目自动生成的文件
- build.gradle:app模块的gradle构建脚本,指定项目构建相关的配置
- proguard-rules.pro:用于指定项目代码的混淆规则
- build:主要存放一些在编译时自动生成的文件
- gradle:主要存放gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle
- .gitignore:用来将指定的目录或文件排除在版本控制之外的
- build.gradle:项目全局的gradle构建文件
- gradle.properties:全局的gradle配置文件
- gradlew和gradlew.bat:用来在命令行界面中执行gradle命令的。gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。
- HelloWorld.iml:iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio是基于IntelliJ IDEA开发的),用来标识这是一个IntelliJ IDEA项目
- local.properties:用来指定本机中的Android SDK路径
- settings.gradle:用来指定项目中所有引入的模板
-
项目中的资源:res目录
-
所有以drawable开头的文件夹:
放图片。(为了兼容各种设备,drawable-hdpi、drawable-xhdpi、drawable-xxhdpi)
-
所有以mipmap开头的文件夹:
放应用图标。(为了兼容各种设备,mipmap-mdip、mipmap-hdip、mipmap-xhdip、mipmap-xxhdip、mipmap-xxxhdip)
-
所有以values开头的文件夹:
放字符串、样式、颜色等配置
- layout文件夹:放布局文件
- menu文件夹:菜单文件
-
使用这些资源:两种方式引用它们
例如,string.xml中的字符串
- 在代码中:R.string.key可以获得该字符串的引用
- 在XML中:@string/key可以获得该字符串的引用 其他同理,只需将string部分替换(drawable、layout......)
-
-
详解build.gradle文件
- 最外层目录下的build.gradle文件
-
repositories闭包:
jcenter():jcenter是一个代码托管仓库,很多Android开源项目都会选择将代码托管到jcenter上。声明jcenter()后就可以引用jcenter上的开源项目
-
dependencies闭包:
使用classpath声明了一个Gradle插件
-
- app目录下的build.gradle文件
-
apply plugin:
有两个值可选。
com.android.application表示这是一个应用程序模块,是可以直接运行的 com.android.library表示这是一个库模块,只能作为代码库依附于别的应用程序模块来运行 -
android闭包:配置项目构建的各种属性
- compileSdkVersion:指定项目的编译版本
- buildToolsVersion:指定项目构建工具的版本
- defaultConfig闭包:
- applicationId:指定项目的包名
- minSdkVersion:指定项目最低兼容的Android系统版本
- targetSdkVersion:指定的值表示项目在该目标版本上已经做过了充分的测试,系统将会为应用程序启用一些最新的功能和特性
- versionCode:指定项目的版本号
- versionName:指定项目的版本名
- buildTypes闭包:指定生成安装文件的相关配置
-
debug闭包:指定生成测试版安装文件的配置
-
release闭包:指定生成正式版安装文件的配置
minifyEnabled:指定是否对项目的代码进行混淆,true表示混淆,false表示不混淆 proguardFiles:指定混淆时使用的规则文件,proguard-android.txt是在Android SDK目录下的,里面是所有项目通用的混淆规则;proguard-rules.pro是在当前项目的根目录下的,里面可以编写当前项目特有的混淆规则。
-
-
dependencies闭包:指定当前项目所有的依赖关系
-
本地依赖:对本地的Jar包或目录添加依赖关系
compile fileTree(dir: ‘libs’, include:[‘*.jar’])
本地依赖声明,表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径当中 -
库依赖:对项目中的库模块添加依赖关系
compile project(‘:helper’),库依赖声明
-
远程依赖:对jcenter库上的开源项目添加依赖关系
compile ‘com.android.support:appcompat-v7:24.21’,远程依赖声明
com.android.support是域名部分,用于和其他公司的库做区分 appcompat-v7是组名称,用于和用一个公司中不同的库做区分 24.2.1是版本号,用于和同一个库不同的版本做区分 -
testCompile:声明测试用例库
-
-
- 最外层目录下的build.gradle文件
7.日志工具Log
日志工具类是Log(android.util.Log)
Log.v():verbose
Log.d():debug
Log.i():info
Log.w():warn
Log.e():error
Log.d(tag, msg):第一个参数tag,用于对打印信息进行过滤;第二个参数msg,想要打印的具体的内容