1.各目录结构的作用

01.gradle和.idea
这两个目录下放置的都是Android Studio自动生成的一些文件,我们无须关心,也不要去
手动编辑。
02. app
项目中的代码、资源等内容都是放置在这个目录下的,我们后面的开发工作也基本是在这
个目录下进行的,待会儿还会对这个目录单独展开讲解。
03. build
这个目录主要包含了一些在编译时自动生成的文件,你也不需要过多关心。
04. gradle
这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前
将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。
Android Studio默认就是启用gradle wrapper方式的,如果需要更改成离线模式,可以
点击Android Studio导航栏→File→Settings→Build, Execution,
Deployment→Gradle,进行配置更改。
05. .gitignore
这个文件是用来将指定的目录或文件排除在版本控制之外的
06.build.gradle
这是项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的。稍后我们将会
详细分析gradle构建脚本中的具体内容。
07. gradle.properties
这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编
译脚本。
08. gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统
中使用的,gradlew.bat是在Windows系统中使用的。
09. HelloWorld.iml
iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio是基于IntelliJ
IDEA开发的),用于标识这是一个IntelliJ IDEA项目,我们不需要修改这个文件中的任何
内容。
10. local.properties
这个文件用于指定本机中的Android SDK路径,通常内容是自动生成的,我们并不需要修
改。除非你本机中的Android SDK位置发生了变化,那么就将这个文件中的路径改成新的
位置即可。
11. settings.gradle
这个文件用于指定项目中所有引入的模块。由于HelloWorld项目中只有一个app模块,因
此该文件中也就只引入了app这一个模块。通常情况下,模块的引入是自动完成的,需要我
们手动修改这个文件的场景可能比较少。
app目录下的内容

01. build
这个目录和外层的build目录类似,也包含了一些在编译时自动生成的文件,不过它里面的
内容会更加复杂,我们不需要过多关心。
02. libs
如果你的项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目
录下的jar包会被自动添加到项目的构建路径里。
03. androidTest
此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
04. java
毫无疑问,java目录是放置我们所有Java代码的地方(Kotlin代码也放在这里),展开该
目录,你将看到系统帮我们自动生成了一个MainActivity文件。
05. res
这个目录下的内容就有点多了。简单点说,就是你在项目中使用到的所有图片、布局、字
符串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在drawable
目录下,布局放在layout目录下,字符串放在values目录下,所以你不用担心会把整个res
目录弄得乱糟糟的。
06. AndroidManifest.xml
这是整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注
册,另外还可以在这个文件中给应用程序添加权限声明。由于这个文件以后会经常用到,
我们等用到的时候再做详细说明。
07. test
此处是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
08. .gitignore
这个文件用于将app模块内指定的目录或文件排除在版本控制之外,作用和外层
的.gitignore文件类似。
09. app.iml
IntelliJ IDEA项目自动生成的文件,我们不需要关心或修改这个文件中的内容。
10. build.gradle
这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置,我们稍后
将会详细分析gradle构建脚本中的具体内容。
11. proguard-rules.pro
这个文件用于指定项目代码的混淆规则,当代码开发完成后打包成安装包文件,如果不希
望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。
res 目录下的内容

所有以“drawable”开头的目录都是用来放图片的。

所有以"mipmap"开头的目录都是用来放应用图标的。

所有以"values"开头的目录都是用来放字符串、样式、颜色等配置。

所有以"layout"开头的目录都是用来放布局文件的。

2.初步了解Build.gradle

defaultConfig 闭包是对项目细节的配置,

buildTypes闭包中用
于指定生成安装文件的相关配置,通常只会有两个子闭包:一个是debug,一个是release。
debug闭包用于指定生成测试版安装文件的配置,release闭包用于指定生成正式版安装文件
的配置。

dependencies闭包指定当前项目所有的依赖关系。

通常Android Studio项目一共有3
种依赖方式:本地依赖、库依赖和远程依赖。本地依赖可以对本地的jar包或目录添加依赖关
系,库依赖可以对项目中的库模块添加依赖关系,远程依赖则可以对jcenter仓库上的开源项目
添加依赖关系。 

minSdkVersion 指的是项目最低兼容的Android版本。
targetSdkVersion指定的值表示你在该目标版本上已经
做过了充分的测试,系统将会为你的应用程序启用一些最新的功能和特性。

testInstrumentationRunner用于在当前项
目中启用JUnit测试,你可以为当前项目编写测试用例,以保证功能的正确性和稳定性。

2. 使用 annotate 查看 代码git 记录

3. 如何查看内存使用情况?

4. 怎么引入依赖

(44条消息) Android如何导入android.support.v7.app.AppCompatActivity_鲍尔的博客_appcompatactivity如何导入

在file-Project structure - > 查看 Dependencies  ,或者在 build.gradle Dependencies  中配置对应依赖。

5.gradle 插件版本 对应关系

项目下build.gradle dependencies  classpath闭包 和  gradle-wrapper.properties   distributionUrl 中版本匹配关系      

Android Gradle 插件版本说明  |  Android 开发者  |  Android Developers

6.  Android Studio 添加C/C++ 代码 ,而不是阅读C++ 代码

Android Studio向项目添加C/C++原生代码教程 - 诸子流