Android Studio项目结构和Gradle应用
2016-02-14 17:02
375 查看
目前Android开发的主要IDE:Android Studio,相信很多Android程序猿都不陌生了。
今天主要介绍创建完一个Android的基本工程后整体的目录结构和每个文件的作用,还有一些gradle在Android Studio中最基本的应用。
下面是我创建的一个android demo,先粗略介绍每个文件的作用:
.gradle Gradle编译系统,版本由wrapper决定,展开后可以看到当前gradle版
.idea Android Studio IDE所需要的文件
app 模块代码,撸代码的位置,其实里面就是Android代码和资源文件,后面会详细介绍里面的内容
Build 代码编译后生成的文件存放的位置
Grade wrapper的jar和配置文件所在的位置
.gitignore git使用的ignore文件,其实就是你在commit代码时,ignore中申明的一些文件不会上传到版本库中
build.gradle 项目的gradle编译文件,相当于整个项目的gradle配置文件。
gradle.properties gradle相关的全局属性设置,配置一些gradle的全局变量
gradlew *nix下可执行的编译脚本,其实这个就是gradle打包的命令
grdalew.bat 同上,windows下可执行的编译脚本
local.properties 本地配置文件,设置jdk路径或ndk等
MyApplication.iml 项目配置文件(自动生成)
settings.gradle 定义项目包含哪些模块,一般来说是用修改这个文件,但是如果你的项目有其他模块代码,就必须引入到setting.gradle中。
这里有几个文件需要详细说明一下:
首先看一下build.gradle:
有的时候会看到subprojects的配置,这个是指针对所有子模块的配置除了主gradle。
然后是settings.gradle:
新建的工程只有一句话:
相当于把你的模块在这里进行注册,后续添加了其他模块的代码,只需要在后面继续添加,如:
如果不在setting中注册car模块,那car模块只是一个普通的文件夹,gradle打包的时候不会把它包含进去,而且car模块也只是一个普通的文件夹。
========================我是分割线================================================
下面说一下app模块中的目录结构:
build 编译后生成的文件,一般app模块都是程序的入口,所以一般build中会生成apk文件
libs 放一些第三方jar包
src 源代码,这个不用过多说明了
.gitignore 和项目下的作用一样,只是一个是针对项目,这里是针对模块
build.gradle 模块编译文件,包含一些模块依赖,相当于对该模块的gradle配置
proguard-rules.pro 混淆脚本
主要看一下build.gradle:
这个是整个app模块的gradle配置,
apply plugin: ‘com.android.application’ //声明插件,这是一个android程序,说明app 是整个项目的入口,如果只是模块库,则com.android.library
android {
compileSdkVersion 23 //编译sdk的版本号
buildToolsVersion “23.0.1” //build tools版本号
defaultConfig {
//android构建过程中需要的参数
applicationId “klc.com.myapplication”
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName “1.0”
}
buildTypes {
//这里面可以配置debug和release版本的一些参数,比如混淆、签名配置等
release {
minifyEnabled false //是否开启混淆
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ //混淆文件位置
}
}
}
dependencies {
//模块依赖
compile fileTree(dir: ‘libs’, include: [‘*.jar’]) //依赖libs下所有jar包
testCompile ‘junit:junit:4.12’
compile ‘com.android.support:appcompat-v7:23.1.1’ //依赖appcompat库,相当于导入maven库
}
有几个地方请注意:
apply plugin这里一般app的入口都声明为'com.android.application',gradle会以这个为整个app的入口,所以会在改模块的build文件夹下生产apk文件,当然一个项目也可以有两个app的入口,相当于一个项目管理两个app,一般很少这样做。
一般其他模块直接声明为'com.android.library',这样就表示该模块是一个库了。
buildTypes,配置release版本和debug一些参数的区别,这里说一个gradle的bug,如果设置该模块为library,这里的debug参数是无效的,都是走release中的配置。
dependencies,如果想引用其他模块的代码就需要在这里声明,如想要app中使用car的代码,要加入:
compile project ':car'
这样就可以在app中引用car模块的代码了,前提是car模块是声明为了‘com.android.library’,而且在setting.gradle中注册了。
今天主要介绍创建完一个Android的基本工程后整体的目录结构和每个文件的作用,还有一些gradle在Android Studio中最基本的应用。
下面是我创建的一个android demo,先粗略介绍每个文件的作用:
.gradle Gradle编译系统,版本由wrapper决定,展开后可以看到当前gradle版
.idea Android Studio IDE所需要的文件
app 模块代码,撸代码的位置,其实里面就是Android代码和资源文件,后面会详细介绍里面的内容
Build 代码编译后生成的文件存放的位置
Grade wrapper的jar和配置文件所在的位置
.gitignore git使用的ignore文件,其实就是你在commit代码时,ignore中申明的一些文件不会上传到版本库中
build.gradle 项目的gradle编译文件,相当于整个项目的gradle配置文件。
gradle.properties gradle相关的全局属性设置,配置一些gradle的全局变量
gradlew *nix下可执行的编译脚本,其实这个就是gradle打包的命令
grdalew.bat 同上,windows下可执行的编译脚本
local.properties 本地配置文件,设置jdk路径或ndk等
MyApplication.iml 项目配置文件(自动生成)
settings.gradle 定义项目包含哪些模块,一般来说是用修改这个文件,但是如果你的项目有其他模块代码,就必须引入到setting.gradle中。
这里有几个文件需要详细说明一下:
首先看一下build.gradle:
buildscript { repositories { //构建过程依赖的仓库,gradle脚本自身需要的资源,有些时候也使用maven库 jcenter() } dependencies { //定义gradle插件版本 classpath ‘com.android.tools.build:gradle:1.5.0’ } } allprojects { //这里指的是整个项目所有模块的资源 repositories { jcenter() } }
有的时候会看到subprojects的配置,这个是指针对所有子模块的配置除了主gradle。
然后是settings.gradle:
新建的工程只有一句话:
include ':app'
相当于把你的模块在这里进行注册,后续添加了其他模块的代码,只需要在后面继续添加,如:
include ':app',':car'
如果不在setting中注册car模块,那car模块只是一个普通的文件夹,gradle打包的时候不会把它包含进去,而且car模块也只是一个普通的文件夹。
========================我是分割线================================================
下面说一下app模块中的目录结构:
build 编译后生成的文件,一般app模块都是程序的入口,所以一般build中会生成apk文件
libs 放一些第三方jar包
src 源代码,这个不用过多说明了
.gitignore 和项目下的作用一样,只是一个是针对项目,这里是针对模块
build.gradle 模块编译文件,包含一些模块依赖,相当于对该模块的gradle配置
proguard-rules.pro 混淆脚本
主要看一下build.gradle:
这个是整个app模块的gradle配置,
apply plugin: ‘com.android.application’ //声明插件,这是一个android程序,说明app 是整个项目的入口,如果只是模块库,则com.android.library
android {
compileSdkVersion 23 //编译sdk的版本号
buildToolsVersion “23.0.1” //build tools版本号
defaultConfig {
//android构建过程中需要的参数
applicationId “klc.com.myapplication”
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName “1.0”
}
buildTypes {
//这里面可以配置debug和release版本的一些参数,比如混淆、签名配置等
release {
minifyEnabled false //是否开启混淆
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ //混淆文件位置
}
}
}
dependencies {
//模块依赖
compile fileTree(dir: ‘libs’, include: [‘*.jar’]) //依赖libs下所有jar包
testCompile ‘junit:junit:4.12’
compile ‘com.android.support:appcompat-v7:23.1.1’ //依赖appcompat库,相当于导入maven库
}
有几个地方请注意:
apply plugin这里一般app的入口都声明为'com.android.application',gradle会以这个为整个app的入口,所以会在改模块的build文件夹下生产apk文件,当然一个项目也可以有两个app的入口,相当于一个项目管理两个app,一般很少这样做。
一般其他模块直接声明为'com.android.library',这样就表示该模块是一个库了。
buildTypes,配置release版本和debug一些参数的区别,这里说一个gradle的bug,如果设置该模块为library,这里的debug参数是无效的,都是走release中的配置。
dependencies,如果想引用其他模块的代码就需要在这里声明,如想要app中使用car的代码,要加入:
compile project ':car'
这样就可以在app中引用car模块的代码了,前提是car模块是声明为了‘com.android.library’,而且在setting.gradle中注册了。
相关文章推荐
- Android 5.0 Camera (3):open camera
- android View事件机制分析(一)
- 浅谈Android系统的基本体系结构与内存管理优化
- Android Camera 代码阅读: Preview过程
- Android开发底部控件会被弹出的软键盘顶起
- Android Jni开发之Android Studio中创建Jni程序
- Android快速开发(1)
- android studio NDK编程
- IIS7上设置MIME让其支持android和Iphone的更新下载
- Xamarin.Android 如何使用圆形Image
- android 自带图库
- Android开发中一些被冷落但却很有用的类和方法
- android 开发 命名规范
- Android琐碎知识点,不断更新中
- Android开发:Translucent System Bar 的最佳实践
- Android之RecyclerView简单使用(二)
- Android JSON解析
- Android消息处理系统原理简要概述
- ANDROID_MARS学习笔记_S01原始版_009_下载文件
- Android电话事件案例