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'
}