
Log运行日志
Android 采用Log工具打印日志,它将各类日志划分为五个级:
Log.eE表示错误信息,比如可能导致程序崩溃的异常。
Log.w:表示警告信息。
Log.i:表示一般消息。
Log.d:表示调试信息,可把程序运行时的变量值打印出来,方便跟踪调试。
Log.v:表示冗余信息。
工程目录结构
App工程目录结构
App工程分为两个层次,第一个层次是项目,另一个层次是模块。
模块依附于项目,每个项目至少有一个模块,也能拥有多个模块。
一般所言的“编译运行App”,指的是运行某个模块,而非运行某个项目,因为模块才对应实际的App。
App项目下面有两个分类:
- app(代表app模块) 下面有3个子目录
- Gradle Scripts,主要是工程的编译配置文件
app(代表app模块)
manifests子目录,下面只有一个XML文件,即AndroidManifest.xml,它是App的运行配置文件。
java子目录,下面有3个com.example.myapp包,其中第一个包存放当前模块的Java源代码,后
面两个包存放测试用的Java代码。res子目录,存放当前模块的资源文件
- drawable目录存放图形描述文件与图片文件。
- layout目录存放App页面的布局文件。
- mipmap目录存放App的启动图标。
- values目录存放一些常量定义文件,例如字符串常量strings.xml、像素常量dimens.xml、颜色常
量colors.xml、样式风格定义styles.xml等。
Gradle Scripts
- build.gradle,该文件分为项目级与模块级两种,用于描述App工程的编译规则。
- proguard-rules.pro,该文件用于描述Java代码的混淆规则。
- gradle.properties,该文件用于配置编译工程的命令行参数,一般无须改动。
- settings.gradle,该文件配置了需要编译哪些模块。初始内容为include ‘:app’,表示只编译app模块。
- local.properties,项目的本地配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK的本地路径等。
编译配置文件build.gradle
项目级别的build.gradle指定了当前项目的总体编译规则,打开该文件在buildscript下面找到repositories和dependencies两个节点,其中repositories节点用于设置Android Studio插件的网络仓库地址,而dependencies节点用于设置gradle插件的版本号。由于官方的谷歌仓库位于国外,下载速度相对较慢,因此可在repositories节点添加阿里云的仓库地址,方便国内开发者下载相关插件。
1 | buildscript { |
模块级别的build.gradle对应于具体模块,每个模块都有自己的build.gradle,它指定了当前模块的详细编译规则。
1 | plugins { |
运行配置文件AndroidManifest.xml
AndroidManifest.xml
指定了App的运行配置信息,它是一个XML描述文件
1 |
|
AndroidManifest.xml
的根节点为manifest,它的package属性指定了该App的包名。manifest下面有个application节点
android:allowBackup
,是否允许应用备份。允许用户备份系统应用和第三方应用的apk安装包和应用数据,以便在刷机或者数据丢失后恢复应用,用户即可通过adb backup和adb restore来进行
对应用数据的备份和恢复。为true表示允许,为false则表示不允许。android:icon
,指定App在手机屏幕上显示的图标。android:label
,指定App在手机屏幕上显示的名称。android:roundIcon
,指定App的圆角图标。android:supportsRtl
,是否支持阿拉伯语/波斯语这种从右往左的文字排列顺序。为true表示支持,为false则表示不支持。android:theme
,指定App的显示风格。
application下面还有个activity节点,它是活动页面的注册声明,只有在AndroidManifest.xml
中正确配置了activity节点,才能在运行时访问对应的活动页面。初始配置的MainActivity正是App的默认主页,之所以说该页面是App主页,是因为它的activity节点内部还配置了以下的过滤信息
1 | <intent-filter> |
其中action
节点设置的android.intent.action.MAIN
表示该页面是App的入口页面,启动App时会最先打开该页面。
而category
节点设置的android.intent.category.LAUNCHER
决定了是否在手机屏幕上显示App图标,如果同时有两个activity节点内部都设置了android.intent.category.LAUNCHER,那么桌面就会显示两个App图标。