zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

android studio目录结构之学习笔记

2023-09-14 09:16:39 时间

将项目结构模式切换成Project,如下图



1) .gradle和.idea

    这两个目录下放置的都是Android studio自动生成的一些文件,我们无须关心,也不要去手动编辑

2)app

项目中的代码,资源等内容几乎都是放置在这个目录下。

3)build

主要包含了一些在编译时自动生成的文件。

4)gradle

这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle.

可以点击Android studio导航栏 ->File->Settings->Build,Execution,Deployment->Gradle,进行配置。

5).gitignore

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

6)build.gradle

这是项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的

7)gradle.properties

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

8)gradlew和gradlew.bat

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

9)HelloWorld.iml

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

10)local.properties

这个文件用于指定本机中的Android SDK路很径,通常内容都是自动生成的,我们并不需要修改。

11)settings.gradle

这个文件用于指定项中所有引入的模块。

将app目录展开,如下图




1)build

这个目录和外层的build目录类似,主要也是包含了一些在编译时自动生成的文件。

2)libs

如果项目中使用了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都会被自动添加到构建路径里去。

3)androidTest

此外是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。

4)Java

Java目录是放置我们所有Java代码的地方。

5)res

项目中使用到的所有图片,布局,字符串等资源。

6)AndroidManifest.xml

这是整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。

7)test

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

8).gitignore

这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似。

9)app.iml

IntelliJ IDEA项目自动生成的文件

10)build.gradle

  这是app模块的gradle构建脚本。

11)proguard-rules.pro

这个文件用于指定项目代码的混淆规则,将代码进行混淆。


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

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

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

1)两处repositories的闭包中都声明了jcenter()这行配置 ,它是一个代码托管仓库,很多Android开源项目都会选择将代码托管到jcenter上,声明了这行配置之后,我们就可以在项目中轻松引用任

何jcenter上的开源项目了。

2)dependencies闭包中使用classpath声明了一个Gradle插件,2.3.3代表插件的版本号

3)运行gradle clean时,执行此处定义的task,该任务继承自Delete,删除根目录中的build目录,相当于执行Delete.delete(rootProject.buildDir),gradle使用groovy语言,调用method时可以不用加()


app目录下的build.gradle


apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.example.helloworld"
        minSdkVersion 15
        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 {
    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:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

1)第一行应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块。

2)android闭包,compileSdkVersion用于指定项目的编译版本。

3)defaultConfig闭包中,applicationId用于指定项目的包名,minSdkVersion用于指定项目最低兼容的Android系统版本,targetSdkVersion指定的值表示你在该目标版本上已经做过了充分的测试。

versionCode用于指定项目的版本号,versionName用于指定项目的版本名。

4)buildTypes闭包用于指定生成安装文件的相关配置,通常有2个子闭包,一个是debug,一个是release,debug闭包用于指定生成测试版安装文件的配置,release闭包用于指定生成正式安装文件的

配置,另外,debug闭包是可以忽略不写的。minifyEnabled用于指定是否对项目的代码进行混淆,true表示混淆,false表示不混淆,proguardFiles用于指定混淆时使用的规则文件,这里指定了两个

文件,第一个proguard--android.txt是在Android SDK目录下的,里面是所有项目通用的特有的混淆规则,第二个proguard-rules.pro是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则。

5)dependencies闭包指定当前项目所有的依赖关系,通常有三种依赖关系:本地依赖,库依赖,远程依赖,本地依赖可以对本地的Jar包或目录添加依赖关系,库依赖可以对项目中的库模块添加依

赖关系,远程依赖则可以对jcenter库上的开源项目添加依赖关系。compile fileTree就是一个本地依赖,com.android.support.appcompat-v7:26.+就是一个远程依赖,其中com.android.support是

域名部分,appcompact-v7是组名称,26.+是版本号。库依赖基本格式是compile project后面跟要依赖的库名称。例如有个库模块叫helper,那么添加的库依赖声明为compile project(':helper')