Android架构
Linux内核层(Linux Kernel)
Linux内核 + Driver系统运行层库(Libraries + Android runtime)
Libraries是C/C++编写的程序库,Android runtime是java虚拟机
包括View、Content Providers、Resource Manager、Notification Manager、Activity Manager等应用框架层(Application Framework java语言编写)
提供了构建应用程序时可能用到的各种API应用层(Application java语言编写)
手机上的应用程序
Android开发需要工具
JDK
java语言软件开发工具包,包含了Java的运行环境、工具集合、基础类库等内容。Android SDK
Android开发工具包Android Studio
Android开发环境IDE
Android程序结构
.gradle AndroidStudio自动生成文件
.idea AndroidStudio自动生成文件
app
-build 编译时自动生成的文件
-libs 第三方jar包的存储目录,该目录下的jar包会自动添加到构建目录中
-src
-main
-java 代码目录
-res 资源目录
-drawable 图片资源
-layout 布局资源
-mipmap 适配图片资源
-values string,color,dimen,styles等
-AndroidManifest.xml Android项目的配置文件,四大组件的声明,添加权限声明等
-.gitignore app模块内将指定的文件或目录排除在版本控制之外的文件
-app.iml iml是所有Intellij IDEA项目都会自动生成的一个文件
-build.gradle app模块的gradle构建脚本
-proguard-rules.pro 指定项目代码中的混淆规则
build 编译时自动生成的文件
gradle 包含了Gradle wrapper的配置文件
.gitignore将指定的文件或目录排除在版本控制之外的文件
项目名.iml iml是所有Intellij IDEA项目都会自动生成的一个文件
build.gradle 项目全局的gradle构建脚本
gradle.properties 全局的gradle的配置文件
gradlew 用来在命令行界面执行gradle命令的(Linux下用)
gradlew.bat 用来在命令行界面执行gradle命令的(Windows下用)
local.properties 指定本机的Android SDK的路径,自动生成
settings.gradle 用于指定项目中所有引入的模块
build.gradle文件
全局项目gradle脚本
buildscript {
repositories {
jcenter()//代码托管仓库,声明后可以轻松引用jcenter上的开源项目
}
dependencies {
//声明了Gradle插件
classpath 'com.android.tools.build:gradle:2.3.0-beta3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
app模块的gradle脚本
apply plugin: 'com.android.application'//标明该moudle是一个程序模块,可以直接运行.com.android.library标明是库模块,要依赖其他程序才可以运行
android {
compileSdkVersion 25 //项目的编译版本
buildToolsVersion "25.0.0" //构建工具的版本
defaultConfig {
applicationId "com.hblolj.androidft" //项目的包名
minSdkVersion 14 //最低兼容的Android系统版本
targetSdkVersion 25 //目标Android系统版本
versionCode 1 //版本号
versionName "1.0" //版本名
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false //不混淆
//混淆时使用的规则文件 proguard-android.txt是在Android SDK下,是所有项目通用的混淆规则
//proguard-rules.pro在项目的根目录下,可以编写当前项目的混淆规则
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.0.0'
compile 'com.android.support:design:25.0.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha4'
testCompile 'junit:junit:4.12'
}