目录文件 | 作用 |
---|---|
.gradle | gradle项目产生文件夹(自动编译工具产生的文件) |
.idea | IDEA项目文件夹(开发工具产生的文件) |
app | module模块 |
build | 构建时生成文件的地方 |
gradle | gradle环境支持文件夹 |
.gitignore | git源码管理文件 |
build.gradle | gradle项目自动编译的配置文件 |
gradlew | 自动完成 gradle 环境的linux mac 脚本,配合gradle 文件夹使用 |
gradlew.bat | 自动完成 gradle 环境的windows 脚本,配合gradle 文件夹使用 |
local.properties | Android SDK NDK 环境路径配置 |
setting.gradle | gradle 项目的子项目包含文件 |
目录文件 | 作用 |
---|---|
build | 编译时生成 |
libs | 存放第三方的jar包 |
src | module源码所在目录 |
.gitignore | git源码管理文件 |
app.iml | intellij IDEA项目都会自动生成的,AS是基于IDEA开发的 |
build.gradle | app模块的gradle构建脚本 |
proguard-rules.pro | 指定代码混淆 |
和外层的build类似主要包含编译时自动生成的内容,其中在outputs文件夹下存放打包好的apk文件(debug和release)
如果项目中是用了第三方的jar包,就需要把jar包放到libs目录下,然后jar包会被自动添加到构建路径(如集成百度地图sdk,把jar包放到libs目录。可以在build.gradle(app)文件中查看当前项目依赖)
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
}
用来编写Android test 测试用例的,可以对项目进行一些自动化测试
放Java代码的地方
存放资源的目录 图片存放在drawable(根据不同的分辨率可以有多个文件夹,有的app会根据不同分辨率显示分辨率不一样的图片,如果你只有一套图片想适用在各个分辨率下,建议放置在drawable-xxhdpi文件夹下,之前读过一篇文章分析放在该文件夹下资源消耗最小)、布局文件在layout、字符串在values、mipmap文件夹主要存放图标(引导页的图片也建议放在这里,之前在写一个引导页的demo开始图片放在了drawable下,滑动的时候卡的一批,后来发现放到mipmap下就不会卡了)
整个项目的配置文件,四大组件都需要在这里注册才能正常的运行
用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似。
intellij IDEA项目都会自动生成的,AS是基于IDEA开发的,iml文件是Android Studio识别项目的配置文件
app模块的gradle构建脚本(会经常接触所以注释下)
apply plugin: 'com.android.application'
//两种可选 application和library,application表示这是个应用程序模块,library表示这是个库模块,他要依赖于别的用用程序模块来运行
android {
compileSdkVersion 26 //指定项目编译版本
defaultConfig {
applicationId "com.example.time" //应用包名
minSdkVersion 23 //最低兼容的版本
targetSdkVersion 26 //表示在该版本做了充分的测试
versionCode 1 //指定项目版本号
versionName "1.0" //指定项目版本名
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false //是否开启混淆 false不开启
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 混淆的配置文件路径,默认给了我们两个配置文件。
// proguard-android.txt在/tools/proguard下面,里面已经包含了基本的混淆声明,有兴趣的可以去看下。
// proguard-rules.pro是在module根目录下面,我们可以根据项目去添加。
}
}
sourceSets{
main{
jniLibs.srcDir 'libs'
//说明so的路径为该libs路径,关联所有so文件
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs') //本地依赖声明
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
compile 'com.ashokvarma.android:bottom-navigation-bar:2.0.4'
compile 'com.google.code.gson:gson:2.7' //在使用开源库时在此做依赖声明
}
用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人破解,通常会将代码混淆,从而让破解者难以阅读。
编译时自动生成的文件,一般无需修改
项目对gradle的配置信息,简单看下gradle-wrapper.properties里的内容,里边声明了gradle的目录与下载路径以及当前项目使用的gradle版本
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
用于将指定的目录或文件排除在版本控制之外,作用和内层的.gitignore文件类似。
项目的编译环境配置
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter() //中央远程仓库,兼容maven中心仓库
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
全局的gradle配置文件。这里配置的属性将会影响到项目中所有的gradle编译脚本。
gradlew和gradlew.bat 用来在命令行界面执行gradle命令,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。
用来指定本机中的Android SDK的路径,一般是自动生成,除非自己的电脑SDK位置发生变化需要修改该文件的路径
用于指定项目中所有引入的模块。由于项目中就只有一个app模块,因此该文件中也就只引入了app这一个模块。通常情况下模块的引入都是自动完成的,需要我们手动去修改这个文件的场景可能比较少。
include ':app'
下面是一个多module的项目的setting.gradle
include ':app' ,':app1',':app2'
一般工作中经常接触的是app文件下的相关文件以及build.gradle等文件。以上是一个普通AS项目目录简析
相关内容参考《Android第一行代码》