本文是我在巩固android基础知识参考第一行代码第二版挑重点需理解手敲总结出来的知识点。希望能对大家有用!
1.1.1 安卓系统架构
**Android 四层架构**:
1,Linux内核层(android系统基于Linux内核,为安卓设备的各种硬件提供了底层驱动,比如音频,相机,蓝牙,WIFI,电源等)
2,系统运行库层(Android系统会通过一些C/C++库来支持我们使用的各个组件,使其能更好地为我们服务。每个Java程序都运行在Dalvik虚拟机之上。与PC一样,每个Android应用程序都有自己的进程,Dalvik虚拟机只执行.dex的可执行文件。当Java程序通过编译,最后还需要通过SDK中的dx工具转化成.dex格式才能正常在虚拟机上执行。)
3,应用框架层(这一层是编写Google发布的核心应用时所使用的API框架,开发人员同样可以使用这些框架来开发自己的应用,这样便简化了程序开发的架构设计,但是必须遵守其框架的开发原则,该应用程序重用机制也使用户可以方便的替换程序组件。)
4,应用层(应用是用Java语言编写的运行在虚拟机上的程序。其实Google最开始时就在Android系统中捆绑了一些核心应用,比如Email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序,等等。手机上的应用程序都是属于这一层的)
1.1.3 安卓开发特色
**四大组件**:
Activity(活动):凡是可以看到的东西都放在活动中
Service(服务):无法看到,在后台默默运行,即使退出应用,仍然继续运行
BroadcastReceiver(广播接收器):接收来自各处的广播信息,比如电话,短信等。也可以向外发出广播
Content Provider(内容提供器):应用程序之间共享数据,比如你想要读取系统电话簿中的联系人。
**SQLite数据库**:
安卓系统自带这种轻量级、运行速度极快的嵌入式关系数据库。
不仅支持标准的sql语法,还通过Android 封装好的API进行操作,让存储和读取数据方便。
1.2.1 准备所需工具开发
JDK: java语言的软件开发工具包(包含java的运行环境、工具集合、基础类库)
Android SDK: 谷歌提供的Android开发工具包,得引入该工具包来使用Android相关的API
Android Studio:开发工具
1.2.2 搭建开发环境
1.3.4分析第一个Android程序
1, .gradle 和 .idea
(Android Studio自动生成的一些文件,无需去看。也不要去编辑。哈哈哈)
2,build
(编译时自动生成的文件)
3,gradle
(包含了 gradle wrapper的配置文件,Android Studio默认没有启用gradle wrapper的方式)
4,build.gradle
(项目全局的构建脚本)
5,gradle.properties
(gradle的全局配置文件,在这里配置会影响到项目中所有的gradle编译脚本)
6,gradlew 和 gradlew.bat
(用来在命令行界面中gradle命令的,其中 gradlew是在Linux或者Max系统中使用的,gradlew.bat实在Window系统中使用的)
7,onegot.iml
(iml文件是所有IntelliJ IDEA项目自动生成的一个文件(Android Studio是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,我们不需要修改这个文件的任何内容)
8,local.properties
(这个文件是本机中的Android SDK路径,如果SDK路径有变化。可在这里修改,一般不去修改)
9,settings.gradle
(这个文件用于指定项目中所有引入的模块。正常情况下模块的引入都是自动完成的,)
10,app
(项目中的代码,后面开发就是在这里搞的)
1)build:与外层的build目录类似,主要也是包含了一些在编译时自动生成的文件,不过它里面的内容会更多更杂,我们不需要过多去关心
2)libs:如果项目中使用了第三方的jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都会自动添加到构建路径里去
3)androidTest:此处是用来编写测试用例的,可以对项目进行一些自动化测试。
4)java:放置我们所有的java代码的地方
5)res:放一些资源文件。图片、布局、文字等
6)AndroidManifest.xml:整个android项目的配置文件,四大组件都需要在这里注册,权限也要在这里声明,经常用到的文件。
7)test:此处用来编写Unit Test测试用例,对项目自动化测试的另一种方式
8).gitinore:这个文件用于将app模块内的指定的目录或文件排除在版本控制之外
9)app.iml:IntelliJ IDEA项目自动生成,我们不需要关心或者修改这个文件的内容
10)build.gradle:app模块的gradle构建脚本、这个文件夹中会指定很多项目构建的相关的配置
11)proguard-rules.pro:这个文件用于指定项目代码的混淆规则,当代码开发完成后大包成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读
1.3.6详解build.gradle文件
1,关于外部的build.gradle
buildscript {
repositories {
jcenter() //代码托管仓库
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
2,app目录下的build.gradle文件
apply plugin: 'com.android.application' //应用程序模块 com.android.library表示一个库模块
android {
compileSdkVersion 25 //指定项目的编译版本
buildToolsVersion "25.0.2" //指定项目构建工具的版本
defaultConfig { //对项目的更多细节进行配置
applicationId "com.example.shinelon.testasynctask" //项目包名
minSdkVersion 15 //最低兼容的Android系统版本
targetSdkVersion 25 //该目标版本上已做充分测试
versionCode 1 //项目版本号
versionName "1.0" //项目版本名称
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes { //生成安装文件的相关配置
release { //生成正式版的安装文件的配置(debug就生成测试版的安装文件的配置)
minifyEnabled false //是否对项目代码进行混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //混淆时使用的规则文件
}
}
}
dependencies { //当前项目所有依赖关系(三种依赖:本地依赖、库依赖、远程依赖)
compile fileTree(dir: 'libs', include: ['*.jar']) //本地依赖声明
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { //测试用例库(暂没用到)
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.1' //远程依赖声明
testCompile 'junit:junit:4.12'
}
1.4.1 使用android的日志工具Log
1)Log.v() 用于打印最为琐碎的,意义最小的日志信息。对应级别 verbose.是android日志里面级别最低的一种
2)Log.d() 用于打印一些调试信息,对调试程序和分析问题有帮助,对应级别 debug,比verbose高一级
3)Log.i() 用于打印一些比较重要的数据,这些数据是非常想看到的,可以帮我们分析行为数据。对应级别info,比debug高一级
4)Log.w() 用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好修复一下这些警告的地方,对应级别warn,比info高一级
5)Log.e() 用于打印程序中的错误信息,比如程序进入到了catch语句当中,当错误信息打印出来的时候,一般都代表是严重的问题,必须马上修复,对应级别error,比warn高一级
好了!安卓开发的旅程需要坚持!我决定继续努力坚持下去!你们也一样!哈哈哈哈哈