zoukankan      html  css  js  c++  java
  • [Shell]通过shell修改build.gradle配置文件

    我的需求:

    自动化打包前,修改版本号

     

    思路如下:

    1.获取要修改字符串在build.gradle配置文件的所在行

    2.整行删除旧字符串

    3.新将新字符串写入配置文件

     

    技术点:

    • sed读写配置文件
    • 获取指定字符串所在行
    • 将字符串写入配置文件指定位置(指定行)
    • 拼接字符串,字符串包含特殊符号,双隐号,单隐号,转义符号的使用

     

    build.gradle配置文件内容如下:

      defaultConfig {
            applicationId "com.wawj.app.t"
    //        applicationId "com.wawj.app.tt"
            minSdkVersion 16
            targetSdkVersion 26
            versionCode 20191226
            versionName "8.8.8" #要修改的字符串 
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunn$
            multiDexEnabled true
    //        resConfigs "en", "de", "fr", "it"git
    //        resConfigs "nodpi", "hdpi", "xhdpi", "xxhdpi", "xxxhdpi"
            ndk {
                //极光推送--选择要添加的对应cpu类型的.so库
                abiFilters 'xx', 'xx-xxxa', 'xxx'
            }
        

     

    脚本如下:

    cd AppFrameWork/app/ #build.gradle配置文件所在目录
    
    VERSION=" versionName "$Version"" #拼接修改后的字符串
    #获取行数,并保存到变量
    line=$(sed -n '/versionName/=' build.gradle) #获取要修改的字符串所在行,并将它保存到变量line
    echo "版本号所在行$line"
    
    #插入内容的位置
    newline=$(expr $line - 1)#计算要插入行的的行号,因后面使用 追加(注意不是插入)的方式将要修改的字符串 追加所在行,所以里这里要将line-1,写入字符串的位置才是准确的
    #删除指定行
    sed  -i  "$line  d"   build.gradle
    
    #在指定行追加要字符串,并保存修改( -i表示保存修改)
    sed -i "$newline a\$VERSION" build.gradle
    echo "修改的版本号是$VERSION"
  • 相关阅读:
    [poj3974] Palindrome 解题报告 (hashmanacher)
    SQL Android
    SharedPreferences Android
    本地广播 localBroadcastManager Android
    RecyclerView Android
    自定义ListView Android
    布局 Android
    传值 Android
    活动的生命周期 Android
    CodeForces 907F Power Tower(扩展欧拉定理)
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/12132369.html
Copyright © 2011-2022 走看看