了两周终于搞掂了,期间各种搜教程、各种懵逼,各种坑对小白来还是很难的额。废话不多说直接开撸~~~

一、介绍下什么是Gradle

Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。

功能
  • gradle对多工程的构建支持很出色,工程依赖是gradle的第一公民。
  • gradle支持局部构建。
  • 支持多方式依赖管理:包括从maven远程仓库、nexus私服、ivy仓库以及本地文件系统的jars或者dirs
  • gradle是第一个构建集成工具,与ant、maven、ivy有良好的相容相关性。
  • 轻松迁移:gradle适用于任何结构的工程,你可以在同一个开发平台平行构建原工程和gradle工程。通常要求写相关测试,以保证开发的插件的相似性,这种迁移可以减少破坏性,尽可能的可靠。这也是重构的最佳实践。
  • gradle的整体设计是以作为一种语言为导向的,而非成为一个严格死板的框架。
  • 免费开源
 
gradle提供了什么
  • 1.一种可切换的,像maven一样的基于约定的构建框架,却又从不锁住你(约定优于配置)
  • 2. 强大的支持多工程的构建
  • 3. 强大的依赖管理(基于Apache Ivy),提供最大的便利去构建你的工程
  • 4. 全力支持已有的Maven或者Ivy仓库基础建设
  • 5. 支持传递性依赖管理,在不需要远程仓库和pom.xml和ivy配置文件的前提下
  • 6 基于groovy脚本构建,其build脚本使用groovy语言编写
  • 7 具有广泛的领域模型支持你的构建

二、安装Gradle

官网教程:https://gradle.org/install/

下载gradle4.8版本的:https://gradle.org/next-steps/?version=4.8&format=bin

步凑如下:

1、安装软件包

[root@hejianlai-jenkins ~]# unzip gradle-4.8-bin.zip -d /usr/local/
[root@hejianlai-jenkins ~]# cd /usr/local/
[root@hejianlai-jenkins local]# ln -s gradle-4.8/ gradle
[root@hejianlai-jenkins local]# ls gradle
bin getting-started.html gradle-4.8 init.d lib LICENSE media NOTICE

2.配置环境变量

[root@hejianlai-jenkins ~]# vim /etc/profile

export GRADLE_HOME=/usr/local/gradle
export PATH=$PATH:${GRADLE_HOME}/bin
[root@hejianlai-jenkins ~]# source /etc/profile
[root@hejianlai-jenkins local]# gradle -v ------------------------------------------------------------
Gradle 4.8
------------------------------------------------------------ Build time: 2018-06-04 10:39:58 UTC
Revision: 9e1261240e412cbf61a5e3a5ab734f232b2f887d Groovy: 2.4.12
Ant: Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM: 1.8.0_171 (Oracle Corporation 25.171-b11)
OS: Linux 3.10.0-693.el7.x86_64 amd64

三、安装sdk

安装包下载地址:http://tools.android-studio.org/index.php/sdk/

步凑如下:

1、安装软件包

[root@hejianlai-jenkins fs01]# tar -zxf android-sdk_r24.4.1-linux.tgz

2、配置环境变量

[root@hejianlai-jenkins fs01]# vim /etc/profile

export ANDROID_HOME=/fs01/android-sdk-linux
export PATH=$ANDROID_HOME/tools:$PATH
[root@hejianlai-jenkins fs01]# source /etc/profile 更新所有的包
[root@hejianlai-jenkins fs01]# android update sdk --no-ui
显示所有可更新包
[root@hejianlai-jenkins fs01]# android list sdk -a
Packages available for installation or update: 206
1- Android SDK Tools, revision 25.2.5
2- Android SDK Platform-tools, revision 28
3- Android SDK Build-tools, revision 28
4- Android SDK Build-tools, revision 27.0.3
5- Android SDK Build-tools, revision 27.0.2
6- Android SDK Build-tools, revision 27.0.1
7- Android SDK Build-tools, revision 27
8- Android SDK Build-tools, revision 26.0.3
9- Android SDK Build-tools, revision 26.0.2
10- Android SDK Build-tools, revision 26.0.1
11- Android SDK Build-tools, revision 26
12- Android SDK Build-tools, revision 25.0.3
13- Android SDK Build-tools, revision 25.0.2
14- Android SDK Build-tools, revision 25.0.1
15- Android SDK Build-tools, revision 25
16- Android SDK Build-tools, revision 24.0.3
17- Android SDK Build-tools, revision 24.0.2
18- Android SDK Build-tools, revision 24.0.1
19- Android SDK Build-tools, revision 24
20- Android SDK Build-tools, revision 23.0.3
21- Android SDK Build-tools, revision 23.0.2
22- Android SDK Build-tools, revision 23.0.1
23- Android SDK Build-tools, revision 23 (Obsolete)
24- Android SDK Build-tools, revision 22.0.1
25- Android SDK Build-tools, revision 22 (Obsolete)
26- Android SDK Build-tools, revision 21.1.2
...
后面jenkins部署时可能会报错说缺少包,我们就可以根据相应的序列号安装软件包,命令如下:
[root@hejianlai-jenkins fs01]# android update sdk -a --no-ui --filter 9,20

四、安装ndk(可选,因为我的项目用到ndk)

安装包下载地址:http://dl.google.com/android/ndk/android-ndk-r8e-linux-x86_64.tar.bz2

1、安装软件包
[root@hejianlai-jenkins fs01]# tar -jxf android-ndk-r8e-linux-x86_64.tar.bz2
2、配置环境变量
[root@hejianlai-jenkins fs01]# vim /etc/profile
export ANDROID_DNK_HOME=/fs01/android-ndk-r8e
export PATH=$ANDROID_DNK_HOME:$PATH
[root@hejianlai-jenkins fs01]# source /etc/profile
显示下面内容说明安装成功
[root@hejianlai-jenkins fs01]# ndk-build
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
/fs01/android-ndk-r8e/build/core/build-local.mk:130: *** Android NDK: Aborting . Stop.

五、配置jenkins

【系统管理】——【系统设置】,添加sdk和ndk的环境变量。

【系统管理】——【全局工具配置】,添加gradle环境变量。

创建一个自由风格的项目

配置Invoke Gradle script

配置Archive the artifacts

aaarticlea/png;base64,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" alt="" width="790" height="193" />

构建后的效果

到此大功告成,期间遇到很多坑详情请看:https://www.cnblogs.com/Dev0ps/p/9219220.html

Jenkins系列之七——前端app自动打包的更多相关文章

  1. Jenkins结合shell脚本实现(gitLab/gitHub)前端项目自动打包部署服务器

    原始发布部署: 石器时代的我们,先是本地打包好项目,在去服务器上把原来的文件删了,然后回到本地copy到服务器: 这操看起来简单,实际部署的人就知道多烦了,假如来几个项目都要重新发布:那就爽了: 今天 ...

  2. jenkins系列(11)-自动打tag升级篇

    很久以前,小怪分享过一篇jenkins自动打tag的文章(jenkins系列1--自动打tag),经过在项目实战和改进,我们升级了方案,现在和大家分享.,希望大家在工作中能够用起来. 使用步骤: 1. ...

  3. 建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统

    我们的思路是每天下班后团队各成员在指定的时间(例如下午18:30)之前把各自的代码上传到SVN,然后服务器在指定的时间(例如下午18:30)更新代码.执行ant 打包命令.最后将apk包存放在指定目录 ...

  4. Jenkins+maven+Tomcat+SVN一键自动打包部署应用到服务器

    今天请教了大神,终于把jenkins给搞明白了 现在做下笔记,防止自己老年痴呆又忘了怎么配置 (截图可能不够清晰,有不清楚的随时评论打call) 机器配置: 安装配置规划 机器 192.168.169 ...

  5. 解放双手 | Jenkins + gitlab + maven 自动打包部署项目

    前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...

  6. Jenkins系列之四——设置邮件通知

    Jenkins持续集成,当我们自动打包部署完,我们可以发送一封邮件给相关的负责人.现介绍一下如何在Jenkins中配置实现邮件通知. 在Jenkins中配置实现邮件通知,Jenkins提供了两种方式的 ...

  7. DevOps系列——Jenkins/Gitlab自动打包部署

    前面只说了DevOps的两个基础组件Jenkins和GitLab,客官也不要着急,我们玩就玩的深入一点,Gitlab和Jenkins的各种配置和 插件很多,也够啃一阵子的,不要照着操作一通就感觉万事大 ...

  8. Jenkins 实现前端自动打包,自动部署代码及邮件提醒功能

    在之前的公司,我们前端使用webpack构建项目,项目构建完成后,我们会使用ftp或linux的一些命令工具上传我们的文件到服务器上,这种方式虽然是可以,但是最近面试的时候,人家会问我前端如何部署项目 ...

  9. 在windows平台下electron-builder实现前端程序的打包与自动更新

    由于8月份上旬公司开发一款桌面应用程序,在前端开发程序打包更新时遇到一些困扰多日的问题,采用electron-builder最终还是得到解决~ 以下是踩坑的过程及对electron打包与更新思路的梳理 ...

随机推荐

  1. "车羊门问题"作业

    作业完成人: 学号:20171301008 潘松泉: 学号:20171301022 陈霖彬: 1.按照你的第一感觉回答,你觉得不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没 ...

  2. CoUninitialize引发的一个错误

    程序开始已使用CoUninitialize,后边的函数又再次调用CoUninitialize,判断返回值,导致函数提前退出返回异常.

  3. 小白的CTF学习之路4——内存

    明天要进行二模考试了,沉住气,加油,能过 内存是学C路上必不可少的一环,一定要非常认真的去学 内存的物理结构: ROM:只读内存——早期的手机 RAM:读写(数据断点既消) DRAM:经常更新 SRA ...

  4. centos7 安装freetype

    1:下载: wget "http://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.bz2" 2:  ...

  5. python迭代器与生成器详解

    迭代器与生成器 迭代器(iterator)与生成器(generator)是 Python 中比较常用又很容易混淆的两个概念,今天就把它们梳理一遍,并举一些常用的例子. for 语句与可迭代对象(ite ...

  6. Python开发——11.异常及异常处理

    一.异常 1.定义 异常及时程序运行时发生错误的信号 2.种类 异常分为语法错误和逻辑错误,语法错误在程序执行之前就应该改正. 常用异常 AttributeError 试图访问一个对象没有的树形,比如 ...

  7. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...

  8. 20145232韩文浩《网络对抗》PC平台逆向破解

    shellcode注入 1.Linux下有两种基本构造攻击buf的方法:retaddr+nop+shellcode,nop+shellcode+retaddr.我们采用anything+retaddr ...

  9. openXML写Excel列组合

    重要代码: DOS.SheetData sheetData = new DOS.SheetData(); DOS.Columns columns = new DOS.Columns(); DOS.Co ...

  10. CSS伪类的理解

    因为之前一直对css伪类没有过多的了解,在网上看到一段css代码,不能理解 a:hover span.title{ color:red; ......... } 现通过查询css手册,其实css伪类只 ...