Android Studio 项目目录结构

ASProjectTree

在这里插入图片描述
└─ASProjectTree
  ├─.gradle 自动编译工具产生的文件
  ├─.idea 开发工具产生的文件
  ├─app module模块
  ├─gradle gradle环境支持文件夹
  ├─.gitignore Git源码版本管理忽略管理文件
  ├─build.gradle gradle项目自动编译的配置文件
  ├─gradle.properties
  ├─gradlew 自动完成 gradle 环境的linux mac 脚本,配合gradle 文件夹使用
  ├─gradlew.bat 自动完成 gradle 环境的windows 脚本,配合gradle 文件夹使用
  ├─local.properties Android SDK NDK 环境路径配置
  └─settings.gradle gradle 项目的子项目管理文件

.gradle & .idea

AS自动生成的目录文件,可忽略

app(moudle)

-
└─app
  ├─build 工程进行编译时自动生成
  ├─libs 存放第三方的jar/aar包
  ├─src 源代码的所在目录
  ├─.gitignore git源码管理文件
  ├─build.gradle module的gradle构建脚本
  └─proguard-rules.pro 混淆文件:指定代码混淆

app目录是AS项目结构中默认的module名称,名称可以手动修改,并且可以创建多个module

build

   主要包含一些编译时自动生成的文件,其中在outputs文件夹下存放打包好的apk文件(debug和release)以及jar/aar包

libs

   存放项目使用到第三方的离线包,可以存放jar/aar以及可能的so文件,并通过一下方式进行依赖使用

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs') //libs下的全部引入
    或者
    implementation files('libs/xxx.jar') //指定jar包引入
    ......
}

src

androidTest

用来编写Android test 测试用例的,可以对项目进行一些自动化测试

main
java

放源代码的地方

res

存放资源的目录 图片存放在drawable(根据不同的分辨率可以有多个文件夹,有的app会根据不同分辨率显示分辨率不一样的图片,如果你只有一套图片想适用在各个分辨率下,建议放置在drawable-xxhdpi文件夹下,之前读过一篇文章分析放在该文件夹下资源消耗最小)、布局文件在layout、字符串在values、mipmap文件夹主要存放图标(引导页的图片也建议放在这里,之前在写一个引导页的demo开始图片放在了drawable下,滑动的时候卡的一批,后来发现放到mipmap下就不会卡了)

AndroidManifest.xml

整个项目的配置文件,四大组件都需要在这里注册才能正常的运行

test

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

.gitignore(module)

build.gradle(module)

app.iml(module)

Android Studio识别项目的配置文件

plugins {
    id 'com.android.application'    //表示这是个应用程序模块
//    id 'com.android.library'  //表示这是个库模块,他要依赖于别的用用程序模块来运行
}

android {
    compileSdkVersion 30    //指定项目编译版本
    buildToolsVersion "30.0.3"  //

    defaultConfig {
        applicationId "com.as.project.tree" //应用包名
        minSdkVersion 23    //最低兼容的版本
        targetSdkVersion 30 //表示在该版本做了充分的测试
        versionCode 1   //指定项目版本号
        versionName "1.0"    //指定项目版本名

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false //是否开启混淆:false-不开启
            // 混淆的配置文件路径,默认给了我们两个配置文件。
            //proguard-android.txt在<sdk目录>/tools/proguard下面,里面已经包含了基本的混淆声明,有兴趣的可以去看下。
            // proguard-rules.pro是在module根目录下面,我们可以根据项目去添加。
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets{
        main{
            jniLibs.srcDir 'libs'   //说明so的路径为该libs路径,关联所有so文件
        }
    }
    compileOptions {    //指定的JDK版本
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')  //本地依赖声明
    implementation 'androidx.appcompat:appcompat:1.3.1' //在使用开源库时在此做依赖声明
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

proguard-rules.pro

用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人**,通常会将代码混淆,从而让**者难以阅读。

gradle

工程对Gradle构建环境的依赖,具体的依赖配置在gradle-wrapper.properties,其中声明了gradle的目录、依赖文件的下载路径以及当前所使用的版本信息,如

#Thu May 19 09:10:30 CST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

.gitignore

当工程使用到了git版本控制时,该文件用于配置忽略管控指定的目录、文件等,如

*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties

build.gradle(工程)

工程的编译环境配置,如

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.2.1"

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

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}

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

gradle.properties

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

gradlew & gradlew.bat

gradlew和gradlew.bat均为可执行文件, 其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。

./gradlew clean  clean项目
./gradlew build  构建项目
./gradlew assembleDebug  编译并打Debug包
./gradlew assembleRelease  编译并打Release的包
./gradlew installRelease  Release模式打包并安装
./gradlew installDebug  Debug模式打包并安装
./gradlew uninstallRelease  卸载Release模式包
./gradlew uninstallDebug  卸载Debug模式包

且这些命令可以叠加使用,例如:
./gradlew clean build --info > bugtags.log

local.properties

配置当前设备开发环境中Android的SDK目录,也可以在文件中配置一些本地化的变量,该文件一般不会被提交到git版本控制中

settings.gradle

配置项目的子模块module。初始项目默认只有一个module,那就是app模块(如果要对app进行改名,那么该处需同步更改),当有多个module被引入时,此处则会有多个module名称

rootProject.name = "ASProjectTree"
include ':app'
include ':其他module名称'
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值