github actions实现Android持续集成

2023-11-15

持续集成(Continuous Integration)在很多单位都有现成的系统,但是作为一名工程师,我们还是要了解其原理,可以自己尝试做一下。经过本人的尝试,发现功能并不复杂。这里把持续集成实践经验总结与大家分享。

持续集成用的比较多的是jenkins。后来在网上搜索发现github也有这个功能,就想着用github来实现。github功能的确十分强大,我们平时用到的github功能主要是托管代码等很小一部分功能。本文持续集成android项目实现的功能主要有以下两个:

1.在有新提交时自动编译打包。

2.将打包生成的apk上传至github的文件存储artifact,这样我们就能随时想用的时候就去下载对应的apk。

Step 1:新建workflow

点击自己的github项目,平时我们选择的标签页是Code,这里我们选择action。

 

 

点击New workflow的按钮。

Step2:选择Anroid CI.

在workflow页面选择Android CI。这时会提供给我们一个通用的模板。我们选中这个Android CI,点击Set up this workflow.

选中后在代码在项目 "根目录/.github/workflows" 会生成如下yml文件。

 

当然,如果不通过github的页面去创建workflow,直接在相应目录创建yml文件,然后推送到服务端,也可以识别。注意,通过github ui默认创建的workflow在main分支,我们可以在代码目录的自己想要CI的分支加上对应的yml文件。

yml文件目前的内容如下:

name: Android CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'
        distribution: 'adopt'

    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
    - name: Build with Gradle
      run: ./gradlew build

从上面的代码中我们可以看出,代码的最后一行执行的任务是build。这里我将其改为./gradlew assembleRelease。这样就可以实现打包apk。

Step3:上传apk到artifact.

为了将apk上传,我们需要使用artifact相关的命令。当执行任务的时候,github有很多种命令可以选择,可以在编辑yml文件的右边的Marketplace寻找自己需要的插件,并查看对应的语法。

这里我们从上图的"Upload a Build artifact"中,找到相应的语法将我的apk上传。最终我的完整的yml文件如下:

name: android master CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: set up JDK 11
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew
      - name: Build with Gradle
        run: ./gradlew assembleRelease

      - uses: actions/upload-artifact@v2
        with:
          name: upload-apk
          path: |
            ${{github.workspace}}/app/build/outputs/apk/tencent/release/*.apk
            ${{github.workspace}}/app/build/outputs/apk/xiaomi/release/*.apk

 

如上图的yml文件,编辑完成后保存。这样,每次我们提交新代码的时候,github就会自动编译并将生成的apk上传。当出现编译错误时,github会自动将错误推送到github绑定的邮箱。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

github actions实现Android持续集成 的相关文章

  • 史上最全的2023年最新版Android面试题集锦(含答案解析)

    前言 又到了一年的金三银四黄金求职季 虽说今年以来 经济回暖 但行业岗位缺口紧缩的趋势恢复还需一段时间 尤其对于Android开发而言 想要跳槽到一个高薪岗位更是难上加难 因此 想要杀出重围 必然要有万全的准备 除了一份美观的简历 还必须刷
  • Android无线网络调试手机

    adb tcpip 5555 adb下载地址 http download clockworkmod com test UniversalAdbDriverSetup msi 3 在设备中下载超级终端 是andriod软件 设置端口 su s
  • ListView具有多种item布局——实现微信对话列 .

    这篇文章的效果也是大家常见的 各种通讯应用的对话列表都是这种方式 像微信 whatsapp 易信 米聊等 我们这篇文章也权当为回忆 形成简单的笔记 这篇文章参考了2009年Google IO中的 TurboChargeYourUI How
  • Android自动调整字体大小的TextView

    文章目录 一 前言 二 设置 TextView 文本自动调整大小 2 1 默认缩放 2 2 按粒度缩放 2 3 按预设定值缩放 三 使用支持库实现文本自动缩放 一 前言 在应用开发过程中 可能需要这样的场景 一个现实区域有限的TextVie
  • c++ java rgb与nv21互转

    目录 jni函数 c rgb转nv21 可以转 不报错 但是转完只有黑白图 java yuv420保存图片 先转nv21 再保存ok c yuv420月bgr互转 测试ok jni函数 JNIEXPORT void JNICALL Java
  • 快速掌握 Android Studio 中 Gradle 的使用方法

    Gradle是可以用于Android开发的新一代的 Build System 也是 Android Studio默认的build工具 Gradle脚本是基于一种JVM语言 Groovy 再加上DSL 领域特定语言 组成的 因为Groovy是
  • 在 Android Studio 2.2 中愉快地使用 C/C++

    使用 Android studio 你可以将 C 和 C 代码编译成 native library 然后打包到你的 APK 中 你的 Java 代码可以通过 Java Native Interface JNI 调用 native libra
  • Android快速开发框架-ZBLibrary 源码分享

    坐标标准库ZBLibrary 是一个MVP架构的Android快速开发框架 提供一套开发标准 UI Data Listener 以及模板和工具类并规范代码 封装层级少 简单高效兼容性好 一句代码就可实现全局滑动返回 可重写 集成方便快捷的照
  • 26.kotlin的get和set方法

    1 kotlin类中的get和set方法 fun main args Array
  • ScrollView默认位置不是最顶部

    场景描述 在scrollview中套用了一个recycleview 发现 recycleview上面的部分TextView不能被显示 直接显示的是recycleview的底部 分析原因 在Activity计算窗口的高度时 是在listvie
  • Opengles 2.0 错误 called unimplemented OpenGL ES API

    在使用Android进行opengl es进行开发时 可能会出现这个called unimplemented OpenGL ES API错误 图也没绘出来 如果确定你的模拟器或者真机支持opengl es 并且支持相关版本时 采用2 0时报
  • Android开发常用开源框架:图片处理

    1 图片加载 缓存 处理 框架名称 功能描述 Android Universal Image Loader 一个强大的加载 缓存 展示图片的库 已过时 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的
  • 解决“The method XXXXXX of type XXXXXXXXX must override a superclass method”

    我的Eclipse版本是3 6 1 Override 时出现以下错误 The method XXXXXX of type XXXXXXXXX must override a superclass method 上网搜索原来原因是 实现类里面
  • Android--图片轮播(banner)

    推荐第三方框架banner 地址 https github com youth5201314 banner 使用步骤 Step 1 依赖banner Gradle dependencies compile com youth banner
  • Android基础知识 - 内置SQLite数据库

    文章目录 SQLite数据库简单介绍 创建数据库 SQLiteOpenHelper类 简单概述 DatabaseTest项目 升级数据库 对表中的数据进行操作 添加数据 更新数据 删除数据 查询数据 使用SQL操作数据库 SQLite数据库
  • Android mob(sharesdk)微信分享/微信朋友圈分享/QQ分享/QQ空间分享/新浪微博分享(自定义)

    使用场景 H5混合开发转Android 原生开发 之前也是用的友盟分享 微信原生 QQ原生 微博原生分享 今天这个项目恰好是用的mob的sharesdk分享 老实说 还是第一次使用 一开始接手项目的时候 还以为mob是个后台 来一张效果图
  • 还对Flutter理解不透?看完这些迟早成为大佬~

    Flutter是什么 Flutter简介 Flutter是谷歌的移动UI框架 可以快速在iOS和Android上构建高质量的原生用户界面 一份代码可以同时生成iOS和Android两个高性能 高保真的应用程序 Flutter目标是使开发人员
  • Android获取手机信号强度汇总

    雪里香梅 先报春来早 宋 欧阳修 蝶恋花 如今的天气是越来略冷了 每每走在凛冽的寒风中 心里就一个想法 春 假 天 期 怎么还不到 不知道大家有没有同感 前两天要做一个获取手机信号的小程序 于是在网上搜索了很多 就找到两种方法 遗憾的是都没
  • Android的组件、布局学习

    介绍 公司组织架构调整 项目组需要承接其他项目组的android项目 负责维护和开发新需求 故学习下基础语法和项目开发 组件学习 Toolbar header布局部分 就是app最顶部的部分 他的显示与否 是与F androidProjec
  • Android的基础开发

    基础开发 listView ListView就是列表条目 可以向下滚动 也可以点击 首先设置两个视图布局 activity main2 xml 充当容器 ListView

随机推荐

  • lattice diamond软件使用

    1 diamond软件破解 lisence坚果云下载 或者这个博主操作 环境变量设置 2 调用IP 有两种方式 依据芯片或者软件版本改变 传统的IPexpress 每个IP单独例化 新出的Clarity 多个IP在同一个顶层内调用 再将这个
  • [1148]python3.6使用ansible报Python 3.6 is no longer supported错

    ansible version usr local lib python3 6 site packages ansible parsing vault init py 44 CryptographyDeprecationWarning Py
  • Java中判断List集合中是否有重复元素的方法

    package cn tedu test import java util ArrayList import java util HashSet import java util List public class TestList pub
  • 移动适配的另一种方式—— vw / vh

    前言 哦吼 之前我们对移动适配的其中一种方式 rem 进行了学习 当时在学习的时候我们有提到过另一种的适配方式 那么今天 我们就一起来对移动适配的另一种方式 vw vh 进行学习 我们在学习了rem后 知道他是相对单位 而且是相对于根元素H
  • 关于无法卸载和安装VISIO2010的问题

    之前装个Visio2010突然就打不开了 并且最可恨的是 每次打开word编辑转化搜狗输入法就会提示什么安装错误程序停止工作问是否继续 虽然点击确定后不影响word的使用 但每次都这样就很闹心了 试了用软件助手强力卸载不行 采用window
  • 用豪斯霍尔德(Householder)变换进行矩阵的QR分解,及其Matlab和OpenCV实现

    1 豪斯霍尔德变换 一般地 对给定的 m m m维向量 a a a 考虑分块 a
  • 【目标检测】基于yolov5海上船舶目标检测(附代码和数据集)

    Hello 大家好 我是augustqi 今天给大家分享的目标检测项目是 基于yolov5海上船舶目标检测 附代码和数据集 Part1 前言 传统的海上目标检测是通过雷达来实现 但是随着技术的发展 各种隐形涂料的船舰层出不穷 通过雷达进行目
  • Java中的线程中断

    Java中的线程中断 1 线程中断相关方法介绍 Java多线程编程中的interrupt 方法 isInterrupted 方法和interrupted 方法都是跟线程中断相关的方法 都非常重要 这三个方法名称非常相似 不理解原理时容易混淆
  • 秋招笔试题——嵌入式软件开发

    某VO 给定一个非空字符串str 在最多可以删除一个字符的情况下 请编程判定其能否成为回文字符串 如果可以则输出首次删除一个字符所能得到的回文字符串 如果不行则输出字符串 false bool isSpecial char string i
  • C++ 类与对象 面向对象编程 继承

    https www bilibili com video BV1et411b73Z p 127https www bilibili com video BV1et411b73Z p 127 继承是面向对象三大特性之一 我们发现 定义一些类时
  • WordPress计数插件

    这几天在折腾这个blog 无非是加些插件改点代码 折腾的成果基本就是大家看到的这样了 可能国外用户不关心post的访问人数 WP基本功能里没有显示多少个views的功能 这时候就需要WP PostViews插件帮忙 我的WP版本比较高 安装
  • java中的异常 最详细的讲解

    一 异常的概念 异常 在程序执行的过程中 出现的非正常情况 最终会导致JVM非正常停止 在Java等面向对象的编程语言中 异常本身是一个类 产生异常就是创建异常对象并抛出了一个异常对象 Java处 理异常的方式是中断处理 异常指的并不是语法
  • Nginx基本入门

    本文转载至 http blog csdn net u012486840 article details 53098890 1 静态HTTP服务器 首先 Nginx是一个HTTP服务器 可以将服务器上的静态文件 如HTML 图片 通过HTTP
  • [leetcode] 适合打劫银行的日子 -前缀和

    题目链接 前缀和思想 用数组 l l l 表示前面有多少个数满足 a i
  • MySQL----内置函数

    MySQL gt 内置函数 函数 将经常使用的代码封装起来 需要的时候直接调用就可以 从函数定义角度 函数可分为 内置函数 系统内置的通用函数 自定义函数 需要根据需求编写的函数 MySQL提供的内置函数从实现的功能角度可以分为数值函数 字
  • 多益视频面试

    多益面试 有一种怀疑人生的感觉 向老师 我对不起你 去年刚学的网络安全 我竟然没说出来加密算法的名字 也并不是题很难 而是简单的就是说不出来 写不出来 而难的也就是听过而已 问题 1 说一下什么是线程安全 线程安全的场景 线程安全就是确保程
  • 单相机做分屏混合

    做了一个单相机实现分屏混合的功能 需求大概就是在同一视角下 相机通过不同的CullingMask获取不同的渲染图片RenderTexture之后 通过某种方式一起显示在界面的功能 其实核心逻辑就是怎样用一个相机渲染不同的图片罢了 直接上代码
  • 在Java中,将ExecutorService转为守护程序

    问题描述 我正在Java 1 6中使用一个ExecutoreService 简单地开始 ExecutorService pool Executors newFixedThreadPool THREADS 当我的主线程完成 以及由线程池处理的
  • vue调用原生方法交互

    目前在做一个H5应用 需要调用原生方法进行交互 特此做一个记录 技术栈 vue版本2 6 vant版本 2 12 第一步 声明一个rpcFn js文件 进行原生交互阿里桥封装 const rpc function url params re
  • github actions实现Android持续集成

    持续集成 Continuous Integration 在很多单位都有现成的系统 但是作为一名工程师 我们还是要了解其原理 可以自己尝试做一下 经过本人的尝试 发现功能并不复杂 这里把持续集成实践经验总结与大家分享 持续集成用的比较多的是j