Android模式的项目结构
分析第一个Android程序
Android模式的项目结构
.gradle和.ideaAndroid Studio自动生成文件 app
项目中的代码、资源等内容几乎都在这个目录下。 build
包含一些在编译时自动生成的文件。 gradle
包含了gradle wrapper的配置文件。 .gitignore
将指定的目录或文件排除在版本控制之外。 build.gradle
项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的。 gradle.properties
是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。 gradlew和gradlew.bat
用来在命令行界面中执行gradle命令的。gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的 HelloWorld.iml
IntelliJ IDEA项目自动生成的一个文件。 local.properties
用于指定本机中的Android SDK路径,通常内容都是自动生成的,不需要修改。如果本机的SDK路径发生变化,将这个文件中的路径修改为新的路径。 settings.gradle
这个文件用于指定项目中所有引入的模块。
详细分析app目录
1. build
这个目录和外层的build目录类似,主要包含了一些在编译时自动生成的文件,但这个目录的内容更复杂。
2. libs
需要用到的第三方jar包放在libs目录下,会被自动添加到构建路径里去。
3. src/android Test
此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
4. src/main/java
放置所有Java代码的地方。
5. src/main/res
项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下。图片放在drawable目录,布局放在layout目录下,字符串放在value目录下。
6. src/main/AndroidManifest.xml
整个Android项目的配置文件,程序中定义的所有四大组件都需要在这个文件里注册,还可以给应用程序添加权限声明。
7. src/test
用来编写Unit Test测试用例,是对项目进行自动化测试的另一种方式。
8. .gitinore
将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitinore文件类似。
9. app.iml
IntelliJ IDEA项目自动生成的文件。
10. build.gradle
app模块的gradle构建脚本,指定很多项目构建相关的配置。
11. proguard-rules.pro
指定项目代码的混淆规则。
详解项目中的资源
res目录
- 所有以drawable开头的的文件夹都是用来存放图片的。
- 所有以mipmap开头的文件夹都是用来存放应用图标的。
- value文件夹用来存放字符串、样式、颜色等配置的。
调用values的资源
string.xml文件中定义app的名称
HelloWorld
引用定义的app名称方法:
- 在代码中:R.string.app_name
- 在xml中:@string/app_name
调用其他资源方式类同,引用图片资源把string替换成drawable,引用图标则替换成mipmap,引用布局文件则替换成layout。可查看在AndroidManifest.xml中的用法:
···
详解build.gradle文件 ##
详解build.gradle文件 ##
Android Studio采用Gradle来构建项目。Gradle是一种基于Groovy的领域特定语言(DSL)来声明项目设置,摒弃了传统基于XML的各种繁琐配置。
build.gradle一个位于最外层目录下,一个位于app目录下。
外层目录下的build.gradle文件 ###
外层目录下的build.gradle文件 ###
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
jcenter()即代码托管仓库,很多Android开源项目都会选择将代码托管到jcenter上,声明了这行配置之后,可以在项目中轻松引用任何jcenter上的开源项目。
classpath 'com.android.tools.build:gradle:3.0.0'代表Gradle插件版本号。
app目录下的build.gradle文件
app目录下的build.gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.example.myfzhou.helloworld"
minSdkVersion 14
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
apply plugin
一个插件,有两个值可选
com.android.application :表示这是一个应用程序模块,可直接运行; com.android.library :表示这是一个库模块,只能作为代码库依附于别的应用程序模块来运行。 android闭包
compileSdkVersion :指定项目的编译版本; buidToolsVersion :指定项目构建工具的版本(书本项目有该段代码)。 defaultConfig闭包
applicationId :指定项目的包名; minSdkVersion :指定项目最低兼容Android系统版本; targetSdkVersion :表示在该目标版本上已经做过了充分的测试,系统将会为你的应用程序启用一些最新的功能特性; versionCode :指定项目的版本号; versionName :指定项目的版本名。 buildTypes闭包
该闭包中用于指定生成安装文件的相关配置,通常只会有两个子闭包,一个是debug,一个release。
debug闭包:用于指定生成测试版安装文件的配置,该闭包可以忽略不写; release闭包:用于指定生成正式版安装文件的配置。
minifyEnabled :用于指定是否对项目的代码进行混淆,true表示混淆,false表示不混淆; proguardFiles :用于指定混淆时使用的规则文件,这里指定了两个文件:
proguard-android.txt 是在Android SDK目录下,里面是所有项目通用的混淆规则; proguard-rules.pro 是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则。 dependencies闭包
这个闭包功能十分强大,可以指定当前项目所有的依赖关系,Android Studio项目一共有3中依赖关系:
本地依赖implementation fileTree(dir: 'libs', include: ['*.jar']):可以对本地的jar包或项目添加依赖关系; 库依赖implementation 'com.android.support:appcompat-v7:26.1.0':可以对项目中的库模块添加依赖关系; 远程依赖:可以对jcenter库上的开源项目添加依赖关系。
日志工具的使用
日志工具的使用
Android的日志工具Log
Android的日志工具Log
Log.v() :用于打印那些最为琐碎的、意义最小的日志信息,对应级别是verbose; Log.d() :用于打印一些调试信息,对应级别是debug; Log.i() :用于打印一些比较重要的数据,可以分析用户行为数据,对应级别是info; Log.w() :用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复以下这些出现警告的地方,对应级别是warn; Log.e() :用于打印程序中的错误信息,比如程序进入到了catch语句当中,当有错误信息打印出来时候,一般都代表你的程序出现严重问题了,必须尽快修复,对应级别error。
tips
tips
在onCreate()方法的外面输入logt,然后按下Tab键,就会以当前的类名作为值,自动生成一个TAG常量。之后在方法里只需要输入Log+方法名,按下Tab键,即可快速输入日志输出。
上一篇: Linux系统下常用的三款网络安全工具
下一篇: VMProtect代码还原技术
推荐阅读
-
Android Studio导入so文件到项目中的实例详解
-
Android编程入门之HelloWorld项目目录结构分析
-
解决Eclipse创建android项目无法正常预览布局文件问题的方法
-
Android 夜间模式的实现代码示例
-
Android Studio导入so文件到项目中的实例详解
-
浅析Android中常见三种弹框在项目中的应用
-
解决Eclipse创建android项目无法正常预览布局文件问题的方法
-
Android编程入门之HelloWorld项目目录结构分析
-
Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解
-
基于Android设计模式之--SDK源码之策略模式的详解