android参数化构建打包,Android使用Jenkins参数化构建

echo ${BUILD_NUMBER}

echo ${Branch}

echo ${BUILD_USER_EMAIL}

echo ${BUILD_USER}

source ~/.bash_profile

# 拷贝后的要用来存档的目录

output_app_dir="$WORKSPACE/app/build/jenkins"

# 编译工具输出的目录

output_apk_dir="$WORKSPACE/app/build/outputs"

build_type="${BuildType}"

# 上传蒲公英的 apk 路径

upload_apk_path=""

# 下面判断编译类型,来执行不同的 task

if [ "$build_type" == "debug" ]; then

gradle clean assembleDebug --stacktrace

mkdir "$output_app_dir"

cp $output_apk_dir/apk/app-debug.apk $output_app_dir/debug_${BUILD_NUMBER}.apk

upload_apk_path=$output_app_dir/debug_${BUILD_NUMBER}.apk

elif [ "$build_type" == "release" ]; then

gradle clean assembleRelease --stacktrace

mkdir "$output_app_dir"

cp $output_apk_dir/apk/app-release.apk $output_app_dir/release_${BUILD_NUMBER}.apk

cp $output_apk_dir/mapping/release/mapping.txt $output_app_dir/mapping_${BUILD_NUMBER}.txt

upload_apk_path=$output_app_dir/release_${BUILD_NUMBER}.apk

else

# 多渠道打包用的是 美团的 walle

#gradle clean assembleReleaseChannels --stacktrace

# -DBUGLY_ENABLED=true 是向 Gradle 中传递一个参数,用来开启 bugly 的 mapping 上传任务

gradle clean -DBUGLY_ENABLED=true assembleReleaseChannels --stacktrace

mkdir "$output_app_dir"

cp -r $output_apk_dir/channels $output_app_dir/channels_${BUILD_NUMBER}

cp $output_apk_dir/mapping/release/mapping.txt $output_app_dir/mapping_${BUILD_NUMBER}.txt

# 找到含有指定渠道名的 apk 文件的路径用来上传蒲公英

upload_apk_path=`find "$output_app_dir/channels_${BUILD_NUMBER}" -name "*-xxxx-*.apk"`

fi

#上传到蒲公英

echo "++++++++++++++upload to pgyer+++++++++++++"

#蒲公英上的User Key

uKey="xxxxxx"

#蒲公英上的API Key

apiKey="xxxxx"

#要上传的apk文件路径

APK_PATH="${upload_apk_path}"

#执行上传至蒲公英的命令

if [ -f "$APK_PATH" ]; then

curl -F "file=@${APK_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" http://www.pgyer.com/apiv1/app/upload

fi