Android基礎1

Android架構

  1. Linux內核層(Linux Kernel)
    Linux內核 + Driver

  2. 系統運行層庫(Libraries + Android runtime)
    Libraries是C/C++編寫的程序庫,Android runtime是java虛擬機
    包括View、Content Providers、Resource Manager、Notification Manager、Activity Manager等

  3. 應用框架層(Application Framework java語言編寫)
    提供了構建應用程序時可能用到的各種API

  4. 應用層(Application java語言編寫)
    手機上的應用程序

Android開發需要工具

  1. JDK
    java語言軟件開發工具包,包含了Java的運行環境、工具集合、基礎類庫等內容。

  2. Android SDK
    Android開發工具包

  3. Android Studio
    Android開發環境IDE

Android程序結構

AS目錄結構圖

.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'
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章