美文网首页安卓开发相关android私服搭理
[开发日志]android app Jenkins 配置说明

[开发日志]android app Jenkins 配置说明

作者: 张瑞Jerrysher | 来源:发表于2018-05-07 20:11 被阅读362次

    添加构建参数:

    选择参数化构建过程:

    image.png image.png

    源码管理配置:

    直接使用项目仓库 ssh 地址

    构建环境配置

    image.png image.png

    build name 是用来在 Jenkins网站显示的。

    构建配置

    配置执行脚本:

    作用是删除build下的目录,清理环境。

    echo "============================= Clean android/app/build dir start ============================="
    
    TARGET_FILE="$WORKSPACE/app/build/"
    
    if [ -e "$TARGET_FILE" ]; then
      echo "/app/build/ exists."
      rm -rf $TARGET_FILE
    else
      echo "/app/build/ does not exists."
    fi
    
    echo "============================= Clean  android/app/build dir end ============================="
    
    image.png

    采用 gradle 脚本编译,导入参数 API_MODE

    编译后配置:

    image.png

    上传代码apk 文件到蒲公英。显示蒲公英二维码。

    在android项目 build.gradle 文件中中需要配置, 接收 API_MODE 参数和默认的值。

    代码如下:

    定义api环境枚举, ApiEnvEnum

    enum ApiEnvEnum {
      DEV(1), PRE_RELEASE(2), ONLINE(3)
      ApiEnvEnum(int value) {
        this.value = value
      }
    
      private final int value
      int getValue() {
        value
      }
    }
    
    
    /**
     * 直接运行的编译环境在这里改动。 也可以在 gradle 编译的时候加参数 -PAPI_MODE={value}
     * {value} 可以是 DEV, PRE_RELEASE, ONLINE
     */
    
    ApiEnvEnum defApiEnv = ApiEnvEnum.DEV
    

    在android 节点下配置:

    def envStr = project.hasProperty('API_MODE') ? API_MODE : "${defApiEnv.toString()}”
    

    android defaultConfig节点下配置:

    
    for (ApiEnvEnum anEnum : ApiEnvEnum.values()){
    
      buildConfigField("int", "API_MODE_${anEnum.toString()}", "${anEnum.value}")
    
    }
    
    buildConfigField("int", "API_MODE", "${(envStr as ApiEnvEnum).value}”)
    

    在BuildeConfig中生成api环境,常量和当前环境值。

    友盟错误统计的key ,推荐更具网络环境不同配置不同的key ,避免开发错误,上传到线上错误统计账号。

    可以配置如下:

    def umengDevKey = "5a790c9xxxxxxxx000f6"
    
    def umengReleaseKey = “5a016xxxxxxxxx4127000099"
    
    manifestPlaceholders = [
    
                            UMENG_APPKEY    : ApiEnvEnum.ONLINE.toString() == envStr ? umengReleaseKey : umengDevKey]
    

    相关文章

      网友评论

      • Todo2:组件化和插件化的开发里程总结
        https://www.jianshu.com/p/df2a6717009d
      • Beurself_:瑞哥这篇专业性十足,想必对于Andriod开发者来说一定是值得收藏的干货好文。从代码习惯来看,瑞哥的代码十分整洁,能够让别人迅速读懂。小弟对Andriod开发完全门外汉,只能简单做此评论。:smile:

      本文标题:[开发日志]android app Jenkins 配置说明

      本文链接:https://www.haomeiwen.com/subject/paavrftx.html