AS工程目录结构
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名称'