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'}新聞熱點
疑難解答