Android打包脚本和上传apk托管平台

前言

作为Android开发经常需要打包提交测试,多数情况我们都是通过Android studio手动点点进行,后来项目由于环境较多(开发,测试,预发布,发布等),手动打包就容易出错,所以后边就引起通过脚本打包提升效率和准确的需求。

内容部分
  1. 编写脚本前,需要在app目录下的build.gradle中进行相关证书配置。

    注意signingConfigs需要在用它之前声明

    // storeFile 文件放到app目录下直接写文件名即可
    signingConfigs{
         debug {
                keyAlias '别名'
                keyPassword '密码'
                storeFile file('签名文件路径')
                storePassword '密码'
            }
         release {
                keyAlias '别名'
                keyPassword '密码'
                storeFile file('签名文件路径')
                storePassword '密码'
            }
    }
    
  2. 声明完成签名信息后,在构建配置中引用,如下:

     buildTypes {
            release {
                ...省略
                signingConfig signingConfigs.release
            }
            debug {
                ...省略
                signingConfig signingConfigs.debug
            }
        }
    
  3. 然后就是配置多渠道打包的维度了,我简单配置几个,代码如下:

    //先定义变种维度
    defaultConfig{
       flavorDimensions "versionCode"
    }
    
    productFlavors{
        dev{
            dimension "version"
             // 服务端接口地址
            buildConfigField "String", "API_BASE_URL", '"http://test.com/"'
        }
       sit{
            dimension "version"
             // 服务端接口地址
            buildConfigField "String", "API_BASE_URL", '"http://test.com/"'
        }
        pub{
            dimension "version"
             // 服务端接口地址
            buildConfigField "String", "API_BASE_URL", '"http://test.com/"'
        }
    }
    

配置完成后就可以build variants 中找到你设置的多渠道打包命令了,如下图:

在这里插入图片描述

配置中使用不同的host,代码可以直接引用,通过BuildConfig.API_BASE_URL实现切换不同的host。

配置到这里就可以实现版本区分打包了,通过Android studio进行不同的操作,打包出不同host的包了。

shell脚本编写

脚本的时间其实就是自动化了打包的步骤,代替我们一步一步点的操作。这里使用shell脚本,贴出核心代码吧。

#通过不同的表示标识来确定执行不同的打包命令
echo "开始执行build======================"
echo "flavor ${flavor}"
# 开始构建apk
flavor="dev"
if [[ ${runEnvNumber} == 1 ]];then
 flavor="dev"
 gradlew clean assembleDevRelease
elif [[ ${runEnvNumber} == 2 ]];then
 flavor="sit"
 gradlew clean assembleSitRelease
elif [[ ${runEnvNumber} == 3 ]];then
 flavor="pub"
 gradlew clean assemblePubRelease
else
   flavor="dev"
   gradlew clean assembleDevRelease
fi

后续就是把apk包移动到指定的目录:

# 最终的apk文件
# 拷贝文件到指定目录
buildSourcePath="app/build/outputs/apk/$flavor"
apkSourcePath=$(find ${buildSourcePath} -name "*.apk")

echo "apk source path========"
echo "$apkSourcePath"
echo "apk source path========"

# 构建目录,并拷贝
rm -rf $buildPath
mkdir $buildPath
echo "====copy apk source path===="
cp $apkSourcePath $buildPath
apkPath=$(find ${buildPath} -name "*.apk")
finalPath=${apkPath}

echo "finalPath ====="
echo "$finalPath"

再后来就是上传蒲公英/fir啥的啦,这里就不赘述了。具体可以看官方的文档了。

还是贴个fir的代码吧,API比较简单:

#!/usr/bin/env bash

echo "清除登录信息"
rm -f $HOME/.fir-cli
path=$1
desc=$2
echo "上传path $path "
echo "上传描述  ${desc} "
upload() {
    echo "开始上传"
    fir publish "${path}" -c "${desc}" --force-pin-history
}

me=$(fir me|grep 'ERROR')
if [[ $me ]];then
  echo "登录"
 fir login '你的fir token'
 upload
else
 upload
fi
结尾

脚本的合理使用能够给我们节省很多时间,并且产生错误的概率很低。就这些,谢谢观看!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值