第一行代码 第一章 你的第一个android 项目

一.创建第一个Android项目

在这里插入图片描述在这里插入图片描述在这里插入图片描述

创建成功分析Android 工程:

下面介绍整个项目的外层目录结构。

.gradle和.idea
Android Studio自动生成的文件,无需关心

app
项目的代码和资源文件

build
包含编译时自动生成的文件

gradle
包含gradle wrapper的配置文件

.gitgnore
将指定的目录或文件排除在版本控制之外

build.gradle
项目全局的gradle构建脚本,一般都不需要修改

gradle.properties
全局的gradle配置文件,直接影响项目中所有的gradle编译脚本

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

HelloWorld.iml
iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件,用于标识这是一个IntelliJ IDEA项目,无需修改该文件中的任何内容。

local.properties
用于指定本机中SDK的路径,自动生成,无需修改。

settings.gradle
指定项目中所有引入的模块

app 目录下的工程分析:

下面详细介绍下app目录下的内容

build
编译时自动生成的文件,无需关心

libs
存放第三方jar包,放在该目录下的jar包会自动添加到构建路径中去。

androidTest
编写Android Test测试用例,对项目进行一些自动化测试。

Java
存放所有Java代码

res
存放项目中所有图片、布局、字符串等资源文件

AndroidManifest.xml
Android项目配置文件

test
编写Unit Test 测试用例,是对项目进行自动化测试的另一种方式

.gitgnore
将app模块内指定的目录排除在版本控制之外

app.iml

IntelliJ IDEA项目自动生成的文件

build.gradle
app模块的gradle构建脚本

proguard-rules.pro
指定项目代码的混淆规则

详解build.gradle文件

最外层目录下的build.gradle文件,代码如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    
    
    repositories {
    
    
        google()
        jcenter()
        
    }
    dependencies {
    
    
        classpath 'com.android.tools.build:gradle:3.5.3'
        
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    
    
    repositories {
    
    
        google()
        jcenter()
    }
}

这些代码都是自动生成的,通常情况下不需要修改这个文件中的内容。两处repositories闭包中都声明了jcenter(),jcenter是一个代码托管仓库,从而使得我们在项目中可以引用任何jcenter上的开源项目。dependencies闭包中使用classpath声明了一个Gradle插件,因为Gradle并不是专门为构建Android项目而开发的,Java、C++等很多种项目都可以使用Gradle来构建。如果想要使用Gradle来构建Android项目,则需要声明com.android.tools.build:gradle:3.5.3这个插件,其中,后面是插件的版本号。

app目录下的build.gradle文件

apply plugin: 'com.android.application'

android {
    
    
    compileSdkVersion 29
    buildToolsVersion "29.0.3"
    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'])//1 本地依赖
    implementation 'androidx.appcompat:appcompat:1.1.0'  //2 远程依赖
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation project(':helper')      //3 库依赖            
}

首先第一行应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块;com.android.library表示是一个库模块。应用程序模块是可以直接运行的,库模块只能作为代码库附于在别的应用程序模块来运行。

android闭包:

● compileSdkVersion:指定项目的编译版本。
● buildToolsVersion:指定项目构建工具的版本。

defaultConfig闭包:

● applicationId:指定项目的包名
● minSdkVersion:指定项目最低兼容的Android系统版本
● targetSdkVersion:指定项目的目标版本
● versionCode:指定项目的版本号
● versionName:指定项目的版本名

buildTypes闭包:

通常只会有两个子闭包:debug和release。其中debug闭包可以忽略不写。debug闭包用于指定生成测试版安装文件的配置;release闭包用于指定生成正式版安装文件的配置。

扫描二维码关注公众号,回复: 12841198 查看本文章
release闭包

● minifyEnabled:指定是否对项目的代码进行混淆。
● proguardFiles:指定混淆时使用的规则文件。proguard-android.txt是在Android SDK目录下,里面是所有项目通用的混淆规则;proguard-rules.pro是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则。

dependencies闭包

指定当前项目所有的依赖关系。
● implementation fileTree:声明本地依赖,表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径中。
● implementation:声明远程依赖。
● testImplementation:声明测试用例库。
● implementation project(’:helper’)

二.日志工具的使用

Log.v():打印最为琐碎的、意义最小的日志信息。(verbose)
Log.d():打印调试信息。(debug)
Log.i():打印重要的日志信息。(info)
Log.w():打印一些警告信息。(warn)
Log.e():打印程序中的错误信息。(error)

为什么使用Log而不使用System.out

logcat中能添加过滤器
可以控制日志级别

猜你喜欢

转载自blog.csdn.net/weixin_41477306/article/details/105030082