新项目
新项目
Project build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Repositories 配置的是上面所说的依赖管理的东西,也就是依赖管理的服务器。默认是 jcenter() 你可以添加其他,多个之间不干扰。
dependencies 这个也是依赖管理的东西,上面是指定依赖管理的服务器,这个就是具体依赖什么库。
APP Module
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "com.example.application"
minSdkVersion 18
targetSdkVersion 25
versionCode 1
versionName "1.0.0"
ndk {
moduleName "genius"
cFlags "-DANDROID_NDK -D_RELEASE"
ldLibs "m", "log", "jnigraphics"
abiFilters "all"
}
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug{
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
sourceSets {
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']
}
}
productFlavors {
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 "×××"
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile 'com.squareup.okhttp:mockwebserver:2.7.2'
compile 'com.android.support:appcompat-v7:25.1.1'
}
dependencies :
这个也就是所谓的依赖了,在这里不光可以进行远程依赖(上面所说的方法),也可以本地。
compileSdkVersion 25
buildToolsVersion "25.0.2"
这两个就是指定的编译SDK以及编辑工具版本
defaultConfig
这个自然就是默认配置了,既然是默认配置那么久相当于全局配置,也就是说这里边配置的下面的 buildTypes 中也将自动继承了。
在这个中可以放入很多的控制,如下面 buildTypes/release 中的配置你也可以放到其中:
defaultConfig {
applicationId "com.example.application"
minSdkVersion 18
targetSdkVersion 25
versionCode 1
versionName "1.0.0"
ndk {
moduleName "genius"
cFlags "-DANDROID_NDK -D_RELEASE"
ldLibs "m", "log", "jnigraphics"
abiFilters "all"
}
}
buildTypes
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug{
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
在这里进行配置的是你的编译配置,可以看见这里有一个 release ,当然也就是有 debug 部分,两个部分配置都是一样。
在这里主要进行的配置是是否进行代码混淆,所以有一个代码混淆的开关,以及代码混淆的具体文件,文件有两种,无论哪种都行。
compileOptions
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
在这里你可以进行 Java 的版本配置,以便使用对应版本的一些新特性。
sourceSets
sourceSets {
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']
}
}
这个部分,看名字应该有个大概意思就是说源码设置,其是很多从 Eclipse 中迁移过来的代码,大部分中都将带有这个设置,因为 Eclipse的文件夹与 AS 不尽相同,所以需要手动指定。
以上是一些常用的设置,其中最后一个是引用 *.so 文件的时候使用的方法。
productFlavors
在这里你可以设置你的产品发布的一些东西,比如你现在一共软件需要发布到不同渠道,且不同渠道中的包名不同,那么可以在此进行配置;甚至可以设置不同的 AndroidManifest.xml 文件。productFlavors {
flavor1 {
packageName='com.example.qiujuer.application1'
manifest.srcFile 'exampleapk/AndroidManifest1.xml'
}
flavor2 {
packageName='com.example.qiujuer.application2'
manifest.srcFile 'exampleapk/AndroidManifest2.xml'
}
}
signingConfigs
包签名的配置,可以设置具体的签名文件,签名密码等等signingConfigs {
release {
storeFile file("×.keystore")
storePassword "×××"
keyAlias "××××"
keyPassword "×××"
}
}
这个可以不用自己创建,你可以点击 build/generate signed apk,在其中选择你的文件或者创建签名文件,设置密码等等,然后选择记住密码,然后就会看见有这个配置了。
lintOptions
设置 编译的 lint 开关。
lintOptions {
abortOnError false
}
程序在buid的时候,会执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。