Android开发入门教程

Android开发学习 -- Day1 了解Android的一些

2018-03-16  本文已影响58人  h080294

现在的职位是Android测试,但在日常工作中,常有一些困扰。测试的好奇心驱使自己不断的去问为什么。例如,为什么会出这个bug,怎么修复这个bug,如何避免这个bug。之前还写过文章,Android测试--记录一个简单问题的定位与跟踪,所以最终一切问题还是会回归到代码上。

于是就定下个目标,掌握Android开发技术,并坚持记录学习过程。

因为做了一阵Android的测试“工程师”,因此对一些基础的知识还是有所了解。例如Activity的生命周期,Android的四大组件等等。不过为了戒骄,还是要沉下心来看。关于如何搭建Android开发环境和创建和了解hello World项目就略过了。

一、项目的工程结构

新建一个工程,可看到如下图目录,将视图由Android调整为project,以观全局。

二、build.gradle文件详解

Android Studio采用Gradle来构建项目,这是一种先进的项目构建工具。它使用了一种基于Groovy的领域特定语言DSL来声明项目设置,摒弃了传统基于XML的各种繁琐的配置。

在上面的图中,我们看到一共有两个gradle文件,一个是app模块的,另一个是整个项目的。这两个文件对构建Android项目都起到了至关重要的作用,需要分开来分析。

1、先来看最外层的gradle文件:

代码所示

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

这些代码都是项目自动生成的,其中我们看到两处repositories的闭包中都有google()和 jcenter()的配置。他们其实是代码的托管仓库,如声明了 jcenter(),就可以在项目中轻松的引用jcenter上的开源项目了。

dependencies闭包中使用了classpath声明了一个Gradle插件。因为Gradle并不是专门为Android项目开发的,所以要用Gradle构建Android项目的话,就需要声明com.android.tools.build:gradle:3.0.1这个插件。最后的3.0.1指的是插件的版本号。

2、app下的Gradle文件

代码如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.johnhao.listviewdemo"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets { main { java.srcDirs = ['src/main/java', 'src/main/java/Adapter'] } }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:support-v4:26.1.0'
    implementation 'com.android.support:design:26.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:0.5'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
}

内容比较多,一条一条来分析。
首先,第一行应用了一个插件:apply plugin: 'com.android.application',这里的com.android.application表示这是一个应用程序模块;还有另一种方式com.android.library表示这是一个库模块。两者主要区别就是一个是可以直接运行,另一个只能作为代码库依附于别的应用程序模块来运行。

接下来是一个大的android闭包,这里可以配置项目构建的各种属性。
🀆 compileSdkVersion:指定项目的编译版本。
之后又嵌套了一个defaultConfig闭包
🀆 applicationId:用于指定项目的包名
🀆 minSdkVersion:项目最低兼容的Android系统版本
🀆 targetSdkVersion:表明项目在目标版本上进行了充分的测试,系统将启用一些最新的功能和特性。
🀆 versionCode:指定项目的版本号
🀆 versionName:指定项目的版本名

分析完defaultConfig闭包,再来看buildTypes闭包。buildTypes用于指定生成安装文件的相关配置,通常有两个闭包,分别为debug和release。
🀆 minifyEnabled:是否对项目进行混淆
🀆 proguardFiles:指定混淆规则

最后来看一下dependencies闭包,它可以指定当前项目所有的依赖关系。通常Android Studio项目有三种依赖关系,本地依赖、库依赖和远程依赖。本地依赖可以对本地Jar包或者目录添加依赖关系;库依赖可以对项目中的模块库添加依赖关系;远程依赖则可以对jcenter库上的开源项目添加依赖关系。

例如:'com.android.support:appcompat-v7:26.1.0'就是一个标准的远程依赖库格式,其中com.android.support是域名部分;26.1.0是版本号;appcompat-v7是组名称,用于和其他的库做区分。

三、Android的日志工具

平常的测试中,最常用的方法有种叫做Log大法,即在关键的地方打下日志,方便调试肉眼不可见的信息。

Android中的日志工具类是Log(android.util.Log),这个类提供了如下5个方法来供我们打印日志。
🀆 Log.v():用于打印最为琐碎的。意义最小的日志信息。对应级别verbose,是Android日志里面级别最低的一种
🀆 Log.d():用于打印一些调试信息,这些信息对调试程序和分析问题应该是有帮助的,对应级别debug,比verbose高一级。
🀆 Log.i():用于打印一些比较重要的数据,这些数据应该是非常想看到的,可以帮助分析用户行为数据。对应级别info,比debug高一级。
🀆 Log.w():用于打印一些警告信息,提示程序在这个地方可能存在潜在的风险,最好修复这些警告。对应级别warn,比info高一级。
🀆 Log.e():用于打印程序中的错误信息,比如程序进入catch语句。当有错误信息打印的时候,一般代表程序中出了严重问题,必须尽快修复。对应级别error,比warn高一级。

在Android Studio里,提供了log的快捷键。例如想打印debug级别的日志,只需要输入logd,就会自动补全代码。另外由于Log都需要一个tag,在最外面输入logt同样也会自动补全生成一个TAG常量。

接下来就可以通过过滤TAG和日志级别来筛选自己需要的信息啦。

关于Android的一些基础知识就复习到这里,这一天,我们已经搭建好了Android的开发环境,对整个Android也有了一定的认知,并创建了自己的项目工程,还了解了日志的使用,愉快而丰富的一天就要结束了。从下一章学习开始,就要真正的步入Android的世界中了。

关注获取更多信息
上一篇 下一篇

猜你喜欢

热点阅读