参考书籍:第一行代码:Android(第二版)(郭霖)
一、第一个安卓程序
1、Android Studio项目结构分析
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mVMMH0io-1646556179980)(C:\Users\86130\AppData\Roaming\Typora\typora-user-images\1646361087617.png)]](https://i-blog.csdnimg.cn/blog_migrate/f3e7dd4be5dbd4262f28ebc00e562f75.png)
1、.gradle和.idea |
这两个目录放置的都是Android Studio自动生成的一些文件,无需关心,也不要去编辑和修改 |
2、app |
项目中的代码,资源等内容几乎都是放置在这个目录下面,我们的开发工作也基本都是在这个目录下进行的 |
3、bulid |
这个目录主要包含了一些编译时自动生成的文件,也无需过多关心 |
4、gradle |
这个目录下包含了gradle wrapper的配置文件使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。Android Studio默认没有启动gradle wrapper的方式如果需要打开,可以点击Android Studio导航栏——File——Settings——Bulid,Execution,Deployment——Gradle,进行配置更改 |
5、.gitignore |
这个文件是用来将指定的目录或文件排除在版本控制之外 |
6、build.gradle |
这是项目的全局的gradle构建脚本,通常这个文件中的内容是不需要修改的 |
7、gradle.properties |
这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本 |
8、gradlew和gradlew.bat |
这两个文件是用来在命令行界面中执行gradle命令,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的 |
9、local.properties |
这个文件用于指定本机中的Android SDK路径,通常内容都是自动生成的,我们不需要修改。除非本机中的Android SDK位置发生了变化,那么将此文件中的路径改为新的路径即可 |
10、settings.gradle |
这个文件用于指定项目中的所有引入模块。由于HelloWorld项目中就只有一个APP模块,因此该文件中也就只引入app这一个模块,通常情况下模块的引入都是自动完成的。 |
2、重点app目录结构
![](https://i-blog.csdnimg.cn/blog_migrate/e9b8901ee6e8289425bfb58f8fc0b561.png)
1、build |
这个目录和外层的build目录类似主要也是包含了一些在编译时自动生成的文件,这个里面的内容会更加复杂,但是不需要过多的关心 |
2、libs |
如果项目使用了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都不自动添加到构建路劲里去 |
3、androidTest |
此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试 |
4、java |
这个目录是放置我们所有的Java代码的地方,展开目录,可以看到HelloWorldActivity文件就在里面 |
5、res |
这个目录下的内容存放了项目所需要使用的所有图片、布局、字符串、等资源都要存放在这个目录下。这个目录有许多的子目录,图片存放在drawable目录下,布局存放在layout目录下,字符串存放在values目录下 |
6、AndroidManifest,xml |
这是整个Android项目配置文件在程序中定义的所有四大组件都需要在这个文件里面注册,另外还可以在这个文件中给应用程序添加权限声明,这个文件以后会经常用到 |
7、test |
此处用来编写Unit Test测试用例的,对项目进行自动化测试的另一种方式 |
8、.gitignore |
这个文件用于将app模块内的指定的目录或文件排除 在版本控制之外,作用和外层的.gitignore文件类似 |
9、build.gradle |
这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置 |
10、proguard-rules.pro |
这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破译者难以阅读 |
3、AndroidManifest,xml部分代码分析
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>