Android GitLog 生成脚本

#!/bin/bash
source build/envsetup.sh > /dev/null
#Author:@tuliyuan 975150240@qq.com
#日志输出TAG
_TAG_SHELL_="[VTECH_AUTO_LOG]"
#输出的修改记录文件名称为
PROJECT_VERSION_LOG_FILE_NAME="version_log.txt"
#产品名称
PROJECT_PRODUCT_INFO=$(get_build_var TARGET_PRODUCT)
#编译版本类型 eng/userdebug/user
PROJECT_BUILD_TYPE=$(get_build_var TARGET_BUILD_VARIANT)
#LUNCH编译选择的平台产品名称 默认与out/target/product/XXX一致
DEVICE_NAME_INFO=$(get_build_var TARGET_DEVICE)
#out目录下的设备名称
OUT_DEVICE_NAME_INFO=""
#编译版本类型 eng/userdebug/user
PROPERTY_BUILD_TYPE="ro.build.type"
#vendor/自定义的软件版本号
PROPERTY_BUILD_VENDOR_NUMBER="ro.build.display.vtechid"
#system/软件版本号
PROPERTY_BUILD_NUMBER="ro.build.display.id"
#vendor/自定义的产品型号
PROPERTY_BUILD_VENDOR_PRODUCT_MODEL="ro.vendor.product.model"
#system/产品型号
PROPERTY_BUILD_PRODUCT_MODEL="ro.*.model"
#APP的路径 需要存在git仓库才可以使用git log
PROJECT_APP_GIT_PATH="/home/sn0553/software/project/vtech_app_"
#是否存在GooglePatch 默认无
PROJECT_GOOGLE_PATCH="(无)"
#是否Lunch过了
IS_LUNCHED="false"
log_help(){

  echo "***********[VTECH_AUTO_LOG]快速生成修改记录************"
  echo "默认修改记录文件名称为 当前目录下的 ${PROJECT_VERSION_LOG_FILE_NAME}"
  echo "需要配置的条件有:"
  echo -e "手机设置-关于手机-版本号实际显示的版本号 -->  当前脚本文件中的\033[32m  PROPERTY_BUILD_NUMBER \033[0m"
  echo -e "第三方应用未集成在源码环境中 则需要配置 -->  当前脚本文件中的 \033[32m PROJECT_APP_GIT_PATH \033[0m"
#  echo "非全志平台:"
  echo "第一步,git pull更新代码"
  echo "第二步,source build/envsetup.sh"
  echo "第三步,lunch自己的产品以及编译类型"
  echo -e "第四步,进行完整编译后方可执行此脚本文件,命令为 \033[34m $0 [n] [m] \033[0m" 
  echo -e "其中n代表的是\033[34m平台端\033[0mgit log最近\033[31m'n'\033[0m天的修改记录,m为\033[34m应用端\033[0m最近\033[31m'm'\033[0m天的修改记录,均默认为读取最近3天的git log"
#  echo "全志:"
#  echo -e "第一步,执行 \033[34m ./compile.sh n SP01_VTECH_OLDER_CN userdebug V1.1.1 \033[0m 进行完整编译"
#  echo -e "第二步, \033[34m $0 [n] [m] \033[0m进行日志输出"
#  echo -e "其中n代表的是平台git log最近\033[34m 'n'\033[0m天的修改记录,\033[34m 'm'\033[0m为app端最近m天的修改记录,均默认3天"
  echo "**********************仅供参考***************************"

}

#=========================================================================================================================
make_all_log(){
   local day_ago_system=$1
   local day_ago_app=$2
   local build_numer_str
   local build_date_str
    if [ "${day_ago_system}" = "" ]; then
        log_help
        echo "   "
        day_ago_system=3
    else
        day_ago_system=$1
    fi

    if [ "${day_ago_app}" = "" ]; then
        day_ago_app=3
    else
        day_ago_app=$2
    fi
#   rm -rf log.txt

#首先判断out目录是否存在,如果out目录都不存在,你生成个锤子的version_log呢?????
#步骤一
   if [ ! -d "./out/target/" ] ;then
      echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 查询out目录失败,请先进行全部编译!"
      echo -e "${_TAG_SHELL_}  \033[31m退出脚本....\033[0m"
      exit;
   fi
   
   echo -e "${_TAG_SHELL_}  Lunch选择的项目名称为 \033[32m ${PROJECT_PRODUCT_INFO}\033[0m"
#步骤二
   check_version_log_exist
   echo -e "${_TAG_SHELL_} \033[31m 修改记录制作完成.... \033[0m"
#   cat ${PROJECT_VERSION_LOG_FILE_NAME}
}

#=========================================================================================================================

check_version_log_exist(){
   
#   echo -e "${_TAG_SHELL_} \033[32m ${PROJECT_VERSION_LOG_FILE_NAME} \033[0m不存在..新建此文件!"
#TARGET_PRODUCT目录查询 1.首先会去get_build_var TARGET_PRODUCT.如果查询到的结果为generic或为空
#则说明没有执行lunch操作,我们需要自己查询./out/target/product/下有个什么目录,方便以后查询build.prop文件
#一般而言./out/target/product/不会存在两个目录
#步骤二 判断是否lunch过了 没有lunch走这里
   if [ "${DEVICE_NAME_INFO}" = "generic" ] || [ "${DEVICE_NAME_INFO}" = "" ]  ;then  #{@1
      echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 查询 TARGET_DEVICE 失败!查询到的为:${DEVICE_NAME_INFO},未进行lunch操作,开始自动查询......"
#      local dirSrc=$(ls ./out/target/product/ -l | awk '/^d/{print $NF}')
      echo "$(ls out/target/product/)" >> temp_out.txt
      local dirSrc=$(echo "$(ls out/target/product)")
      local genric_exist=$(echo "$(ls out/target/product)" | grep "generic")
#      echo "${_TAG_SHELL_}  自动查询: dirSrc ${dirSrc}"
      if [  "$genric_exist" = "generic" ] ;then #如果存在generic文件夹,则删除generic行,重新处理dirSrc数据
          echo "${_TAG_SHELL_}  自动查询: 当前存在generic目录,跳过设置此目录......"
          echo -e  "${_TAG_SHELL_}  自动查询: 获取到的下一个文件目录名为: \033[32m$(sed '/generic/d' temp_out.txt)\033[0m"
          dirSrc=$(sed '/generic/d' temp_out.txt)
          echo -e "${_TAG_SHELL_}  自动查询: 替换后的dirSrc \033[32m${dirSrc}\033[0m"
      fi
      DEVICE_NAME_INFO=${dirSrc}
      rm -rf temp_out.txt
      echo -e "${_TAG_SHELL_}  自动查询: 查询到的产品TARGET_DEVICE信息是 \033[32m$dirSrc\033[0m" 
  
      PROJECT_VERSION_LOG_FILE_NAME=${DEVICE_NAME_INFO}_${PROJECT_VERSION_LOG_FILE_NAME}
      echo -e "${_TAG_SHELL_}  自动查询: 未曾执行过lunch操作......应输出的日志名为 \033[31m ${PROJECT_VERSION_LOG_FILE_NAME} \033[0m"
# lunch过了走这里 
   else 
      IS_LUNCHED="true"
      PROJECT_VERSION_LOG_FILE_NAME=${DEVICE_NAME_INFO}_${PROJECT_VERSION_LOG_FILE_NAME}
      
      local dirSrc_lunch=$(echo "$(ls out/target/product)")
      local genric_exist_lunch=$(echo "$(ls out/target/product)" | grep "generic")
      if [  "$genric_exist_lunch" = "generic" ] ;then #如果存在generic文件夹,则删除generic行,重新处理dirSrc数据
          echo "${_TAG_SHELL_}  lunched: 当前存在generic目录,跳过设置此目录......"
          echo -e  "${_TAG_SHELL_}  lunched: 获取到的下一个文件目录名为: \033[32m$(sed '/generic/d' temp_out.txt)\033[0m"
          dirSrc_lunch=$(sed '/generic/d' temp_out.txt)
          echo -e "${_TAG_SHELL_}  lunched: 替换后的dirSrc_lunch \033[32m${dirSrc}\033[0m"
      fi
      OUT_DEVICE_NAME_INFO=${dirSrc_lunch}
     echo -e "${_TAG_SHELL_}  已经执行过lunch操作......应输出的日志名为 \033[31m ${PROJECT_VERSION_LOG_FILE_NAME} \033[0m"
   fi  #@1}
#步骤三
   create_or_modify_log
}

#=========================================================================================================================
#步骤三
create_or_modify_log(){
   
    # 文件不存在 进行创建工作
   if [ ! -f "${PROJECT_VERSION_LOG_FILE_NAME}" ];then  #@{1
      echo -e "${_TAG_SHELL_}  开始\033[35m生成\033[0m修改记录 ${PROJECT_VERSION_LOG_FILE_NAME}"
      touch ${PROJECT_VERSION_LOG_FILE_NAME}
      echo "${PROJECT_PRODUCT_INFO}修改记录      更新时间: $(date "+%Y-%m-%d")" >> ${PROJECT_VERSION_LOG_FILE_NAME}
      for((i=1;i<=5;i++));
        do
          echo "***********************************************" >> ${PROJECT_VERSION_LOG_FILE_NAME}
        done 
        get_recent_change_log ${day_ago_system} ${day_ago_app}
# 文件存在,进行新增操作 
   else #@{1
      echo -e "${_TAG_SHELL_}  日志文件存在....."
      echo -e "${_TAG_SHELL_}  开始\033[35m新增\033[0m修改记录 ${PROJECT_VERSION_LOG_FILE_NAME}"
      get_recent_change_log ${day_ago_system} ${day_ago_app}
   
   fi #@1}
}
#=========================================================================================================================
#步骤四
get_recent_change_log(){
   local day_ago_system=$1
   local day_ago_app=$2
   local recent_change_log_path_temp="recent_log.txt"   
   local build_type
   local temp_app_gitlog=""
   local temp_platform_gitlog=""
   echo -e "${_TAG_SHELL_}  查询平台 \033[32m [${day_ago_system}] \033[0m天以前的GitLog"
   echo -e "${_TAG_SHELL_}  查询APP  \033[32m [${day_ago_app}] \033[0m天以前的GitLog"

#OUT目录查询   
#   if [ ! -d "./out/target" ]; then
#      echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 查询out目录失败,请先进行全部编译!"
#      echo -e "${_TAG_SHELL_}  \033[32m退出脚本....\033[0m"
#      exit;
#   fi
#TARGET_PRODUCT目录查询   
#  if [ "${DEVICE_NAME_INFO}" = "generic" ] || [ "${DEVICE_NAME_INFO}" = "" ]  ;then
#      echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 查询TARGET_PRODUCT失败,也许你没有lunch....进入自动查询模式"
#      local dirSrc=$(ls ./out/target/product/ -l | awk '/^d/{print $NF}')
#      DEVICE_NAME_INFO=${dirSrc}
#      echo -e "${_TAG_SHELL_}  自动查询: 查询到的产品TARGET_PRODUCT信息是 \033[32m$dirSrc\033[0m" 
#  fi
#TARGET_NAME查询

#out目录第二次校验,防止lunch TARGET_PRODUCT 的和实际编译生成的out/target/product/xxx不匹配

   if [ ! -d "./out/target/product/${DEVICE_NAME_INFO}/" ] && [ "${IS_LUNCHED}" = "true" ];then
       echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 进入 ./out/target/product/${DEVICE_NAME_INFO}/失败!目录不存在,请检测Lunch选择的平台产品名称是否与当前out目录编译的平台产品名称一致,如不存在,请重新编译"
       echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 编译时lunch选择的版本是 \033[31m$(get_build_var TARGET_DEVICE)\033[0m ;;; out目录下存在的是 \033[31m${OUT_DEVICE_NAME_INFO}\033[0m"
       echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 退出生成 ${PROJECT_VERSION_LOG_FILE_NAME}"
       exit;
   else 
       echo -e "${_TAG_SHELL_}  Lunch选择的平台产品名称与当前out目录编译的平台产品名称一致...."
   fi
   
   check_product_model #获取产品型号
   check_build_num ${recent_change_log_path_temp}  #获取相关版本号
   rm -rf git_log.txt
   git log --pretty=format:"修改内容:作者:%an CommitId %h %s" --date=iso8601 --since="${day_ago_system} day ago" >> git_log.txt
   echo "${_TAG_SHELL_}  ==========正在输出系统软件修改点信息...============"
   echo "[系统平台软件修改点]" >> ${recent_change_log_path_temp}
   echo "$(grep -nr "修改内容:" git_log.txt | cut -d ":" -f 3-100 > new_gitlog.txt;sed -i '/Merge branch/Id' new_gitlog.txt;sed -i '/Merge remote-tracking/Id' new_gitlog.txt;cat -n new_gitlog.txt)" >> ${recent_change_log_path_temp}


   local temp_platform_gitlog=$(cat new_gitlog.txt)
#   echo "[VTECH_AUTO_LOG]  查询系统软件修改点最近3天的LOG信息 ${temp_platform_gitlog}"
   if [ "${temp_platform_gitlog}" = "" ] ;then
       echo "      (无)      " >> ${recent_change_log_path_temp}
   fi
   rm -rf git_log.txt;rm -rf new_gitlog.txt
   #git log --pretty=format:"提交日期: %cd,,,修改者: %an,,,修改内容: %s end###" --date=iso8601 --since="${day_ago_system} day ago" >> git_log.txt
   echo "${_TAG_SHELL_}  ==========输出系统软件修改点信息完成...============"


#开始查询最近N天的APP git log信息
   echo "${_TAG_SHELL_}  ==========正在输出应用软件修改点信息...============"
  
   if [ ! -d "${PROJECT_APP_GIT_PATH}" ] ;then
      echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 当前没有找到APP代码路径,无法获取对应git log信息.\033[35m跳过输出APP日志......\033[0m"
#      echo "      (无)      " >> ${recent_change_log_path_temp}
   else
      echo "[内置APP软件修改点]" >> ${recent_change_log_path_temp}
      local currentPath=$(pwd)
      echo -e "${_TAG_SHELL_}  当前路径为:\033[37m${currentPath}\033[0m "
      echo -e "${_TAG_SHELL_}  即将进入到app路径: \033[37m${PROJECT_APP_GIT_PATH}\033[0m"
      cd ${PROJECT_APP_GIT_PATH}
      git log --pretty=format:"修改内容:作者:%an CommitId %h %s" --date=iso8601 --since="${day_ago_app} day ago" >> git_log.txt
      sed -i '/Merge branch/Id' git_log.txt
      sed -i '/Merge remote-tracking/Id' git_log.txt;
     
      temp_app_gitlog=$(cat ./git_log.txt)
 #     echo "[VTECH_AUTO_LOG]  查询app软件修改点最近3天的LOG信息 $(cat ./git_log.txt) "
      if [ "${temp_app_gitlog}" = "" ] ;then
        echo "      (无)      " >> ${currentPath}/${recent_change_log_path_temp}
      fi
      echo "$(grep -nr "修改内容:" git_log.txt | cut -d ":" -f 3-100 > new_gitlog.txt;cat -n new_gitlog.txt)" >> ${currentPath}/${recent_change_log_path_temp}
      
      echo "${_TAG_SHELL_}  ==========输出应用软件修改点信息完成.============"
      rm -rf git_log.txt;rm -rf new_gitlog.txt
      echo "${_TAG_SHELL_}  返回到原路径...... "
      cd ${currentPath}
   fi 
   
   echo "${_TAG_SHELL_}  ==========开始GooglePatch修改点信息============"
   echo "[是否存在GooglePatch]  ${PROJECT_GOOGLE_PATCH}" >> ${recent_change_log_path_temp}
   if [ "${PROJECT_GOOGLE_PATCH}" = "(无)" ] ;then
     echo "${_TAG_SHELL_}  ==========不存在GooglePatch!============"
   fi
	
   echo "============================================================================================================"  >> ${recent_change_log_path_temp}



  
#   echo "sed -i '6 r ${recent_change_log_path_temp}' ${PROJECT_VERSION_LOG_FILE_NAME}"
# 重新校验

# 校验编译类型   
     if [ -f "./out/target/product/${DEVICE_NAME_INFO}/system/build.prop" ] ;then
       build_type=$(grep -nr ${PROPERTY_BUILD_TYPE} ./out/target/product/${DEVICE_NAME_INFO}/system/build.prop | cut -d "=" -f 2)
       echo -e "${_TAG_SHELL_}  编译的版本类型为\033[32m ${build_type}\033[0m"
       sed -i "s/${PROJECT_BUILD_TYPE}/${build_type}/g" ${recent_change_log_path_temp}
     fi

#将临时输出的recent_log输出到version_log之中
   echo -e "${_TAG_SHELL_}  输出此次添加的最近日志信息......"
   echo -e "\033[36m$(cat ${recent_change_log_path_temp})\033[0m"
   sed -i '6 r '${recent_change_log_path_temp}'' ${PROJECT_VERSION_LOG_FILE_NAME}
   rm -rf ${recent_change_log_path_temp}
    
} 

#=========================================================================================================================
check_product_model(){
   # 校验产品名称
      local base_target_product=$(get_build_var TARGET_PRODUCT)
      # 如果/vendor/build.prop 查找预设的 PROPERTY_BUILD_VENDOR_PRODUCT_MODEL prop 字段对应的产品型号
      if [ -f "./out/target/product/${DEVICE_NAME_INFO}/vendor/build.prop" ] ;then
	   PROJECT_PRODUCT_INFO=$(grep -nr ${PROPERTY_BUILD_VENDOR_PRODUCT_MODEL} ./out/target/product/${DEVICE_NAME_INFO}/vendor/build.prop | cut -d "=" -f 2)
	   if [ "${PROJECT_PRODUCT_INFO}" = "" ] ;then
                echo -e "${_TAG_SHELL_}  vendor/build.prop存在 尝试获取vendor/build.prop中的 ${PROPERTY_BUILD_VENDOR_PRODUCT_MODEL} 失败,将PROJECT_PRODUCT_INFO设置为\033[32m'unknow'\033[0m"
                PROJECT_PRODUCT_INFO="unknow"
                echo -e "${_TAG_SHELL_}  vendor/build.prop存在 重新尝试获取system/build.prop中的 ro.*.model ......"
                if [ -f "./out/target/product/${DEVICE_NAME_INFO}/system/build.prop" ] ;then
                    PROJECT_PRODUCT_INFO=$(grep -nr ${PROPERTY_BUILD_PRODUCT_MODEL} ./out/target/product/${DEVICE_NAME_INFO}/system/build.prop | cut -d "=" -f 2)
                    if [ "${PROJECT_PRODUCT_INFO}" = "" ] ;then
                       echo -e "${_TAG_SHELL_} vendor/build.prop存在 尝试获取system/build.prop中的 ro.*.model 失败,将PROJECT_PRODUCT_INFO设置为\033[32m'unknow'\033[0m"                
                    else 
                       echo "${_TAG_SHELL_}  vendor/build.prop存在  获取设备型号成功!"
                    fi   
                else
                    #不存在/system/build.prop文件 拉闸....退出退出....
                    echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m vendor/build.prop存在 查询system/build.prop失败,该文件不存在,无法获取型号信息,请重新编译!"
                    echo -e "${_TAG_SHELL_}  退出生成git log"
                    exit
                fi
	 fi
# 如果不存在/vendor/build.prop 查找预设的 PROPERTY_BUILD_VENDOR_PRODUCT_MODEL prop 字段对应的产品型号
      else  
         echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 查询system/build.prop中的 ${PROPERTY_BUILD_PRODUCT_MODEL} 失败,该文件不存在,如果您的Android版本低于6.0则略过此信息!"
          PROJECT_PRODUCT_INFO="unknow"
         if [ -f "./out/target/product/${DEVICE_NAME_INFO}/system/build.prop" ] ;then
              if [ "${PROJECT_PRODUCT_INFO}" = "" ] || [ "${PROJECT_PRODUCT_INFO}" = "unknow" ] ;then
                   PROJECT_PRODUCT_INFO=$(grep -nr ${PROPERTY_BUILD_PRODUCT_MODEL} ./out/target/product/${DEVICE_NAME_INFO}/system/build.prop | cut -d "=" -f 2)
                   if [ "${PROJECT_PRODUCT_INFO}" = "" ] ;then
                       echo -e "${_TAG_SHELL_}  vendor/build.prop不存在 尝试获取system/build.prop中的 ro.*.model 失败,将PROJECT_PRODUCT_INFO设置为\033[32m'unknow'\033[0m"                
                   else 
                       echo "${_TAG_SHELL_}  vendor/build.prop不存在 获取设备型号成功!"
                   fi            
              fi     
         else
            #不存在/system/build.prop文件 拉闸....退出退出....
            echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 查询system/build.prop失败,该文件不存在,无法获取型号信息,请重新编译!"
            echo -e "${_TAG_SHELL_}  退出生成git log"
            exit
         fi
      
     fi

     echo -e "${_TAG_SHELL_}  通过build.prop获得产品名称为\033[32m ${PROJECT_PRODUCT_INFO} \033[0m将替换${base_target_product}修改记录为${PROJECT_PRODUCT_INFO}修改记录,同时更新最近更新时间为$(date "+%Y-%m-%d")"
#     sed -i "s/${base_target_product}修改记录/${PROJECT_PRODUCT_INFO} 修改记录/g" ${PROJECT_VERSION_LOG_FILE_NAME}
#  替换第一行的内容
     sed -i "1c ${PROJECT_PRODUCT_INFO}修改记录      更新时间: $(date "+%Y-%m-%d")" ${PROJECT_VERSION_LOG_FILE_NAME}    
}
#=========================================================================================================================
check_build_num(){
   # 校验产品名称
      local recent_change_log_path_temp=$1
      local build_num_str
      local build_date_str
      # 如果/vendor/build.prop 查找预设的 PROPERTY_BUILD_VENDOR_PRODUCT_MODEL prop 字段对应的产品型号
      if [ -f "./out/target/product/${DEVICE_NAME_INFO}/vendor/build.prop" ] ;then
	   build_num_str=$(grep -nr ${PROPERTY_BUILD_VENDOR_NUMBER} ./out/target/product/${DEVICE_NAME_INFO}/vendor/build.prop | cut -d "=" -f 2)
	   if [ "${build_num_str}" = "" ] ;then
                echo -e "${_TAG_SHELL_}  vendor/build.prop存在 尝试获取vendor/build.prop中的 ${PROPERTY_BUILD_VENDOR_NUMBER} 失败,将版本号设置为\033[32m'unknow'\033[0m"
                build_num_str="unknow"
                echo -e "${_TAG_SHELL_}  vendor/build.prop存在 重新尝试获取system/build.prop中的 ${PROPERTY_BUILD_NUMBER} ......"
                if [ -f "./out/target/product/${DEVICE_NAME_INFO}/system/build.prop" ] ;then
                    build_num_str=$(grep -nr ${PROPERTY_BUILD_NUMBER} ./out/target/product/${DEVICE_NAME_INFO}/system/build.prop | cut -d "=" -f 2)
                    if [ "${build_num_str}" = "" ] ;then
                       echo -e "${_TAG_SHELL_} vendor/build.prop存在 尝试获取system/build.prop中的 ${PROPERTY_BUILD_NUMBER} 失败,将版本号设置为\033[32m'unknow'\033[0m"                
                    else 
                       echo "${_TAG_SHELL_}  vendor/build.prop存在 获取版本号成功!"
                    fi   
                else
                    #不存在/system/build.prop文件 拉闸....退出退出....
                    echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m vendor/build.prop存在 查询system/build.prop失败,该文件不存在,无法获取版本号信息,请重新编译!"
                    echo -e "${_TAG_SHELL_}  退出生成git log"
                    exit
                fi
	 fi
	# 如果不存在/vendor/build.prop 查找预设的 PROPERTY_BUILD_VENDOR_PRODUCT_MODEL prop 字段对应的产品型号
      else  
         echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 查询system/build.prop中的 ${PROPERTY_BUILD_NUMBER} 失败,该文件不存在,如果您的Android版本低于6.0则略过此信息!"
         build_num_str="unknow"
         if [ -f "./out/target/product/${DEVICE_NAME_INFO}/system/build.prop" ] ;then
              if [ "${build_num_str}" = "unknow" ] ;then
                   build_num_str=$(grep -nr ${PROPERTY_BUILD_NUMBER} ./out/target/product/${DEVICE_NAME_INFO}/system/build.prop | cut -d "=" -f 2)
                   if [ "${build_num_str}" = "" ] ;then
                       echo -e "${_TAG_SHELL_}  vendor/build.prop不存在 尝试获取system/build.prop中的 ${PROPERTY_BUILD_NUMBER} 失败,将版本号设置为\033[32m'unknow'\033[0m"                
                   else 
                       echo "${_TAG_SHELL_}  vendor/build.prop不存在 获取版本号成功!"
                   fi            
              fi     
         else
            #不存在/system/build.prop文件 拉闸....退出退出....
            echo -e "${_TAG_SHELL_}  \033[31m警告:\033[0m 查询system/build.prop失败,该文件不存在,无法获取版本号信息,请重新编译!"
            echo -e "${_TAG_SHELL_}  退出生成git log"
            exit
         fi
      
     fi
#查询版本编译日期
   if [ ! -f "./out/target/product/${DEVICE_NAME_INFO}/system/build.prop" ] ;then
      build_date_str="Unknow"
   else
      build_date_str=$(grep -nr "ro.build.date=" ./out/target/product/${DEVICE_NAME_INFO}/system/build.prop | cut -d "=" -f 2)
   fi
     echo "##########版本号: ${build_num_str} 版本类型: ${PROJECT_BUILD_TYPE} 编译时间: ${build_date_str}" >> ${recent_change_log_path_temp}
}
#log_help
make_all_log $1 $2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值