zoukankan      html  css  js  c++  java
  • gitlab+jenkins自动化打包APK

    前置条件:

    环境搭建,jenkins需要的插件看这里:

    gitlab+jenkins自动化打包IOS

    配置思路:

    step1:

    搭建sdk,gradle运行环境,参照:

    CentOS7下安装安装android sdk & gradle

    step2:

    存在1个android项目(可以先自己创建一个helloworld工程,也可以用git clone一个项目至本地)

    step3:

    确认buildTypes,就是有几个测试环境,这需要和具体的开发沟通好

    step4: 

    测试打包环境可用:

    首先cd到项目的app目录下 

    git克隆项目目录/trunk/5iwork/android/app

     使用gradle clean命令清理一下环境

    gradle clean

    看到Successful的字样就成功了(这里我忘记截图)

    step5:

    使用gradle assmbleproRelease打包,打包成功,如图所示: 

    gradle assmbleproRelease

     

    step6:

    在app/build/outputs/文件下找到刚才生成的apk文件

    运行pwd命令,记录下apk的目录地址(配置shell打包脚本的时候要用): 

    项目所在目录/trunk/5iwork/android/app/build/outputs/apk/pro/release

     

    step7:

    构建打包shell脚本

    复制下面的gradle打包脚本,改一改目录地址,用sh build.sh运行,可以生成apk文件进行下1步

     

    step8:

    配置jenkins构建apk

    注意,如果以前有配置过其它项目打包,这里可以直接复制1个job

     

    修改点:

    1.替换git仓库地址

    2.shell脚本项目目录地址,换为jenkins项目目录;生成apk的目录

    step8:

    构建py脚本,用来把apk文件上传到蒲公英,参照

    pytho脚本-上传apk至蒲公英

     注意要改3个点,如图所示:


     

    做完这些,构建Job,验证配置的结果,如图所示,就well done了

     

    其它:

    gradle打包脚本

     1 ## !/bin/sh
     2 ## 项目名
     3 ##使配置文件生效,否则会报gradle:命令找不到
     4 source /etc/profile
     5 
     6 TARGET_NAME="AppFrameWork"
     7 APKPATH="build/outputs/apk"
     8 MODELGRADLEPATH="app"
     9 BUILDTYPE=${ENV}
    10 
    11 ##打包版本,开发给测试打包默认是release的
    12 APKVERSION="release"
    13 ##debug版本下,apk无需混淆,可以多一些打印日志的操作。
    14 ##release版本下,文件混淆,隐藏日志打印
    15 
    16 ## 当前目录
    17 SORCEPATH=${WORKSPACE}
    18 
    19 ##gradle目录(model级)
    20 GRADLEWORKPATH=${SORCEPATH}/${TARGET_NAME}/${MODELGRADLEPATH}
    21 
    22 ## apk文件的存放路径
    23 EXPORTPATH=${SORCEPATH}/${TARGET_NAME}/${MODELGRADLEPATH}/${APKPATH}
    24 
    25 ##apk文件的存放路径
    26 EXPORTPATHAPK=${EXPORTPATH}/${BUILDTYPE}/${APKVERSION}/${MODELGRADLEPATH}-${BUILDTYPE}-${APKVERSION}.apk
    27 
    28 ## 新的apk名
    29 APKNAME="XXXXAPP"
    30 
    31 ## 更名后apk路径
    32 EXPORTPATHNEWAPK=${SORCEPATH}/${APKNAME}.apk
    33 
    34 ##切换到gradle工作目录
    35 cd ${GRADLEWORKPATH}
    36 
    37 echo -e "============First Build Clean============"
    38 ## 清理缓存
    39 gradle clean
    40 
    41 echo -e "============Export APK============"
    42 
    43 ## 导出APK包
    44 gradle assemble${BUILDTYPE}Release
    45 
    46 echo -e "============Export APK SUCCESS============"
    47 
    48 ## 将APK复制到指定目录 
    49 cp ${EXPORTPATHAPK} ${EXPORTPATHNEWAPK}
    50 echo -e "============APK  Name: ${EXPORTPATHAPK}============"
    51 echo -e "============APK  Enviroment: ${BUILDTYPE}============"

    如果想顺利的完成自动化打包(安卓)首先需要:

    熟悉Gradle脚本(可以看成是一门独立的语言的),理解Task的概念

    参考资料:

    Gradle 构建基础

    Gradle 入门--只此一篇

     

    Tips:

    查看build.gradle中共有多少个task::$ gradle tasks 

    另外对于构造不同测试环境的apk可以参照:

    Gradle之构建变体(BuildVariant)

     

  • 相关阅读:
    npm start报错
    npm install 错误
    vue父子组件间传值
    vue-devtools安装过程的坑
    用js进行排序
    筛选表格数据
    基于ElementUI封装可复用的表格组件
    小程序头部滑动切换
    DisneyDiffuse解析
    基于URP的ScreenSpaceDecal的实现(其实和URP没啥关系)
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11251473.html
Copyright © 2011-2022 走看看