一、Android工程的目录结构
在Android Studio中,一个Android项目的文件结构有许多种表现形式,称之为视图。其中,Android视图是Android Studio默认的视图,在新建一个项目之后,Android Studio就会将项目的文件结构以Android视图表现出来,Android视图显示的比较简洁,适合进行快速开发,但是对于新手来说可能并不易于理解;Project视图是程序员们比较喜欢的视图,Project视图中的文件结构就是项目在硬盘上真实的文件结构。
Android视图
Project视图
对比发现,Android视图显示的内容主要在Project视图中的app文件夹中。我们用表格做个对比:
Android视图 |
Project视图 |
详细说明 |
app/manifests |
app/src/main/AndroidManifest.xml |
存放AndroidManifest.xml文件,整个项目的配置文件,包括程序版本、四大组件注册、权限声明等。 |
app/java |
app/src/main/java |
Java源文件夹,存放项目中所有的Java代码源文件。 |
app/res |
app/src/main/res |
存放项目中所有的资源文件,包括图片、布局、字符串等。 |
Gradle Scripts |
app/* + HelloWorld/* |
gradle相关配置文件、gradle构建文件。 |
无 |
app/build |
包含编译时自动生成的文件,与外层build文件夹类似但更复杂。 |
无 |
app/libs |
存放项目中使用的第三方jar包,其中的jar包会自动加入构建路径。 |
无 |
app/src/androidTest |
用来编写Android Test测试用例,可以对项目进行自动化测试。 |
无 |
app/src/test |
用来编写Unit Test测试用例,可以对项目进行自动化测试。 |
下面将分节介绍上面的部分目录中存放什么类型的文件。
1、src/main/java文件夹
顾名思义(src, source code)该文件夹是放项目的源代码的。
java目录是放置我们所有java代码的地方,展开该目录,你将看到有一个MainActivity文件。
打开MainActivity.java文件,会看到如下代码:
package com.sdbi.helloworld; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
它通过package语句定位该类位于com.sdbi.helloworld包内(对应着文件夹),
通过import语句导入了两个类:android.support.v7.app.AppCompatActivity和android.os.Bundle,
MainActivity类继承自AppCompatActivity且重写了onCreate方法。
在onCreate()中只有两行代码,其中第一句是调用了父类的onCreate()方法,用来获取Activity的状态,
第二句用setContentView(R.layout.activity_main)来设定Activity所要显示的布局文件,它是通过对R类的引用来实现的,实际上就是位于res/layout/activity_main.xml文件。
注意:
(1)@Override用法:
在重写父类的onCreate时,在方法前面加上@Override系统可以帮你检查方法的正确性。
例如,public void onCreate(Bundle savedInstanceState){……}这种写法是正确的,
如果你写成public void oncreate(Bundle savedInstanceState){……}
这样编译器回报如下错误:
Method does not override method from its superclass
以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)
而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。
(2)android.support.v7.app.AppCompatActivity类:在Android Studio中几乎所有的活动Activity都要去继承于AppCompatActivity类,这是新版安卓兼容包Android Support Library中定义的一个类,为了让新的UI控件也可以跑在早期的 Android 版本。我们不用去修改它。我们重点关注onCreate()方法里面的代码。
2、res文件夹
资源目录,在项目中使用到的所有图片、布局、字符串等资源都在该目录下,其中图片放在drawable目录下,布局文件放在layout目录下,字符串放在values目录下。
- drawable:用来存放.png/.jpg等位图文件。
- layout:目录下是程序的布局文件,是.xml形式的布局文件。在android应用该程序中可以使用xml布局文件来描述应用程序的布局,同样我们可以在程序中直接通过Java来创建用户界面。使用xml文件的好处是简单,结构清晰,维护容易,但是也有缺点那就是不能动态的控制更改程序的界面。
- values:目录下包含了所有使用XML格式的参数描述文件,我们可以自己添加我们需要的资源,如字符串(xml)、颜色(colors.xml)、样式(styles.xml)等。
- mipmap:也是可以存放图片的目录、为了加快渲染速度和减少图像锯齿,一些图片被处理成由一系列被预先计算和优化过的图片文件。一般来说这里只存放Launcher图标。Launcher是Android系统的桌面启动器。
3、AndroidManifest.xml文件
清单文件,是整个Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。
当你新添加一个Activity的时候,一定要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。
关于AndroidManifest.xml现在就讲这么多,后面还会详细介绍。
二、设备调试及Logcat查看
1、设备调试
点击项目上方工具栏app图标,然后选择“Edit Configurations...”。
2、Logcat
Android日志系统提供了记录和查看系统调试信息的功能。当程序运行后,我们需要在调试的时候查看Logcat的信息,点击Android Studio底部的Logcat按钮,会弹出Logcat查看窗口。
我们来测试一下Logcat
在MainActivity中增加一行语句
重新运行程序,查看Logcat窗口。
Android中Log分为五级,分别对应着5个方法:
级别由低到高:v(verbose)< d(debug) < i(info) < w(warning) < e(error)
我们以上面用到的Log.d("MainActivity", "调试信息")为例,Log.d(String tag, String msg)方法传入两个参数:第一个参数是tag,一般传入当前的类名就好,主要用于对于打印信息进行过滤;第二个参数是msg,即想要打印的具体内容。
我们可以添加过滤器来分级查看。