Android Studio项目目录介绍

作者: wxyass 分类: Android 发布时间: 2017-04-07 14:07

谷歌15年底停止支持其他集成开发环境, 而着重推出Android Studio工具, 而至今Android studio已发布稳定版, 本文主要对Android studio项目结构作介绍.

工程的目录介绍

1 Android模式:项目创建时的默认模式.

图片1

结构简单明了, 适合快速开发, 但不适合新手;

2 Project模式: 项目的真实目录结构.

图片2

  • .gradle和.idea 自动生成,无需关心.
  • app 项目中的代码,资源等几乎放在这个目录下.
  • build 无需关心,该目录主要包含在编译时自动生成的一些文件.
  • gradle 这个目录下包含gradle wrapper的配置文件.
  • .gitignore 这个文件是用来将指定目录或文件排除在版本控制之外的.
  • build.gradle 这是项目全局的gradle构建脚本,通常这个文件的内容是不需要修改的.
  • gradle.properties 这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有grable编译脚本.
  • gradlew和gradlew.bat 这两个文件是用来在命令行界面执行gradle命令的.
  • HelloWorld.iml 自动生成,用于标识这是个Intellij IDEA项目,我们不需要修改任何内容.
  • local.properties 这个文件用于指定本机的Android SDK路径,通常内容是自动生成的,我们不需要修改,除非你本机的Android SDK位置发生变化,那么将这个文件中的路径改成新的位置即可.
  • setting.gragle 这个文件用于指定项目中所有引入的模块.通常情况下模块的引入都是自动生成的,需要我们手动修改这个文件的场景很少.

通过上面Project模式的外层目录结构介绍,你会发现,除了app目录之外,都多数文件和目录都是自动生成的,我们并不需要修改.

所以, app目录下的内容才是我们以后工作的重点

3 Project模式下app目录的介绍

图片3

  • build 自动生成,不需关心.
  • libs 如果你的项目中使用了第三方jar包, 就需要将这些jar包都放在libs目录下,放在libs目录下的jar包都会被自动添加到构建路径里去
  • androidTest 此处用来编写Android Test测试用例的.
  • java 该目录存放代码
  • res 你项目中使用到的所以图片,布局,字符串等资源都放在这个目录中,这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下,整个res目录并不会很乱.
  • AndroidMainfest.xml 你项目的清单文件,程序中定义的四大组件需要在这个文件里注册,所需要的权限需要在这个文件中添加声明.
  • test 此处用来编写Unit Test测试用例的
  • .gitignore 这个文件是用来将app模块内指定目录或文件排除在版本控制之外的.作用跟外层的.gitignore文件类似.
  • app.iml Intellij IDEA项目自动生成的文件,无需关心.
  • build.gradle 这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置.
  • proguard-ruels.pro 用于代码混淆

4 项目究竟如何运行起来的 -> 在清单文件中配置Activity: 配置启动界面.

打开清单文件(AndroidMainfest.xml文件),找到如下代码:

        <activity android:name=".HelloWorldActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

这段代码表示对HelloWorldActivity这个Activity在清单文件中进行注册,
其中<intent-filter>标签中的
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
两行代码非常重要,表示HelloWorldActivity是这个项目的主Activity,当在手机上点击应用图标时,首先启动的就是这个Activity.

5 详解build.gradle文件

HelloWorld项目中有2个build.gradle文件,一个是在最外层目录下,一个是在app目录下.

5.1 最外层目录下的build.gradle文件

图一
图中build.gradle里的代码都是自动生成的,它们都是什么含义呢.

首先,两处 repositories 的闭包中都声明了 jcenter() 这行配置,而 jcenter() 是一个代码托管仓库,有了这行配置之后,我们就可以在项目中轻松引用任何 jcenter 上的开源项目了

接下来, dependencies 闭包中使用 classpath 声明一个 Gradle 插件,因为 Gradle 并不是专门为构建 Android 项目而开发的, java,C++等很多种项目都可以使用 Gradle 来构建,因此我们使用 Gradle 来构建Android项目时,需要声明 com.android.tools.build:gradle:2.2.0 这个插件. 最后面的部分是插件的版本号,我用的是最新的2.2.0版本.

5.2 app目录下的build.gradle文件

图二
这个文件中内容相对复杂,我们一行行分析.

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

接下来,是一个大的 android 闭包.其中

  1. compileSdkVersion 用于指定项目的编译版本,
  2. buildToolsVersion 用于指定项目构建工具的版本.
  3. targetSdkVersion 指定的值表示你在该目标版本已经做过了充分的测试,系统将会为你的应用程序启动一些最新的功能和特性.

接下来,buildTypes 闭包中用于指定生成安装文件的相关配置.

  1. minifyEnabled 用于指定是否对项目的代码进行混淆,
    true表示混淆,
    false表示不混淆
    .
  2. proguardFiles 用于指定混淆时使用的规则文件,
    第一个 proguard-android.txt 是在Android SDK目录下,里面是所有项目通用的混淆规则,
    第二个 proguard-rules.pro 是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则.

接下来,dependencies 闭包用来指定当前项目所有的依赖关系. (Android Studio 中一共有3种依赖方式: 本地依赖,库依赖,远程依赖)

  1. compile fileTree 是一个本地依赖声明,它表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径当中.
  2. compile远程依赖声明,有了这个远程依赖库声明后,Gradle 在构建项目时会先检查本地是否有这个库,没有会联网自动下载,然后添加到项目的构建路径当中.
  3. 至于库依赖声明这里没有用到,库依赖声明的基本格式是 compile project 后面加上要依赖的库名称.
  4. testCompile 是用于声明测试用例库的,我们暂时用不到,先忽略他就可以了

以上就是Android Studio目录的基本介绍.


掌握日志工具的使用

添加logcat过滤器

  1. 点击Android Studio 底部工具栏的Android Monitor,在右侧下拉选项中选择 Edit Filter Configuration.
    图1
  2. 给过滤器起名为data,并且让它对名为data的Tag进行过滤.
    图2
  3. 运行项目,查看日志即可.

名词解释:
  • gradle wrapper:
    使用gradle wrapper的方式

  • 远程依赖声明
    标准格式: compile 'com.android.support:appcompat-v7:23.4.0' 其中com.android.support是域名部分,用于和其他公司的库做区分;appcompat-v7是组名称,用于和同一个公司中不同的库做区分;23.4.0是版本号,用于和同一个库不同的版本做区分.

  • 库依赖声明的基本格式
    比如说有一个库模块的名字叫 helper ,那么添加这个库的依赖关系只需要加入 compile project(':helper') 这句声明即可.

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注