gradle编译android项目实例笔记。



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以上。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值