Docker-Jenkins编译android-app的两种方案

这篇具有很好参考价值的文章主要介绍了Docker-Jenkins编译android-app的两种方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker-Jenkins编译android-app的两种方案,DevOps,docker,jenkins,android

Docker-Jenkins编译android-app的两种方案

android开发使用jenkins编译,自动集成修改点/自动命名/自动备份,将修改的apk发布到测试服务器+发布网盘,而不需要用通讯工具传来传去。

jenkins用在互联网开发编译比较常见,如果android开发也想用,该怎么设计呢?

由于用jenkins开发android app的文章比较多,本文只提炼了干货。

关键点1

在app端需要做哪些修改?

  • 使用android studio开发,IDE会帮忙默认签名。

    而用jenkins编译肯定要用到gradle编译,所以需要在build.gradle里面加入针对于jenkins编译需要做自行签名的代码。

    android {
        signingConfigs {
            debug {
                storeFile file('.\\as_key.jks')
                storePassword '123456'
                keyPassword '123456'
                keyAlias 'key0'
            }
            release {
                storeFile file('.\\as_key.jks')
                storePassword '123456'
                keyPassword '123456'
                keyAlias 'key0'
            }
        }
    }
    
  • local.properties中的sdk.dir需要改为jenkins可以用到sdk

关键点2

Android SDK+JDK的配置

  • 可以在Jenkins的Tools里面配置本地路径
  • 也可以引用/映射本地的SDK环境,包括java环境
  • Docker里面一般只有一个固定的jdk android sdk版本,但你需要下载编译你app对应的环境

包括gradle版本也是头疼的事情,建议google官方出一个集成常用jdk+常用android sdk+特定gradle版本的docker,但是镜像的体积估计不会小,几个G应该有。

以下是我个人启动docker通过映射启动的方式:

docker run  --network host  --rm -p 8080:8080 -p 50000:50000   
-v /home/ldeng/code/Docker/home/jenkins_home/:/var/jenkins_home   
-v /etc/localtime:/etc/localtime  
-v /home/ldeng/code/Android/Sdk:/var/jenkins_home/workspace/AndroidSDK 
-v /usr/lib/jvm/java-11-openjdk-amd64/:/var/jenkins_home/workspace/jdk11/ 
-v /usr/lib/jvm/java-8-openjdk-amd64/:/var/jenkins_home/workspace/jdk8/  
-v /home/ldeng/.gradle/:/var/jenkins_home/.gradle     
--name lucasd-jenkins  jenkins/jenkins:latest

关键点3

如何编译? 废话,用gradle。

下载代码

Docker-Jenkins编译android-app的两种方案,DevOps,docker,jenkins,android

方案一:使用gradle编译

  1. 先配置gradle

    Docker-Jenkins编译android-app的两种方案,DevOps,docker,jenkins,android

    但是这种配置方式,必须要和app默认支持的gradle版本保持一直,必须也是6.5的版本

  2. 使用gradle编译

Docker-Jenkins编译android-app的两种方案,DevOps,docker,jenkins,android

  1. 注意task需要填写:
app:clean
app:assembleDebug
  1. 编译完成:

Docker-Jenkins编译android-app的两种方案,DevOps,docker,jenkins,android

方案二:使用gradlew编译

如果不想gradle版本被限制死了就需要用gradlew的方式编译,

它会自动解析当前项目支持哪个版本的gradle。

Docker-Jenkins编译android-app的两种方案,DevOps,docker,jenkins,android

但是需要映射gradle下载的缓存路径:

-v /home/ldeng/.gradle/:/var/jenkins_home/.gradle

这个很重要!

不然每次下载都要下载一次gradle 6.5, 这个时间是比较长的,所以建议映射到本地gradle路径。

脚本代码:

pwd
ls
export ANDROID_HOME=/var/jenkins_home/workspace/AndroidSDK
export ANDROID_SDK_ROOT=/var/jenkins_home/workspace/AndroidSDK
export ANDROID_SDK_ROOT=/var/jenkins_home/workspace/jdk8
export GRADLE_HOME=/var/jenkins_home/.gradle/wrapper/dists/gradle-6.5-bin/6nifqtx7604sqp1q6g8wikw7p/gradle-6.5
export GRADLE_USER_HOME=/var/jenkins_home/.gradle
echo $ANDROID_HOME
echo $ANDROID_SDK_ROOT
echo $JAVA_HOME
echo $GRADLE_HOME
#ls /var/jenkins_home/workspace/AndroidSDK
/usr/bin/env bash gradlew clean
/usr/bin/env bash gradlew assembleDebug

关键点4

发送apk/jar/arr等工件到测试服务器,

用到了Publish artifacts over SSH

Docker-Jenkins编译android-app的两种方案,DevOps,docker,jenkins,android

Docker-Jenkins编译android-app的两种方案,DevOps,docker,jenkins,android文章来源地址https://www.toymoban.com/news/detail-817208.html

到了这里,关于Docker-Jenkins编译android-app的两种方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一键搞定centos7的docker+selenium+appium+jenkins+android_app源码打包成apk的环境搭建

    git源码: https://github.com/a376230095/centos7_apkbuild/tree/master 简介 启动项目的start_all.sh,一键构建环境 安装完包含的环境 docker-ce最新版本 selenium运行环境 chrome无头运行 chromedriver是84 appium运行环境 appium 1.18版本 包含appium-docker sdk运行环境 adb 1.0.41 sdk build有29.0.3和28.0.3 - sdk编译环境

    2023年04月08日
    浏览(35)
  • uni-app的优缺点;uniapp进行条件编译的两种方法;小程序端和H5的代表值

    目录 uni-app的优缺点 优点: 1.跨平台开发: 2.统一的开发语言: 3.高效的性能: 4.丰富的生态圈: 缺点: 1.平台差异性: 2.性能限制: 3.对新特性支持滞后: Uni-app条件编译 process.env.UNI_PLATFORM 变量: 使用 process.env.NODE_ENV 变量: Uni-app中的代表值 Uni-app 是一个跨平台的开发框架

    2024年02月08日
    浏览(34)
  • Android 编译C程序APP

    在android的底层开发中,经常需要用C程序来测试底层驱动程序,可以利用amdroid.mk来编译c语言。 在安卓的目录下创建Android.mk用来包含目录:cs5263_user_ioctrl 在目录cs5263_user_ioctrl下创建Android.mk: gvs2715.c:  编译后会生成gvs2715app这个可执行程序,将gvs2715app利用adb push推到板子里面

    2024年04月14日
    浏览(35)
  • android studio app红叉无法编译

    今天前台小姐姐穿了一个白色的超短裙,和小姐姐聊了聊人生梦想,聊生活趣事,回到工位你马....报了一个这错误,无法运行了,明天就要打包测试了,顿时菊花一紧,急了一头汗,这你马咋回事,看了旁边的产品肥仔,迷着小眼露出了银建的笑容.开始排雷.... 意思就是说gradle初始化失败

    2024年02月06日
    浏览(28)
  • Android ---使用Jenkins 打包release版本不能安装或者安装后不显示APP

         大家在用 Jenkins的时候,是不是会觉得很爽,因为他在用的过程中,是无脑的,毕竟一键触发!!!!      这边记录一个昨天,今天遇到的一个坑货问题,别人提交了所有代码,我在Jenkins 触发构建,得到APK后,第一时间是发现,跟本地构建的对应包, 大小差的有点多

    2024年02月11日
    浏览(28)
  • Android Studio编译旧的app代码错误及解决方法

    The option ‘android.injected.build.density’ is deprecated. It was removed in version 8.0 of the Android Gradle plugin. Density property injection from Android Studio has been removed. app/build.gradle apply plugin: ‘com.android.application’ 改成 plugins { id ‘com.android.application’ } Deprecated Gradle features were used in this build, making

    2024年02月07日
    浏览(29)
  • Android问题笔记 - 编译报错Task :app:compileDebugJavaWithJavac FAILED

    专栏分享 点击跳转=Unity3D特效百例 点击跳转=案例项目实战源码 点击跳转=游戏脚本-辅助自动化 点击跳转=Android控件全解手册 点击跳转=Scratch编程案例 点击跳转=软考全系列 众所周知,人生是一个漫长的流程,不断 克服困难 ,不断反思前进的过程。在这个过程中会产生很多对

    2024年02月17日
    浏览(35)
  • uniapp条件编译区分ios、android、小程序、h5、app等

    条件编译 条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。 **写法:**以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。 示例代码: 注意 Android 和 iOS 平台不支持通过条件编译来区分,如果需要区分 Android、iOS 平台,请

    2024年02月09日
    浏览(28)
  • 使用android studio编译app到自己的手机上运行,却读取不了手机里面的图片

    问题描述: 使用android studio编译app到自己的手机上运行,却读取不了手机里面的图片 问题分析: 这个是由于这个app没有申请手机端的 媒体文件访问权限,所以读取不了 解决:(我的是Android 10,新版本可能会有不同) 查看AndroidManifest.xml这个文件,发现原来只有permission.CAM

    2024年01月17日
    浏览(38)
  • 解决kotlin写Android项目编译报Execution failed for task ‘:app:kaptDebugKotlin‘.异常

    解决kotlin写Android项目编译报Execution failed for task ‘:app:kaptDebugKotlin‘.异常 遇到的报错标题也是app:kaptDebugKotlin,具体报错信息不是,也可以试一下这个方法。 尝试办法:将kapt改为annotationProcesser,并同步项目 ,我的项目使用了databinding和arouter,原本是这样引入的: 上面这样写

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包