Android入门基础知识总结(一)Android Studio相关介绍

本文基于《第一行代码》一书进行总结。

Android系统架构

Linux内核层、系统运行库层、应用框架层、应用层。

Android程序分析

.gradle和.idea

这两个目录下放置的都是Android Stdio自动生成的文件,不需要手动编辑。

app

存放项目中的代码、资源。

  • build:和外层build目录类似,主要包含一些编译时自动生成文件
  • libs:用于存放第三方jar包
  • androidTest:用于编写Android Test测试用例,可对项目进行自动化测试
  • java:用于存放所有Java代码
  • res:项目中所有图片、布局、字符串等资源。图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下
  • AndroidManifest.xml:整个Android项目的配置文件,用于注册四大组件、添加权限声明等
  • test:用来编写Unit Test测试用例,是对项目进行自动化测试的另一种方式
  • .gitignore:同外层.gitignore文件类似,用于将app模块内制定的目录或文件排除在版本控制之外
  • app.iml:IntelliJ IDEA自动生成文件
  • build.gradle:app模块的gradle构建脚本,后面将详细分析
  • proguard-rules.pro:用于指定项目代码的混淆规则

build

编译时自动生成的文件存放目录。

gradle

gradle wrapper配置文件目录。使用gradle wrapper方式不需要提前将gradle下载好,会自动根据本地的缓存情况决定是否需要联网下载gradle。可以点击File->Settings->Build,Execution,Deployment->Gradle进行配置更改。

.gitignore

此文件用来将指定的目录或文件排除在版本控制之外。

build.gradle

项目全局gradle构建脚本,通常不需要修改。

gradle.properties

全局gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。

gradlew和gradlew.bat

用来在命令行界面中执行gradle命令,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的

项目名.iml

Android Studio基于IntelliJ IDEA开发,所有IntelliJ IDEA项目都会自动生成一个文件用于标识,不需要修改任何内容。

local.properties

用于指定本机中Android SDK路径,通常自动生成不需要修改。

settings.gradle

用于指定项目中所有引入的模块。

res详解

drawable:存放图片

mipmap:存放图标,不同mipmap文件夹用于存放不同分辨率版本的图片

values:存放字符串、样式、颜色等配置,引用字符串的两种方式如下:

  • 在代码中通过R.string.app_name来获得该字符串的引用
  • 在XML中通过@string/app_name来获得该字符串的引用

layout:存放布局文件

build.gradle文件详解

Gradle是一个非常先进的项目构建工具,下面对最外层目录以及app目录下的build.gradle文件分别进行分析

最外层目录下的build.gradle文件

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

 两处repositories闭包中都声明了jcenter(),它是一个代码托管仓库,很多Android开源项目都会选择将代码托管到jcenter上,声明以后可以在项目中引用jcenter上的开源项目。

由于Gradle不是专门为构建Android项目而开发的,所以dependencies闭包中使用classpath声明了一个Gradle插件,最后部分是插件的版本号。

app目录下的build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 15
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

 第一行一般有两种值可选:com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块。应用程序模块和库模块最大的区别在于可以直接运行与只能作为代码库依附于别的应用程序模块运行。

android闭包可以配置项目的各种属性。

  • compileSdkVersion:用于指定项目的编译版本
  • buildToolsVersion:用于指定项目构建工具的版本
  • defaultConfig闭包:项目细节配置
  • buildTypes闭包:用于指定生成安装文件的相关配置

dependencies闭包:用来指定当前项目所有的依赖关系,通常有三种依赖:本地依赖、库依赖、远程依赖。关于依赖的详细介绍暂时省略。

主活动注册


    
        
        
    
 

日志工具

日志的5个方法

  • Log.v():用于打印最为琐碎、意义最小的日志信息,对应级别verbose,是Android日志里级别最低的一种
  • Log.d():用于打印一些调试信息,对应级别debug
  • Log.i():用于打印一些比较重要的数据,应该是非常想看到的、可以帮助分析用户行为数据,对应级别info
  • Log.w():用于打印警告信息,提示程序在这个地方可能有潜在风险,对应级别warn
  • Log.e():用于打印错误信息,比如程序进入了catch语句,对应级别error

运行程序快捷按钮:Shift+F10(Mac系统是control+R)

你可能感兴趣的:(Android学习笔记)