android studio 工程目录详解

首先看下一个App的目录结构:

这里写图片描述

下面是app/src/目录结构:

这里写图片描述

AndroidManifest.xml:它是android项目的系统清单文件,它用于控制android应用的名称、图标、访问权限等整体属性。除此之外,android应用的Activity、Service、ContentProvider、BroadcastReceiver这四大组件都需要在该文件中配置。
main/res:主要是资源目录,存储所有的项目资源,当这个目录下的文件发生变化时,生成的R.java就会自动发生变化:
    drawable:存储一些xml文件,-*dpi表示存储分辨率的图片,用于适配不同的屏幕。
         -mdpi:320x480
         -hdpi:480x800、480x854
         -xhdpi:至少960x720
        -xxhdpi:1280x720
     layout:存储布局文件
     mipmap:存储原声图片资源
     values:存储app引用的一些值
        - colors.xml: 存储了一些color的样式
        - dimens.xml:存储了一些公用的dp值
         - strings.xml: 存储了引用的string值
         - styles.xml: 存储了app需要用到的一些样式
main/Java:主要为源代码和测试代码
main/assets:主要放置多媒体等数据文件,需要的时候自己创建,在main目录下
app/build:Android Studio自动生成的各种源文件, 编译生成的apk也在这个目录的outs子目录,包括R.java文件也放在该目录的子目录下,R.java文件是由AAPT工具根据应用中的资源文件自动生成的,生成R.java文件的规则主要是以下两条:
->每类资源都对应于R类的一个内部类,比如所有界面布局资源对应于layout内部类;所有字符串资源对应于stirng内部类;
->每个具体的资源项对应于内部类的一个public static final int 类型的 Field。随着我们不断地向android项目中添加资源,R.java文件的内容也会越来越多。
libs:为项目需要添加的.jar包或*.so包等外接库
project/:

    .idea://系统自动生成的关于AS的环境配置目录,包括版权,字典,jar包信息,项目名称,编译信息等等,类似Eclipse的project.properties。
    app://AS创建工程中的一个Module。
    External Libraries://不是一个文件夹,只是依赖lib文件,如SDK等。
    .iml://项目的配置文件

Gradle文件介绍:

什么是Gradle?
Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
总的来说Gradle是一种构建工具,Android Studio使用它来构建你的Android项目
app/build.gradle如下:

//声明是android程序
apply plugin: 'com.android.application'

def VUFORIA_SDK_DIR = '../..'
def NATIVE_LIB_DIR = 'ARGO/app/src/libs/lib'
def JAR_DIR = 'ARGO/app/src/libs/java/vuforia'

android {
//编译SDK的版本
    compileSdkVersion 22
    // build tools的版本
    buildToolsVersion "22.0.1"

    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir "$VUFORIA_SDK_DIR/$NATIVE_LIB_DIR/"
    }

    defaultConfig {
    // 应用的包名
        applicationId "com.vuforia.samples.VuforiaSamples"
        minSdkVersion 21
        targetSdkVersion 22
        versionCode 200
        versionName "5.0"
    }

    archivesBaseName = rootProject.projectDir.getName()

    buildTypes {
     //这里面可以配置debug和release版本的一些参数,比如混淆、签名配置等
        release {
            minifyEnabled false //是否开启混淆
            ndk {
                abiFilters "armeabi-v7a","x86"
            }
        }
        debug {

            minifyEnabled false
            debuggable true
            ndk {
                abiFilters "armeabi-v7a","x86"
            }
        }
    }
}
dependencies {//模块依赖
// 编译libs目录下的jar包
    compile files("$VUFORIA_SDK_DIR/$JAR_DIR/Vuforia.jar")
}

project#build.gradle:

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

buildscript {//构建过程依赖的仓库
    repositories {
        jcenter()
    }
    //构建过程需要依赖的库
    dependencies {
    //下面声明的是gradle插件的版本
        classpath 'com.android.tools.build:gradle:2.1.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
//这里面配置整个项目依赖的仓库,这样每个module就不用配置仓库了
allprojects {
    repositories {
        jcenter()
    }
}

注:大家可能很奇怪,为什么仓库repositories需要声明两次,这其实是由于它们作用不同,buildscript中的仓库是gradle脚本自身需要的资源,而allprojects下的仓库是项目所有模块需要的资源。所以大家千万不要配错了。
1.gradle文件夹
这里面有两个文件,gradle-wrapper.jar和gradle-wrapper.properties,它们就是gradle wrapper。gradle项目都会有,你可以通过命令gradle init来创建它们(前提是本地安装了gradle并且配置到了环境变量中)。
下面是gradle-wrapper.properties中的内容:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip

可以看到里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本,这些默认的路径我们一般不会更改的
2.settings.gradle:
这个文件是用来配置多模块的,比如你的项目有两个模块module-a,module-b,那么你就需要在这个文件中进行配置,格式如下:

include ':module-a',':module-b'

3.gradle.properties:
从名字上就知道它是一个配置文件,没错,这里面可以定义一些常量供build.gradle使用,比如可以配置签名相关信息如keystore位置,密码,keyalias等。
4.gradlew和gradlew.bat:
这分别是linux下的shell脚本和windows下的批处理文件,它们的作用是根据gradle-wrapper.properties文件中的distributionUrl下载对应的gradle版本。这样就可以保证在不同的环境下构建时都是使用的统一版本的gradle,即使该环境没有安装gradle也可以,因为gradle wrapper会自动下载对应的gradle版本。
gradlew的用法跟gradle一模一样,比如执行构建gradle build命令,你可以用gradlew build。gradlew即gradle wrapper的缩写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值