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'}新闻热点
疑难解答