1,下载gradle 2.2或更高版本。
2,配置gradle环境路径,
export GRADLE_HOME=/home/lich/lichtools/gradle-2.2.1
export PATH=$PATH:$JAVA_HOME/bin:$ADB_HOME:$GRADLE_HOME/bin
3,在项目工程的父目录创建类似如下文件:
local.properties
sdk.dir=/home/lich/lichtools/adtbundle/sdk
///////
settings.gradle
include ':pulltorefresh_lib', ':SPEEK_TOOL'
包含所有依赖的库项目和自身项目。
4,在库项目和自身项目下创建构建文件:
库项目build.gradle示例文件:
buildscript{
repositories{
mavenCentral();
}
dependencies{
classpath 'com.android.tools.build:gradle:0.14.+' //如果使用gradle2.2版本,请改为gradle:0.14.+
}
tasks.withType(JavaCompile) { options.encoding = "UTF-8" }
}
apply plugin:'android-library'
dependencies{
// compile fileTree(dir:'libs',include:"*.jar")
}
android{
compileSdkVersion 20
buildToolsVersion "20.0.0"
enforceUniquePackageName=false
lintOptions{
abortOnError false
}
sourceSets{
main{
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
lintOptions{
abortOnError false
}
}
自身项目build.gradle文件:
import java.util.regex.Pattern
//import com.android.builder.DefaultManifestParser
import com.android.builder.core.DefaultManifestParser
buildscript{
repositories{
mavenCentral()
}
dependencies{
classpath 'com.android.tools.build:gradle:0.14.+'
}
tasks.withType(JavaCompile) { options.encoding = "UTF-8" }
}
apply plugin:'android'
dependencies{
compile fileTree(dir:"libs",include:'*.jar')
compile project(':pulltorefresh_lib')
}
android{
compileSdkVersion 20
buildToolsVersion "20.0.0"
enforceUniquePackageName=false
defaultConfig{
minSdkVersion 11
targetSdkVersion 10;
}
lintOptions{
abortOnError false
}
dexOptions {
preDexLibraries = false
}
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'
}
signingConfigs{
myConfig{
storeFile file("speektool")
storePassword "123456"
keyAlias "speektool"
keyPassword "123456"
}
}
buildTypes{
release{
minifyEnabled true
proguardFile file('/home/lich/workspace/SPEEK_TOOL/proguard.cfg')//指定混淆文件
signingConfigs.myConfig
}
}
sourceSets{
main{
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
//rendersrcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
task copyNativeLibs(type: Copy) {
from(new File(project(':SPEEK_TOOL').getProjectDir(), 'libs')) { include '**/*.so' }
into new File(buildDir, 'native-libs')
}
tasks.withType(JavaCompile){
compileTask -> compileTask.dependsOn copyNativeLibs
}
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType( com.android.build.gradle.tasks.PackageApplication){
pkgTask -> pkgTask.jniFolders = new HashSet<File>()
pkgTask.jniFolders.add(new File(buildDir,'native-libs'))
}
}
build.doLast {
def today = new Date().format('yyMMdd');
copy{
//from('build/apk')
from('build/outputs/apk')
into('output')
include('SPEEK_TOOL-debug.apk')
rename('SPEEK_TOOL-debug.apk','SPEEK_TOOL-'+today+'-'+readVersion()+'-build.apk')
}
}
/**
*从Manifest.xml中读取版本号
**/
def readVersion(){
def manifestParser = new DefaultManifestParser()
return manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile);
}
备注:gradle要求sdk build-tool 在19.1以上。