Android studio的gradle目录结构
来源:互联网 发布:beatbox教学软件 编辑:程序博客网 时间:2024/05/16 18:28
- ./build.gradle
- ./gradle.properties
- ./gradlew
- ./gradlew.bat
- ./local.properties
- ./setting.gradle
- ./XXX.iml
- ./app/build.gradle
- ./app/app.iml
- ./app/proguard-rules.pro
gradle项目自动编译的时候要读取的配置文件。
依赖管理
支持多方式依赖管理:包括从 maven 远程仓库、 nexus 私服、 ivy 仓库以及本地文件系统的 jars 或者 dirs 。
AS的六种依赖:
Compile,Provided,APK,Test compile,Debug compile,Release compile
Compile
compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。
Provided
Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。
APK
只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错
Test compile
Test compile 仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。
Debug compile
Debug compile 仅仅针对debug模式的编译和最终的debug apk打包。
Release compile
Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。
build.grade有两个,一个是全局的,一个是在模块里面。
全局的build.grade主要设置的是声明仓库源,gradle的版本号说明等。
./build.gradle
buildscript { repositories {//repositories 配置的是依赖管理的东西,也就是依赖管理的服务器。默认是 jcenter() 也可以添加其他,多个之间不干扰。
// 声明仓库源,比如我们构建了一个安卓的库,现在想要把库上传到jcenter中供别人一起使用,则可以上传到jcenter中 // 具体上传步骤见:http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0227/2502.html jcenter() } dependencies { // 说明gradle的版本号 classpath 'com.android.tools.build:gradle:1.3.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}// 所有项目都继承这个配置allprojects { repositories { mavenLocal() jcenter() }}
./app/build.grade 设置了模块的gradle构建配置
// 说明这个模块是安卓项目,如果是多模块开发,有可能有的值为java/warapply plugin: 'com.android.application'//表示的是添加插件,其是可以理解为该 model 为一个 com.android.application 程序,也就是应用程序,如果你的 Model 是一个库,那么也就是:apply plugin: 'com.android.library'
// 配置了所有android构建的参数android { // 编译使用SDK版本 compileSdkVersion 23 // 编译工具的版本 buildToolsVersion "23.0.1" defaultConfig {//默认配置 也相当于全局配置,这里边配置的下面的 buildTypes 中也将自动继承了。
// 包名 applicationId "com.awesomeproject" // sdk最低支持版本 minSdkVersion 16 // 目标SDK版本,如果目标设备的API版本正好等于此数值,就不会为此程序开启兼容性检查判断的工作 targetSdkVersion 22 // 版本号 versionCode 1 versionName "1.0" // 原生 ndk { abiFilters "armeabi-v7a", "x86" } } buildTypes {//编译配置
// 发布时候的设置 release { // 是否进行混淆 minifyEnabled false // 混淆使用文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
sourceSets { //源码设置 其是很多从 Eclipse 中迁移过来的代码,大部分中都将带有这个设置,因为 Eclipse的文件夹与 AS 不尽相同,所以需要手动指定。
main {
manifest.srcFile
'AndroidManifest.xml'
java.srcDirs = [
'src'
]
resources.srcDirs = [
'src'
]
aidl.srcDirs = [
'src'
]
renderscript.srcDirs = [
'src'
]
res.srcDirs = [
'res'
]
assets.srcDirs = [
'assets'
]
jniLibs.srcDirs = [
'libs'
]
}
}
compileOptions {//在这里你可以进行 Java 的版本配置,以便使用对应版本的一些新特性。
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
lintOptions { //设置编译的 lint 开关,程序在buid的时候,会执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。
abortOnError
false
}
//这个可以不用自己创建,你可以点击 build/generate signed apk,在其中选择你的文件或者创建签名文件,设置密码等等,然后选择记住密码,然后就会看见有这个配置了。productFlavors { //在这里你可以设置你的产品发布的一些东西,比如你现在一共软件需要发布到不同渠道,且不同渠道中的包名不同,
那么可以在此进行配置;甚至可以设置不同的 AndroidManifest.xml 文件。这个配置不常用
flavor1 {
packageName=
'com.example.qiujuer.application1'
manifest.srcFile
'exampleapk/AndroidManifest1.xml'
}
flavor2 {
packageName=
'com.example.qiujuer.application2'
manifest.srcFile
'exampleapk/AndroidManifest2.xml'
}
}
signingConfigs { //包签名配置 设置具体的签名文件,签名密码等等
release {
storeFile file(×.keystore)
storePassword ×××
keyAlias ××××
keyPassword ×××
}
}
}
// 依赖的工具包dependencies {//可以是远程依赖,也可以是本地的 compile fileTree(dir: 'libs', include: ['*.jar'])
//这句话就是说编译时依赖 libs 文件夹下的所有 jar 文件
compile project(':library')
//这也是依赖,不过依赖的是一个 model ,在一个项目中可以有多个 model ,这句话的意思就是依赖一个本项目中名称为library 的 model 库。
compile 'com.android.support:appcompat-v7:23.0.0'
//这句话也就是依赖一个远程的库了,这个库的作用是在低版本中使用一定的 Material Design 的东西。
compile 'com.facebook.react:react-native:0.11.+'}
./app/proguard-rules.pro
这个和上面说的一样混淆文件
./gradle.properties
grade的运行环境配置,比如使用多少内存之类的。
./gradlew 和 ./gradlew.bat
自动完成 gradle 环境的脚本,在linux和mac下直接运行gradlew会自动完成gradle环境的搭建。
./local.properties
配置SDK或者NDK的环境路径,各个机器上这个变量可能都是不一样的,所以不应该进入版本库
./setting.gradle
整个项目的管理,比如这个项目包含哪些模块等。
./XXX.iml 和 ./app/app.iml
iml是Intellij模块文件。Intellij是一款JAVA的IDE。Android Studio是基于开源的Intellij IDEA开发出来的IDE。
所以Android Studio有的IDE功能是需要有.iml才能使用的。比如我们删除了iml文件,可能就在Android Studio中看不到一些目录了。
- Android studio的gradle目录结构
- Android Studio目录结构和Gradle构建Android项目
- gradle android 目录结构
- Android Studio Gradle 对应的下载目录
- Android studio的目录结构
- Android studio Gradle项目结构
- android studio 目录结构
- android studio 目录结构
- Android studio 目录结构
- Android Studio目录结构
- android studio 目录结构
- Android Studio目录结构
- Android Studio目录结构
- Android Studio 目录结构
- Android Studio目录结构
- Android Studio目录结构
- Android Studio目录结构
- Android Studio目录结构
- iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现
- EL表达式截取字符串
- 礼拜四log~js控制台输出 & c:forEach
- Linux Netlink
- STM32读写保护功能及设置
- Android studio的gradle目录结构
- 『C++ Primer学习笔记』Chapter 1
- Eclipse 插件安装jetty
- ehcache 使用笔记
- 单例
- sdas
- ExpandableListView使用重要方法总结
- C#查找8邻域连通域算法
- UIAlertControllr的使用