目    录

一、【Project】视图下项目结构(真实目录)

二、【Android】视图下项目结构

三、【app/】下重要文件解析

1、 build.gradle

2、AndroidManifest.xml 

3、res/


   作为刚刚接触Android开发的小白,使用Android Studio创建项目后,对于项目中的各种文件就是两眼一抹黑,因此把自己的学习记录在这篇笔记中。

一、【Project】视图下项目结构(真实目录)

        如图1所示是Android Studio项目真实目录。

图1 【Project】视图下项目结构(真实目录)

MyApp/                                     ← 项目根目录
├── .gradle/                               ← Gradle 构建缓存文件夹
├── .idea/                                 ← AS项目配置文件(编码格式、依赖索引等)
│
├── app/                                   ← 主模块目录(Module,存放源码和资源)
│   ├── build/                             ← 编译生成的中间文件(自动生成,可删除)
│   ├── libs/                              ← 第三方库的 .jar / .aar 文件
│   ├── src/                               ← 源码目录
│   │   ├── main/                          ← 主代码和资源
│   │   │   ├── java/                      ← Java 或 Kotlin 源码
│   │   │   ├── res/                       ← 资源文件(布局、图片、字符串等)
│   │   │   └── AndroidManifest.xml        ← 应用清单文件(组件声明、权限配置)
│   │   ├── androidTest/                   ← Android 仪器化测试(UI 测试)
│   │   └── test/                          ← 本地单元测试代码
│   │
│   ├── build.gradle                       ← 模块级 Gradle 配置文件(依赖、编译参数)
│   └── proguard-rules.pro                 ← ProGuard 混淆规则文件
│
├── gradle/                                ← Gradle Wrapper 相关文件
│   ├── wrapper/
│   │   ├── gradle-wrapper.jar             ← Gradle Wrapper 的可执行 JAR(执行构建)
│   │   └── gradle-wrapper.properties      ← Wrapper 配置文件(Gradle 版本、下载路径)
│   └── libs.versions.toml                 ← Gradle 版本目录文件(管理依赖版本号)
│
├── .gitignore                             ← Git 忽略规则(哪些文件不提交到仓库)
├── build.gradle                           ← Gradle配置文件(全局插件、仓库、依赖)
├── gradle.properties                      ← Gradle 全局属性(构建优化、内存设置、全局变量)
├── local.properties                       ← 本地配置文件(SDK 路径、私有信息,不提交到 Git)
├── settings.gradle                        ← 定义项目包含的模块(多模块工程时在这里注册)
│
├── gradlew                                ← Unix/Linux Gradle 执行脚本
├── gradlew.bat                            ← Windows Gradle 执行脚本
└── External Libraries                     ← AS自动管理的外部依赖库(JDK、第三方库等)

二、【Android】视图下项目结构

        Android视图是对物理文件结构的逻辑整理,更关注功能和用途分类,隐藏了配置文件,源代码以包结构显示,更贴合Java开发习惯。图2所示为Android视图下的项目结构。

图2 【Android】视图下项目结构

MyApp
├── manifests                      ← 应用清单文件集合(主要是 AndroidManifest.xml)
│    └── AndroidManifest.xml       ← 应用声明和权限配置
│
├── java                           ← 应用的Java/Kotlin源代码(按包名显示)
│    └── com.example.myapp          ← 按包划分的源码目录
│         ├── MainActivity.java
│         └── ...
│
├── res                            ← 资源文件,按类型分类
│    ├── drawable                  ← 图片资源(png、jpg、xml等)
│    ├── layout                    ← 布局文件(XML定义UI界面)
│    ├── values                    ← 字符串、颜色、尺寸、样式等资源配置
│    ├── mipmap                    ← 启动图标资源
│    └── ...                      ← 其他资源目录(menu、raw等)
│
├── build.gradle (Project)        ← 项目级Gradle脚本
├── build.gradle (Module: app)    ← 模块级Gradle脚本
├── settings.gradle               ← 项目模块设置
├── gradle.properties             ← Gradle构建参数配置
│
└── External Libraries             ← 项目依赖的外部库(JDK、第三方库等)

三、【app/】下重要文件解析

1、 build.gradle

       app/build.gradle是当前模块的Gradle构建配置文件,配置依赖库、编译选项、打包配置等。了解该文件能够帮助解决常见构建问题。(说多了都是泪😢)

// 指定构建项文件所需的插件
plugins {alias(libs.plugins.android.application) // 所有的项目都需要该插件(com.android.application)
}// 模块构建配置
android {// 应用的命名空间namespace 'com.example.myapplication'// 编译时使用的 Android SDK 版本compileSdk 36defaultConfig {// 应用的唯一标识符(正式发布时不能随便改)applicationId "com.example.myapplication"// 支持的最低 Android 系统版本(API 级别)minSdk 24// 目标适配的 Android 系统版本(API 级别)targetSdk 36// 应用的内部版本号(整数,提交商店时用来区分版本)versionCode 1// 应用的对外版本名(字符串,用户可见的版本号)versionName "1.0"// 指定 Android 仪器化测试运行器testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {// release 构建类型(用于正式打包发布)release {// 是否启用代码混淆和压缩(false 表示不启用)minifyEnabled false// 混淆配置文件(默认规则 + 自定义规则)proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {// Java 源代码兼容版本sourceCompatibility JavaVersion.VERSION_11// Java 字节码兼容版本targetCompatibility JavaVersion.VERSION_11}buildFeatures {// 启用 ViewBinding 功能(方便绑定布局文件)viewBinding true}
}// 项目依赖
dependencies {// implementation定义项目主源代码的依赖implementation libs.appcompatimplementation libs.materialimplementation libs.constraintlayoutimplementation libs.navigation.fragmentimplementation libs.navigation.ui// testImplementationd定义项目测试(test目录下)代码依赖testImplementation libs.junit// androidTestImplementation定义AndroidTest目录下的代码依赖androidTestImplementation libs.ext.junitandroidTestImplementation libs.espresso.core
}

2、AndroidManifest.xml 

        AndroidManifest.xml文件是 Android 项目的系统清单文件,它用于控制 Android 应用的名称、图标、访问权限等整体属性。除此之外 Andriod 应用的 Activity、Service、ContentProvider、BroadcastRecevier这4大组件都需要在该文件中配置。

<!-- 声明 XML 文件的版本与编码 -->
<?xml version="1.0" encoding="utf-8"?><!-- manifest 元素是 Android 应用清单文件的根标签xmlns:android  -> 声明 Android 的 XML 命名空间xmlns:tools    -> 声明 tools 命名空间
-->
<!-- 指定该应用包名,包名用于唯一标识该应用 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><!-- 指定应用的图标、标签、圆图标等--><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyApplication"><!-- 声明一个 Activity(应用的界面组件) --><activityandroid:name=".MainActivity"android:exported="true"android:theme="@style/Theme.MyApplication"><!-- Intent 过滤器:定义该 Activity 能响应的 Intent 类型 --><intent-filter><!-- MAIN 表示这是应用的入口(主启动点) --><action android:name="android.intent.action.MAIN" /><!-- LAUNCHER 指定加载该应用时运行该activity --><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

3、res/

       res 目录存放 Android 项目的各种资源文件,如下表所示为常见资源类别。

目录名作用 / 存放内容常见文件示例
drawable/

位图图像、形状图形、XML 形状定义等可绘制资源

icon.pngbg.xml

mipmap/

启动图标资源(不同分辨率),优先用于 android:icon

ic_launcher.png

layout/

布局文件(XML 定义界面结构)

activity_main.xml

values/

各类 XML 常量定义,如字符串、颜色、尺寸、样式等

strings.xmlcolors.xmlstyles.xml

menu/

菜单资源(选项菜单、上下文菜单等)

main_menu.xml 

xml/

其他任意 XML 配置文件

network_security_config.xml

raw/

原始文件(音频、视频、二进制文件等,不会被编译处理)

music.mp3

font/

自定义字体文件

roboto.ttf

color/

独立颜色资源文件(API 23+)

app_colors.xml

❗ 在 Android 中,drawable 和 mipmap 都可按屏幕密度划分为 -ldpi(低,~120dpi)、-mdpi(中,~160dpi)、-hdpi(高,~240dpi)、-xhdpi(超高,~320dpi)、-xxhdpi(超超高,~480dpi)、-xxxhdpi(超超超高,~640dpi)等子目录,用于适配不同分辨率的图片资源,其中 drawable 主要存放普通界面图片,而 mipmap 主要存放应用启动图标,并针对启动器显示进行缓存与缩放优化,以确保在各种设备上图标清晰显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93555.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93555.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93555.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现点云Kmeans、欧式和DBSCAN聚类

本节我们分享点云处理中的三种常见聚类方法&#xff0c;分别是K-means、欧氏与 DBSCAN聚类。具体介绍如下&#xff1a;1. K-means 聚类定义&#xff1a;一种基于距离度量的无监督学习算法&#xff0c;将数据划分为 K 个紧凑的簇&#xff0c;使簇内数据相似度高、簇间差异大。算…

【Java后端】MyBatis-Plus 原理解析

MyBatis-Plus 原理解析 其实 MyBatis-Plus 的 Service 层设计就是为了让开发者不用重复写很多样板代码。我们来一点点剖析 UserServiceImpl、IService、UserService、ServiceImpl 之间的关系和调用链。1. 类/接口关系图IService<T>▲│UserService (接口) <-- 自定义…

Nacos 注册中心学习笔记

&#x1f389; Alibaba微服务组件 Nacos 注册中心超详细学习笔记 &#x1f389; &#x1f4cc; 写在前面&#xff1a;本文基于官方PDF文档与实战经验&#xff0c;整理了Nacos注册中心的核心知识点、部署流程与实战技巧&#xff0c;力求图文并茂、通俗易懂&#xff0c;适合收藏反…

java 策略模式 demo

策略模式介绍策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;将每个算法封装起来并使它们可相互替换。策略模式让算法的变化独立于使用算法的客户端&#xff0c;从而实现灵活的算法切换。核心角色&#xff1…

SAP Valuation Category在制造业成本核算中的使用场景与配置方案

Valuation Category在制造业成本核算中的使用场景与配置方案一、核心使用场景&#xff08;制造业特有&#xff09;1. 内制 vs 外购成本分离业务需求&#xff1a;同一物料可能通过内部生产&#xff08;成本含料工费&#xff09;或外部采购&#xff08;成本含采购价运费&#xff…

我的 LeetCode 日记:Day 36 - 动态规划,背包问题的千变万化

昨天&#xff0c;我初步掌握了 0/1 背包问题的理论基础和标准解法。今天&#xff0c;我将这种思想应用到了更广泛的场景中。今天的几道题&#xff0c;乍一看和背包没什么关系&#xff0c;但通过巧妙的数学转化&#xff0c;它们的核心都变成了 0/1 背包问题。 这让我深刻体会到…

本地处理不上传!隐私安全的PDF转换解决方案

PDF能锁定排版、字体、图片位置&#xff0c;无论在什么设备打开都保持一致。它是无广告、简洁高效的专业PDF处理工具。功能丰富&#xff0c;支持批量操作&#xff1a;只需将文件拖入界面&#xff0c;选择目标格式&#xff08;如Word、PPT、Excel、图片等&#xff09;&#xff0…

Docker build创建镜像命令入门教程

一、核心概念Dockerfile 定义镜像构建步骤的文本文件&#xff0c;包含一系列指令和配置&#xff0c;用于自动化创建镜像。镜像层&#xff08;Layer&#xff09; Docker 镜像由多层只读层叠加而成&#xff0c;每个指令&#xff08;如 RUN、COPY&#xff09;会生成一个新的层。层…

Redis 是单线程模型吗?

最近在面试中经常被问到这个问题&#xff1a;"Redis是单线程的吗&#xff1f;"很多同学都会脱口而出&#xff1a;"是的&#xff01;"但其实这个答案并不完全正确。今天我们就来聊聊Redis的线程模型&#xff0c;把这个问题彻底搞清楚。 先说结论 Redis的线程…

Hologres实战:路径分析函数

前言 Hologres提供了一套高效的路径分析函数&#xff0c;包括路径明细计算和结果解析功能&#xff0c;能够帮助用户深入理解用户行为路径&#xff0c;并通过桑基图实现数据可视化。 一、核心功能 路径明细计算&#xff1a;精确记录用户在产品或功能中的完整访问路径结果解析…

产品开发实践(常见的软硬结合方式)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】前面说过&#xff0c;传统的纯软件开发&#xff0c;在国内的大背景下面是很难存活的。但是如果是把软件&#xff0c;构建在硬件基础之上&#xff0c…

Linux | i.MX6ULL网络通信-套字节 UDP(第十八章)

01 Linux | i.MX6ULL网络通信-套字节 TCP(第十七章) 02 iTOP-IMX6ULL 实现基于 UDP 的 socket 编程。

学习嵌入式第三十天

文章目录进程和线程&#xff08;续&#xff09;线程1.线程传参2.线程属性3.线程间通信1.概念2.方式3.互斥锁4.死锁5.信号量习题 进程和线程&#xff08;续&#xff09; 线程 1.线程传参使用第四个参数实现对线程内部的传参 代码实现&#xff1a; #include <stdio.h> #inc…

GaussDB 数据库架构师修炼(十三)安全管理(3)-行级访问控制

1 背景行级访问控制特性将数据库的访问控制精确到数据表行级别 &#xff0c;只允许用户查看 、更新或删除特定的行数据。2 实例场景实例以医生只能看到治疗的病人&#xff0c;不能看其它医生的病人为例&#xff1a;1)医院病人的信息表pat_info&#xff1a;csdn> set search_…

Wi-Fi 与蜂窝网络(手机网络)的核心区别,以及 Wi-Fi 技术未来的发展方向

在日常生活中&#xff0c;我们既离不开家里的 Wi-Fi&#xff0c;也离不开手机的 4G/5G 网络。它们都能把我们连接到互联网&#xff0c;但底层的工作方式却大不相同。一、设计初衷的不同Wi-Fi诞生于 1997 年的 IEEE 802.11 标准&#xff0c;定位是局域网无线替代。它的目标是让电…

C++编程实战:高效解决算法与数据结构问题

个人主页 &#xff1a; zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 题目1. 数字统计2. 两个数组的交集3. 牛牛的快递4. 点击消除5. 最小花费爬楼梯6. 简写单词1. 数字统计 BC153 数字统计 #include <iostream> using na…

《零基础入门AI:深度学习中的视觉处理(卷积神经网络(CNN)进阶)》

一、卷积知识扩展 1. 二维卷积 单通道版本 对于单通道输入图像 III (尺寸 HWH \times WHW) 和卷积核 KKK (尺寸 FFF \times FFF)&#xff0c;输出特征图 OOO 的计算公式为&#xff1a; O(i,j)∑m0F−1∑n0F−1I(im,jn)⋅K(m,n)O(i,j) \sum_{m0}^{F-1} \sum_{n0}^{F-1} I(im, j…

pyecharts可视化图表-pie:从入门到精通(进阶篇)

欢迎来到pyecharts饼图系列教程的进阶篇&#xff01;在上一篇基础教程中&#xff0c;我们学习了饼图的基本概念和简单实现。在本文中&#xff0c;我们将深入探索pyecharts中饼图的六种高级用法和自定义选项&#xff0c;包括环形饼图、富文本标签饼图、滚动图例饼图、环形图、嵌…

【JAVA 核心编程】面向对象高级:类变量与方法 抽象类与接口

一、类变量与类方法&#xff08;静态变量&#xff09; 1&#xff09;类变量 class Child{private String name;//定义一个变量count&#xff0c;是一个类变量&#xff08;静态变量&#xff09;static静态//该变量最大的特点就是会被Child 类的所有对象访问public static int co…

【Java基础面试题】数据类型

Java面试高频总结&#xff1a;基本数据类型深度解析 &#x1f4ca; 八种基本数据类型详解数据类型关键字字节数位数默认值取值范围核心特性字节型byte180-128 ~ 127最小整数类型短整型short2160-32,768 ~ 32,767较少使用整型int4320-2 ~ 2-1 (约21亿)最常用整数类型长整型long8…