环境搭建完成后,咱们就能够写下咱们的第一个项目了。java
在 Android Studio 的欢迎页面点击 Start a new Android Studio project
就会自动为咱们建立一个项目。(首次开启项目,可能构建时间很长,须要下载不少东西,和你的网速有关系)android
咱们还能够经过 Android Studio 来建立一个模拟器,供咱们运行程序。不过建议使用真机测试。git
手机和 Android Studio 链接上后,咱们就往手机上面运行程序了。缓存
gradle 和 .idea闭包
这两个目录下放置的都是 Android Studio 自动生成的一些文件,咱们无需关心。也不要去手动编辑app
appide
项目中的代码、资源等内容几乎都放在这个目录下。工具
build布局
无需关心,编译产生的文件测试
gradle
这个目录下包含了 gradle wrapper 的配置文件,使用 gradle wrapper 的方式不须要提早将 gradle 下载好,而是会根据本地的缓存状况决定是否须要联网下载。
.gitignore
版本控制有关
build.gradle
全局的 gradle 构建脚本。
gradle.properties
全局的 gradle 配置文件。在这里配置的属性会影响到项目中全部的 gradle 编译脚本。
gradlew 和 gradlew.bat
用来在命令界面中执行 gradle 命令的,其中 gradlew 是在 Linux 或者 Mac 系统中使用的,gradlew.bat 是在 Windows 系统中使用
HelloWorld.iml
是全部的 IntelliJ IDEA 项目都会自动生成一个文件,用于标识这是一个 IntelliJ IDEA 项目。
local.properties
指定本机中的 SDK 路径
setting.gradle
指定项目中所引入的模块。
除了 APP 目录之外,大多的文件和目录都是自动生成的,不须要咱们去修改。app 目录才是咱们关注的重点。
APP 目录下进行分析
build
编译时自动生成的文件
libs
使用了第三方 jar ,存放目录
androidTest
编写 Android Test 测试用例的,能够对项目进行一些自动化测试
Java
放置代码的地方
res
存放资源,这里面又有不少目录,后面详解介绍
AndroidMainfest.xml
Android 项目的配置文件。咱们所使用的四大组件都须要在这里注册,权限的申请也在这里,常用
test
编写 Unit Test 测试用例,是对项目进行自动化测试的另外一种方式
.gitignore
版本控制(app 模块内),用于设备版本控制的时候忽略的内容
app.iml
IntelliJ IEDA 项目自动生成的文件
build.gradle
app 模块的 gradle 构建脚本。项目构建相关的配置
proguard-rules.pro
混淆规则。做用:防止咱们编译的 apk 包被别人反编译后能够轻松查看。
介绍完这些目录,是否是感受到很混乱呢,感受都不知道在说什么,不要紧,这些东西后面慢慢接触就清楚了。
介绍 HelloWorld 项目是如何启动的
首先查看 清单文件 AndroidManifest.xml
<activity android:name = ".HelloWorldActivity">
<intent-filter>
<action android:name = "android.intent.action.MAIN"/>
<category android:name = "android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
复制代码
这段代码就表示对 HelloWorldActiviy
进行注册,若是不注册的话是会报错的。
其中
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
复制代码
表示这个项目的主 Activity 就是这个,启动程序的时候会首先打开这个 Activity。
Activity 就是咱们所看到的页面,下面看一下代码是怎么写的
public class HelloWorldActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.hello_world_layout);
}
}
复制代码
HelloWorldActiviyt 是继承 APPCompatActivity 的,这是一种向下兼容的 Activity,这样可使用 Activity 在不一样系统版本中增长的新特性和功能能够在比较旧的系统上仍然使用(兼容到 Android 2.1)。
Android 程序设计讲究逻辑和视图的分离。界面是不在 Activity 中直接编写的。而是在布局文件中编写界面。
res 目录介绍
drawable
用来存放图片
mipmap
存放应用图标
values
string、color、样式等配置
layout
存放布局
有这么多的 mipmap 开头的目录是为了让程序更好的兼容各类分辨率的手机。drawable 文件夹也应该是相同的道理,咱们应该本身建立多个目录:drawable-hdpi
drawable-xhdpi
drawable-xxhdpi
drawable-xxxhdpi
图片最好分别制定多个,分别放到不一样的目录下,程序运行的时候会自动到对应的目录查找。
只有一套图的时候,把图片放到 drawable-xxhdpi 文件夹
Android Studio 是基于 Gradle 来构建项目的,Gradle 是一种很是先进的构建工具。它基于 Groovy 的领域特定语言(DSL)。摈弃了传统的基于 xml (如 Ant、Maven)的各类繁琐的配置。
注意:在新的版本中 compile 已经被 implementation 代替了,因为是在《第一行代码》参考下,因此下面仍是 compile
buildscript{
repositories{
jcenter()
}
dependencies{
classpath 'com.android.tools.build:gradle:2.2.0'
}
}
allprojects{
repositories{
jcenter()
}
}
复制代码
jcenter 是一个代码托管库,不少的开源代码都放在这个库里面,声明了这个配置,咱们就能够轻松的引用库里面的开源代码了。
dependencies 闭包中使用 classpath 声明了一个 Gradle 插件,之所声明这个插件是由于,Gradle 并非专门为 Android 项目开发的,Java 、C++ 等不少项目一样可使用 Gradle 来构建,若是咱们想要用 Gradle 来构建 Android 项目就须要咱们使用 Gradle 针对 Android 的插件工具了。
一般状况下咱们不须要修改这里面的内容,除非咱们想要添加一些全局的项目构建配置。
内层 APP 目录下的 build.gradle
apply plugin: `com.android.application`
android{
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig{
applicationId "com.example.helloworld"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes{
release{
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}
}
dependecies{
compile fileTree(dir:'libs',include:['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
}
复制代码
第一行应用了一个插件,通常有两种值能够选择:com.android.application
表示这是一个应用程序模块,能够直接运行。com.android.library
表示这是一个库模块,只能依附于别的应用程序运行。
下面是一个 android 大闭包,配置项目构建的各类属性。
compileSdkVersion 指定编译版本,这里指定的 24 表示使用 Android 7.0 系统的 SDK 编译。
buildToolsVersion 用于指定项目构建工具的版本
而后 android 包中又嵌套了一个 defaultConfig 闭包,对项目中的更多细节进行配置。
applicationId 用于指定项目的包名
minSdkVersion 指定项目最低兼容的 Android 版本
targetSdkVersion 表示你在该目标版本上已经作过充分的测试,系统会启用这个版本的新的特性和功能。
versionCode 指定项目的版本号
versionName 指定项目的版本名
下面就是 buildType 闭包,这里面的配置主要是生成安装文件相关的配置,一般只有两个子闭包,一个是 debug
,一个是release
。debug 闭包用于配置测试包。release 用于配置正式包。debug 包能够忽略不写。
查看 release
包中的内容:minifyEnabled
用于指定是否对项目的代码进行混淆,true 表示是,false 表示否。proguardFiles
用于指定混淆使用的规则文件,这里指定了两个文件,一个是 proguard-android.txt ,这个在 Android SDK 下面,是全部项目通用的混淆规则,第二个是 proguard-rules.pro 在当前根目录下,里面编写当前项目的混淆规则,经过 Android Studio 直接运行的都是测试安装文件。
dependencies闭包
这里面主要说明当前项目的依赖关系。Android Studio 项目一共有三种依赖关系:本地依赖、库依赖、远程依赖
本地依赖: 就是对本地 jar 包或者目录添加依赖关系。
库依赖: 对项目中的库模块进行依赖
远程依赖: 对远程仓库上面的开源项目进行依赖。
compile fileTree 就是对一个本地依赖声明。它表示将 libs 目录下的全部 .jar 后缀的文件所有添加到项目的构建路径中。
下面的 compile 'com.android.****' 就依赖的远程仓库。添加上这句后,Gradle 在构建项目的时候会首先检查一下本地是否有这个库的缓存,没有就去对应的仓库下载。
库依赖的基本格式是:compile project 加上要依赖的库名称。例若有个库模块叫:helper,则:
compile project(':helper')
复制代码
testCompile 这个是用于声明测试用例库的。