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

一、介绍下什么是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. robotframework+selenium搭配chrome浏览器,web测试案例(搭建篇)

    这两天发布版本 做的事情有点多,都没有时间努力学习了,先给自己个差评,今天折腾了一天, 把robotframework 和 selenium 还有appnium 都研究了一下 ,大概有个谱,先说说we ...

  2. 检查SQL Server被哪个进程占用,且杀进程。

    -----检查DB的名字---------------------------------------DECLARE @dbName varchar(50)SET @dbName='RegisterO ...

  3. pyc文件

    1.pyc文件 是python预编译后的字节码文件,并不是机器码.2.PyCodeObject 是Python编译器真正编译成的结果: 当python程序运行时,编译的结果是保存在PyCodeObje ...

  4. ehcache如何配置

    1.pom.xml文件配置(主要针对jar包的引入) <ehcache.version>2.6.9</ehcache.version><ehcache-web.versi ...

  5. 第三次OO总结

    规格化设计的调研 随着50年代高级语言的出现,编译技术不断完善,涌现出多种流派的语言,其中就有里程碑式的Pascal语言:进入70年代,由于众多语言造成的不可移植.难于维护,Ada程序设计语言诞生了, ...

  6. php hash_file

    string hash_file ( string $algo , string $filename [, bool $raw_output = FALSE ] ) 参数¶ algo 要使用的哈希算法 ...

  7. shell遍历文件夹

    遍历目录下的所有文件 假如有一个文件夹路径为dir,遍历文件 for file in /path/dir/* do if test -f $file then echo $file arrary=($ ...

  8. android判断密码首字母大写正则表达式

    判断首字母大写"[A-Z]\\w+" \\w所有字符 \\d所有数字

  9. XML生成XAMl扩展

    所有的WPF控件列为枚举 代码如: 1 public enum ControlType 2 { 3 Window_Resources, 4 Page_Resources, 5 Grid, 6 Stac ...

  10. 功能强大的js数组方法:reduce

    arr.reduce()方法接受一个函数作为累加器,数组中的每个值从左到右开始缩减,最终为一个值. reduce接受的参数主要有callback(回调函数)和可选参数initvalue(作为第一次调用 ...