Jenkins Gradle 打包

Android Studio Gradle

1. 版本历史

日期 版本号 修订人 备注

2. 目标读者

  • jenkins打包人员

3. 文档目的

  • 简单介绍Android Studio Gradle
  • 在jenkins上构建Android Studio的工程

4. 主要内容

4.1 Gradle简介

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。

4.2 Android Studio工程的基本Gradle文件

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')
}

4.3 Android Studio工程的Gradle命令

这里注意是 ./gradlew, ./代表当前目录,gradlew代表 gradle wrapper,意思是gradle的一层包装,可以理解为在这个项目本地就封装了gradle,即gradle wrapper, 在project/gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本。只要下载成功即可用gradlew wrapper的命令代替全局的gradle命令。

4.3.1 ./gradlew -v

项目所用的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

4.3.2 ./gradlew clean

执行这个命令会去下载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

4.3.3 ./gradlew build

检查依赖并编译打包

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

4.3.4 ./gradlew assembleDebug

编译并打Debug包

4.3.5 ./gradlew assembleRelease

编译并打Release的包

4.3.6 ./gradlew installRelease

Release模式打包并安装

4.3.7 ./gradlew uninstallRelease

卸载Release模式包

5. jenkins打包应用

jenkins 构建流程可参考:《jenkins打包总结》

5.1 Execute shell

我们需要修改Execute shell

cd ASPayDemo
./gradlew build

5.2 Invoke Gradle script

将对应project/app/下的build.gradle添加到Build File中即可

你可能感兴趣的:(Android)