欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android模式的项目结构

程序员文章站 2022-04-22 09:45:02
分析第一个Android程序 Android模式的项目结构 .gradle和.idea Android Studio自动生成文件 app 项目中的代码、资源等内容几...

分析第一个Android程序


Android模式的项目结构

Android模式的项目结构

.gradle和.idea
Android Studio自动生成文件 app
项目中的代码、资源等内容几乎都在这个目录下。 build
包含一些在编译时自动生成的文件。 gradle
包含了gradle wrapper的配置文件。 .gitignore
将指定的目录或文件排除在版本控制之外。 build.gradle
项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的。 gradle.properties
是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。 gradlew和gradlew.bat
用来在命令行界面中执行gradle命令的。gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的 HelloWorld.iml
IntelliJ IDEA项目自动生成的一个文件。 local.properties
用于指定本机中的Android SDK路径,通常内容都是自动生成的,不需要修改。如果本机的SDK路径发生变化,将这个文件中的路径修改为新的路径。 settings.gradle
这个文件用于指定项目中所有引入的模块。

详细分析app目录

Android模式的项目结构
1. build
这个目录和外层的build目录类似,主要包含了一些在编译时自动生成的文件,但这个目录的内容更复杂。
2. libs
需要用到的第三方jar包放在libs目录下,会被自动添加到构建路径里去。
3. src/android Test
此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
4. src/main/java
放置所有Java代码的地方。
5. src/main/res
项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下。图片放在drawable目录,布局放在layout目录下,字符串放在value目录下。
6. src/main/AndroidManifest.xml
整个Android项目的配置文件,程序中定义的所有四大组件都需要在这个文件里注册,还可以给应用程序添加权限声明。
7. src/test
用来编写Unit Test测试用例,是对项目进行自动化测试的另一种方式。
8. .gitinore
将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitinore文件类似。
9. app.iml
IntelliJ IDEA项目自动生成的文件。
10. build.gradle
app模块的gradle构建脚本,指定很多项目构建相关的配置。
11. proguard-rules.pro
指定项目代码的混淆规则。

详解项目中的资源

res目录

Android模式的项目结构
- 所有以drawable开头的的文件夹都是用来存放图片的。
- 所有以mipmap开头的文件夹都是用来存放应用图标的。
- value文件夹用来存放字符串、样式、颜色等配置的。

调用values的资源

string.xml文件中定义app的名称

HelloWorld

引用定义的app名称方法:
- 在代码中:R.string.app_name
- 在xml中:@string/app_name

调用其他资源方式类同,引用图片资源把string替换成drawable,引用图标则替换成mipmap,引用布局文件则替换成layout。可查看在AndroidManifest.xml中的用法:

 
        ···
    

详解build.gradle文件 ##

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

build.gradle一个位于最外层目录下,一个位于app目录下。

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

buildscript {

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

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

jcenter()即代码托管仓库,很多Android开源项目都会选择将代码托管到jcenter上,声明了这行配置之后,可以在项目中轻松引用任何jcenter上的开源项目。

classpath 'com.android.tools.build:gradle:3.0.0'代表Gradle插件版本号。

app目录下的build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.myfzhou.helloworld"
        minSdkVersion 14
        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'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
apply plugin
一个插件,有两个值可选
com.android.application :表示这是一个应用程序模块,可直接运行; com.android.library :表示这是一个库模块,只能作为代码库依附于别的应用程序模块来运行。 android闭包
compileSdkVersion :指定项目的编译版本; buidToolsVersion :指定项目构建工具的版本(书本项目有该段代码)。 defaultConfig闭包
applicationId :指定项目的包名; minSdkVersion :指定项目最低兼容Android系统版本; targetSdkVersion :表示在该目标版本上已经做过了充分的测试,系统将会为你的应用程序启用一些最新的功能特性; versionCode :指定项目的版本号; versionName :指定项目的版本名。 buildTypes闭包
该闭包中用于指定生成安装文件的相关配置,通常只会有两个子闭包,一个是debug,一个release。
debug闭包:用于指定生成测试版安装文件的配置,该闭包可以忽略不写; release闭包:用于指定生成正式版安装文件的配置。
minifyEnabled :用于指定是否对项目的代码进行混淆,true表示混淆,false表示不混淆; proguardFiles :用于指定混淆时使用的规则文件,这里指定了两个文件:
proguard-android.txt 是在Android SDK目录下,里面是所有项目通用的混淆规则; proguard-rules.pro 是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则。 dependencies闭包
这个闭包功能十分强大,可以指定当前项目所有的依赖关系,Android Studio项目一共有3中依赖关系:
本地依赖implementation fileTree(dir: 'libs', include: ['*.jar']):可以对本地的jar包或项目添加依赖关系; 库依赖implementation 'com.android.support:appcompat-v7:26.1.0':可以对项目中的库模块添加依赖关系; 远程依赖:可以对jcenter库上的开源项目添加依赖关系。

日志工具的使用

Android的日志工具Log

Log.v() :用于打印那些最为琐碎的、意义最小的日志信息,对应级别是verbose; Log.d() :用于打印一些调试信息,对应级别是debug; Log.i() :用于打印一些比较重要的数据,可以分析用户行为数据,对应级别是info; Log.w() :用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复以下这些出现警告的地方,对应级别是warn; Log.e() :用于打印程序中的错误信息,比如程序进入到了catch语句当中,当有错误信息打印出来时候,一般都代表你的程序出现严重问题了,必须尽快修复,对应级别error。

tips

在onCreate()方法的外面输入logt,然后按下Tab键,就会以当前的类名作为值,自动生成一个TAG常量。之后在方法里只需要输入Log+方法名,按下Tab键,即可快速输入日志输出。