centos7.4系统jenkins2.176.2中使用shell脚本打包Android App

  项目原本都是在windows7环境下,在jenkins下面调用批处理使用python3脚本进行Android App的打包,考虑到后续扩展性,需要迁移到centos7.4环境下完成该项工作,在进行迁移工作时,遇到了一系列的坑,下面将整个过程简要记录一下,以便后续回溯。

  1. 先安装好jenkins,并将jenkins版本及插件都更新到最新;

  2. jenkins是以服务帐户的形式启动的,默认使用的是root帐户的python环境,所以需要在root帐户中,配置好python3的运行环境;

  3. 在jenkins的shell脚本中,有使用ssh模式从gitlab中拉取代码,生成公私钥后,需要将公钥配置到gitlab服务器中,并将ssh私钥拷贝到jenkins对应目录中:/var/lib/jenkins/.ssh,另外gitlab服务器的公钥也需要配置到该文件夹下面的known_hosts文件中;

  4. android app编译依赖于local.properties文件,需要配置自动打包目录下的\config\static\local.properties文件(工程内部自定义配置目录),并配套调整内部路径;

  5. 考虑到编译Android App的时候,需要用到root权限,所以将jenkins配置为可升级为管理员的帐户,具体操作如下:
    (1) 打开sudoers

    vim /etc/sudoers

    (2) 添加免密码配置

    jenkins ALL=(ALL) NOPASSWD: ALL

  6. 在打包脚本中,查看apk包信息时调用到了aapt2,实际调用过程中报错信息如下:
    aapt2: error while loading shared libraries: libc++.so: cannot open shared object file: No such file or directory
    (可正常调用后使用aapt2 version命令确认版本信息是:Android Asset Packaging Tool (aapt) 2.19-SOONG BUILD NUMBER PLACEHOLDER), 我调用的android sdk 目录build-tools/29.0.2/里面的aap2文件,将android sdk 目录build-tools/29.0.2/lib64下面的libc++.so拷贝到系统目录/lib64搞定;

  7. shell脚本调用的python3脚本有调用到zipalign、apksigner和apktool工具,windows下面是使用的批处理,linux是直接调用shell文件,在python脚本中需要兼容不同的操作系统;

你可能感兴趣的:(android开发,jenkins,python)