本人作为一名android小白初次写博客,不好之处请多多包含,欢迎各位大神指点迷津.....

初次接触android不管是从学校还是培训机构出来的,最先接触的知识肯定是安装开发工具了(Android Studio),这里就不再详细介绍了(百度一大堆),其次就是学习工具的使用,比如一些常用的快捷键还有创建项目等等,最后就是各种控件以及各种知识点的学习了。

作为小白的一员,基本上我也是这么过来的,但是到真真工作的时候问题就来了,配置文件中各个参数是什么意思?引入三方库时或者系统版本过高时都需要更改配置文件但无从下手,我不知道其他初学者是不是也会遇见这样类似的问题,反正我是遇见了,于是乎下面就将新建项目中的文件做一详细说明,希望对一些不懂的初学者有所帮助。

1..gradle和.idea

这两者目录下放置的都是Android Studio自动生成的一些文件,我们无需关心也不必要对其做修改。

2. app

这里面放置的是我们所写的项目代码以及资源等内容,我们后续的开发工作基本上都是在这个目录下面进行的

3. build

这里面放置的时编译时自动产生的文件,不需要修改,也不需要纳入项目源代码管理中。

4. gradle

这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动工具本地缓存情况决定是否需要联网下载gradle。Android Studio默认是没有启用gradle wrapper的方式,如果需要打开,可以在File-Setting-Build,Execution,Deployment-Gradle中配在修改。

5. .gitignore

这个文件是用来将指定的文件或者目录排除在版本控制外的

6. build.gradle

这个是项目全局的gradle配置文件,通常这个文件是不需要修改的

7. gradle.properties

这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本

8. gradlew 和 gradlew.bat

这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或者Mac系统中使用的,gradlew.bat是在Windows系统中使用的

9. .iml

iml文件是所有IntelliJIDEA项目都会自动生成的一个文件(Android Stuido 是基于IntelliJIDEA 开发的),用于标识这是一个IntelliJIDEA项目,我们不需要修改这个文件中的任何内容

10. local.properties

这个文件用于指定本集中的Android SDK 路径,通常内容都是自动生成的,我们并不需要修改。除非你本机中的SDK位置发生了变化,那么就将这个文件中的路径改成新的位置即可

11. setting.gradle

这个文件用于指定项目中所有引入的模块。通常情况下模块的引入都是自动完成的,需要我们手动去修改这个文件的场景可能较少


下面我们来详细看一下最外层的build.gradle

//设置脚本的运行环境

buildscript{

//使用maven的依赖,用于项目的依赖

repositories{

mavenCentral()

}

//依赖插件

dependencies{

//注意,插件使用这里的Gradle版本尽量要和你AndroidStudio的Gradle插件版本一致

classpath'com.android.tools.build:gradle:1.3.0'

}

}

//举例

//共享配置

allprojects{

//所有的项目(包括当前项目以及其子项目)应用上idea插件。

applyplugin:'idea'

}

app模块下的build.gradle


//声明当前构建的是android应用还是library

applyplugin:'com.android.library'

applyplugin:'com.android.application'

//依赖包

dependencies{

//加载本地目录下的jar包

compilefileTree(dir:'libs',include:'*.jar')

//加载本地目录下的.so库,版本>2.4Gradle可使用,低版本添加.so请google

compilefileTree(dir:'libs/armeabi',include:'*/so')

//直接指定依赖的包,地址是当前工程为根目录

compilefiles('libs/android-support-v4.jar')

//引用当前目录下的android-library项目,‘eventbuslib’为项目名称,注意":"一定要有

compileproject(':eventbuslib')

//配置远程仓库中的jar包,打包时,检查本地有没有,若没有则下载到本地

//下载的位置:项目名/build/intermediates/exploded-arr/

compile'com.android.support:appcompat-v7:22.0.0'

}

//设置编码类型

tasks.withType(JavaCompile){options.encoding="UTF-8"}

//设置当前Android应用构建信息

android{

//打包SDK版本

compileSdkVersion21

//编译工具版本

buildToolsVersion"20.0.0"

//默认打包配置

defaultConfig{

minSdkVersion14

targetSdkVersion21

versionCode1

versionName"1.0"

}

//资源文件目录

sourceSets{

main{

manifest.srcFile'AndroidManifest.xml'

java.srcDirs=['src']

resources.srcDirs=['src']

aidl.srcDirs=['src']

renderscript.srcDirs=['src']

res.srcDirs=['res']

assets.srcDirs=['assets']

}

}

//打签名设置

signingConfigs{

myConfig{

//key文件,绝对路径和相对路径都可以

storeFilefile("doucument/pragram_key/bluekey")

storePassword"key钥密码"

keyAlias"别名"

keyPassword"别名密码"

}

}

//构建签名和混淆

buildTypes{

release{

//签名文件

signingConfigsigningConfigs.myConfig

//是否打开混淆

minifyEnabledfalse

//混淆配置文件

proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

}

}

//打包设置

packagingOptions{

exclude'META-INF/DEPENDENCIES.txt'

exclude'META-INF/LICENSE.txt'

exclude'META-INF/NOTICE.txt'

exclude'META-INF/NOTICE'

exclude'META-INF/LICENSE'

exclude'META-INF/DEPENDENCIES'

exclude'META-INF/notice.txt'

exclude'META-INF/license.txt'

exclude'META-INF/dependencies.txt'

exclude'META-INF/LGPL2.1'

exclude'META-INF/ASL2.0'

}

//测试所在的路径,这里假设是tests文件夹,没有可以不写这一行

instrumentTest.setRoot('tests')

//Movethebuildtypestobuild-types/<type>

//Forinstance,build-types/debug/java,build-types/debug/AndroidManifest.xml,...

//Thismovesthemoutofthemdefaultlocationundersrc/<type>/...whichwould

//conflictwithsrc/beingusedbythemainsourceset.

//Addingnewbuildtypesorproductflavorsshouldbeaccompanied

debug.setRoot('build-types/debug')

release.setRoot('build-types/release')

}