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

一、介绍下什么是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. pypi batch download

    https://wiki.archlinux.org/index.php/Python_package_guidelines_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87 ...

  2. python中print不换行

    python中的print打印的结果总是进行了换行,如果不想换行显示可以在print中添加“end ='' ” 一般print显示: for i in range(3): print(i) #显示结果 ...

  3. PLSQL账号密码

    Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqzserial Number:601769 password:xs374ca

  4. tomcat与iis公用80端口(已经发布.net项目现在开发Java项目时tomcat在eclipse中localhost:8080打不开问题)

    在开发过.net项目的电脑上安装eclipse配置tomcat运行时打不开页面问题描述,这也是本人亲生经历,找了好多资料网上大多都是tomcat配置问题描述,今天突然想到是不是IIS的问题,果然上网一 ...

  5. Android手机插上usb能充电但不能识别的一种解决方法

    设备要求 已root的Android手机. 背景 这个方法是意外发现的,最初同事有一台测试机插上usb能充电但不能识别,他让我帮他看看怎么回事,于是我就按照常规套路,开发者模式.usb调试.MTP什么 ...

  6. Linux学习---内存分布基础

    内核空间 应用程序不允许访问 -----------------------------------------3G 栈空间 局部变量 RW ----------------------------- ...

  7. media 标签解释

    一:常用标签这句话是自动设置缩放,然而,它并不能完全适应所有的手机,并且你在用浏览器手机模式调试的时候可能正常,但是换到真实的手机端其实是不正常的.所以我们还要进行改动. <meta name= ...

  8. java中super(),与构造方法链(constructor chaining)

    public class Apple extends Fruit { } class Fruit{ public Fruit(String name){ System.out.println(&quo ...

  9. Atomic in Redis

    Since Redis is single-threaded, everything is atomic.

  10. How to setup Visual Studio without pain

    Visual Studio (VS) can be very hard to install. If you are lucky, one whole day may be enough to ins ...