Android Studio 之 Gradle与Project Structure详解
启动
Project Structure
的时候可以
Structure
看到分两个区域
一个是项目的总体设置区域.还有一个是对Module的分别设置.
一.项目总体设置
SDK Location中可以设置SDK和JDK路径.
Project中可以设置Gradle与Android工具的信息
发觉有个字母打错了,不理了....
Gradle本身必须有一个仓库源,否则无法运行
什么是仓库源:仓库源就是Gralde对Android支持的一个仓库,对Android进行相应的配置,处理等信息.具体可以参考下面链接
默认的仓库源是jcenter.以前是mavenCentral.也可以填写自定义的地址.本地地址等.具体可以参考以下链接
相关的配置信息可以在项目空间的build.gradle文件查看.打开项目空间的build.gradle文件.可以看到这么一个代码段:
(如何找到这个文件请查看我的上一遍博客:
http://blog.csdn.net/siyehuazhilian/article/details/42123563
)
这里就显示该项目空间的仓库源是jcenter.修改上面的仓库源,这个代码也会跟着变化.
二.Modlue区域
Module一共包含五个选项卡
分别是:属性,签名,多渠道,构建类型,依赖包.
Properties属性
▪Compile Sdk Version:Android的编译版本
▪Build Tools Version: 构建工具版本
▪Library Reposiory当前的Module的仓库源.
这里可以定义一个地址,一个本地路径,或者是jcenter()和mavenCentral().
填写任何一个仓库,AS会自动下载对应的仓库,如果你随便填写一个,会提示你无法连接到该仓库.我这这里填写了
mavenCentral()
在打开对应的.Gradle配置文件
可以看到有被修改的标志了.点进去以后
发觉这个文件自动添加了一个仓库源.名字就是
mavenCentral(),
然后最下面的状态栏显示正在下载
mavenCentral()仓库.
注意:由于项目空间已经定义了仓库源,所以Module的build.gradle文件默认是没有仓库源的,通常情况下也不需要填写
Ignore Assets Pattern:打包时候要忽略的文件
这将影响所有使用aapt的task.
这里我填写一个siyehua.
在对应的文件中可以看到多了以下代码:
Incremental Dex:增长DEX
Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行
如果将它设置为ture,可以看到对应的文件中增加了如下代码
dexOptions {
incremental true
}
Source Compatibility:资源版本Target Compatibility:目标版本
两个都选了1.7,可以看到增加了如下代码:
Signing签名
它们之间的关系是:
一个keystroe就是一个签名文件.打开它需要一个密码,就是keystore密码.
Keystrore中可以存放多个key Alias,每一个key alias有一个单独的密码.
Flavors(多样性,多渠道)
我们的应用经常需要多渠道打包.这个可以翻译为多渠道打包.
Name:Flaveor的名字
Min Sdk Version:向下兼容的SDK版本
Application Id:包名
Proguard File:混淆文件
混淆文件,去除无用文件,并优化代码
Signig Config:签名文件名.
签名的文件信息在前一个选项卡Signing中设置.在这里选择
Target Sdk Version:目标SDK版本
Test Instrumentation Runner:Test Runner
Test Application Id:测试时的ID
Version Name:Module版本名称
设置了以后可以看到这个渠道对应的信息
Build Types构建类型
Name:Build Type名称
Debugable:是否可以调试
Jin Debuggable:是否可以调试JNI
Signing Config:签名信息
Renderscript Debuggale:是否使用RenderScript
Renderscript Optim Level:Rendescript版本.
RenderScript相关介绍
http://www.cnblogs.com/TerryBlog/archive/2012/03/02/2377251.html
Minify Enabled:是否去除无用的资源
Pseudo Locales Enaled:是否支持本地化整理
Proguard File:混淆,去重文件路径
Application Id Suffix:App id后缀
Version Name Suffix:版本名称后缀
Zip Align Enabled:是否支持Zip Align
tesst_001设置好以后的对应属性:
Dependencies(依赖)
在这里添加添加jar包,library等.
其中
1.表示添加用系统的library,例如v7,v4包.
2.添加jar包(注意这个jar包必须在当前的Module)
3.添加一个Module(这个工程是AS A Libray)
添加以后,点击这个,会出现一下的选项.
分表是编译,提供,导出APK时,测试编译时,调试,发布时.
这里选择release complie.在对应的build.gradle中显示
总结:
看完了上面的所有信息,我们再来看看项目空间的build.gradle和其中的一个module的build.gradle文件的信息
项目空间build.gradle文件:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
module的build.gradle文件:
apply plugin: 'com.android.application'
android {
signingConfigs {
test1 {
keyAlias 'siyehua'
keyPassword 'siyehua'
storeFile file('C:/Users/Administrator/Desktop/work/其他/tour.keystore')
storePassword 'siyehua'
}
}
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.siyehua.android_siyehua"
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
signingConfig signingConfigs.test1
testApplicationId 'siyehua'
testInstrumentationRunne
r 'siyehua' }
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
testbuild_001 {
debuggable true
jniDebuggable true
signingConfig signingConfigs.test1
renderscriptDebuggable true
applicationIdSuffix '_10087'
versionNameSuffix '_10088'
minifyEnabled true
pseudoLocalesEnabled true
zipAlignEnabled true
}
debug {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
productFlavors {
flavor12 {
}
}
aaptOptions {
}
dexOptions {
incremental false
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.2'
releaseCompile files('libs/xmn_lpush_1.3.jar')
}
repositories {
123
}
看完上面的的相信大家对Gradle,相应的配置,以及要怎么配置,在哪里配置.都有了一个大概的了解.
注意:直接修改gradle会直接修改对应的设置.
更多Gralde信息.比如说Flavors与Build Types之间有什么关系,对项目的构建会产生什么影响.
如何使用命令行配置等等问题
可以参考以下链接(这些链接也是我写这博文的参考基础.):
①Gradle翻译:在这里可以看到每个选项的作用是什么,翻译的非常好
②Gradle基础,学习之路大神最新教程
③Gralde官网
对应的部分使用翻译
④Gralde翻译以及使用
博客转载地址:http://blog.sina.com.cn/s/blog_77d5a0310102vhw1.html