日期 | 版本号 | 修订人 | 备注 |
---|---|---|---|
Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
Gradle是可以用于Android开发的新一代的 Build System, 也是 Android Studio默认的build工具。
Gradle脚本是基于一种JVM语言 – Groovy,再加上DSL(领域特定语言)组成的。
因为Groovy是JVM语言,所以可以使用大部分的Java语言库。所谓DSL就是专门针对Android开发的插件,比如标准Gradle之外的一些新的方法(Method)、闭包(Closure)等。
由于Gradle的语法足够简洁,而且可以使用大部分的java包,当之无愧地成为新一代 Build System。
使用Android Studio新建一个工程后,默认会生成两个build.gralde文件,一个位于工程根目录,一个位于app目录下。还有另外一个文件 –settings.gradle。
根目录下的脚本文件是针对module的全局配置,它的作用阈所包含的所有 module 是通过settings.gradle来配置。
app文件夹就是一个module,如果在当前工程中添加了一个新的module – lib,就需要在settings.gralde文件中包含这个新的module。
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "包名"
minSdkVersion 23
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}
如果需要添加签名文件可以这样做:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "包名"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
signingConfigs {//这是签名文件
release{
storeFile file('签名文件名字')
storePassword '密码'
keyAlias '别名'
keyPassword '别名密码'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release//在此调用签名方法
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile files('libs/paysdk.jar')
}
这里注意是 ./gradlew, ./代表当前目录,gradlew代表 gradle wrapper,意思是gradle的一层包装,可以理解为在这个项目本地就封装了gradle,即gradle wrapper, 在project/gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本。只要下载成功即可用gradlew wrapper的命令代替全局的gradle命令。
项目所用的Gradle版本号
bash$ ./gradlew -v
------------------------------------------------------------
Gradle 2.8
------------------------------------------------------------
Build time: 2015-10-20 03:46:36 UTC
Build number: none
Revision: b463d7980c40d44c4657dc80025275b84a29e31f
Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_79 (Oracle Corporation 24.79-b02)
OS: Mac OS X 10.10.5 x86_64
执行这个命令会去下载Gradle的一些依赖,清除project/app目录下的build文件夹
bash$ ./gradlew clean
:clean
:app:clean
BUILD SUCCESSFUL
Total time: 6.936 secs
This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.8/userguide/gradle_daemon.html
检查依赖并编译打包
bash$ ./gradlew build
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72311Library
:app:prepareComAndroidSupportSupportV42311Library
:app:prepareDebugDependencies
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:generateDebugBuildConfig
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources
:app:mergeDebugResources
AAPT: ***/Demo/app/src/main/res/drawable/alipayv2.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT: ***/Demo/app/src/main/res/drawable/wxv.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT: ***/Demo/app/src/main/res/drawable/wxh.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT: ***/Demo/app/src/main/res/drawable/unpayv2.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
、、、、、、、、、、、、、、、、、、、、、、、
Wrote HTML report to file:***/Demo/app/build/outputs/lint-results.html
Wrote XML report to file:***/Demo/app/build/outputs/lint-results.xml
Lint found 0 errors and 135 warnings
:app:preDebugUnitTestBuild UP-TO-DATE
:app:prepareDebugUnitTestDependencies
:app:compileDebugUnitTestJavaWithJavac
:app:processDebugUnitTestJavaRes UP-TO-DATE
:app:compileDebugUnitTestSources
:app:mockableAndroidJar
:app:assembleDebugUnitTest
:app:testDebugUnitTest
:app:preReleaseUnitTestBuild UP-TO-DATE
:app:prepareReleaseUnitTestDependencies
:app:compileReleaseUnitTestJavaWithJavac
:app:processReleaseUnitTestJavaRes UP-TO-DATE
:app:compileReleaseUnitTestSources
:app:assembleReleaseUnitTest
:app:testReleaseUnitTest
:app:test
:app:check
:app:build
BUILD SUCCESSFUL
Total time: 1 mins 13.157 secs
This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.8/userguide/gradle_daemon.html
编译并打Debug包
编译并打Release的包
Release模式打包并安装
卸载Release模式包
jenkins 构建流程可参考:《jenkins打包总结》
我们需要修改Execute shell
cd ASPayDemo
./gradlew build
将对应project/app/下的build.gradle添加到Build File中即可