Jenkins shell 工作自动化脚本

本文详细介绍如何在本地机器上编译Android融云SDK,包括Rong_IMKit.jar和Rong_IMLib.jar的构建过程,以及如何使用Gradle进行清理、编译和打包。同时,文章还介绍了如何通过网络下载特定版本的SDK,并将其集成到指定分支的RCE源码中进行编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

build kit and lib jar

  • 编译本地机器上的 Android 融云 SDK Jar 包 , 包含 Rong_IMKit.jar 和 Rong_IMLib.jar , 输出产物在本机 xx/localjenkins/output/
cd /Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace

git checkout . 
git checkout $SDK_Branch
echo "current branch is $SDK_Branch"

if [ $isPullCode = "true" ]; 
then
git pull
fi

./gradlew clean
echo "clean lib successful"


./gradlew lib:build
echo "build lib successful"
./gradlew lib:makeJar
echo "makeJar lib successful"


mkdir /Users/zhouxuming/Documents/localjenkins/output/$SDK_Branch

cp lib/build/libs/Rong_IMLib.jar /Users/zhouxuming/Documents/localjenkins/output/$SDK_Branch


./gradlew kit:build
echo "build kit successful"
./gradlew kit:makeJar
echo "makeJar kit successful"

cp kit/build/libs/Rong_IMKit.jar /Users/zhouxuming/Documents/localjenkins/output/$SDK_Branch

echo end


build_protocol

  • 编译本地 RongIMLib.so 文件 需要依赖 protocol-stack 仓库 protocol-stack 默认 master 分支代码
protocol_root="/Users/zhouxuming/Documents/ReviewRongCloudSrc/protocol-stack/"
project_root="/Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace/"
target_path=$project_root"lib/src/main/jni/"

# 更新协议栈 matser 分支代码
cd $protocol_root
git checkout .
git clean -df 
git checkout $ProtocolBranch
git fetch
git pull

#编译协议栈仓库 rc rcsdk/obj/local 相关文件
#ndk-build -C rcsdk -j4 DEBUG=true CIPHER=数据库是否加密

ndk-build -C rcsdk -j4 DEBUG=true CIPHER=false

cp -r rcsdk/obj/local/* $target_path
cp rcsdk/jni/RCloudBiz.h $target_path
cp rcsdk/jni/BizListener.h $target_path
cp rcsdk/jni/Predefine.h $target_path

cd $project_root

# 编译 Android 仓库 so 
# -j4 指定 4 核编译 , 如果没有指定NDK_DEBUG,则会从 AndroidManifest.xml中获取(查看 <application> 元素是否有 android:debuggable="true")。
ndk-build -C lib/src/main -j4 DEBUG=true


OpenSourceToSDKWithHttp

  • 通过网络下载 某个版本的 SDK 并且替换指定分支 RCE 源码编译,apk 功能需手动验证

project_root="/Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace/"

#http://downloads.rongcloud.cn/Rong_Cloud_Android_IMKit_CallKit_RedPacket_LocationLib_PushLib_Sight_MCenter_Sticker_SDK_v2_9_16_Dev.zip
#http://downloads.rongcloud.cn/Rong_Cloud_Android_IMKit_CallKit_PushLib_SDK_v2_9_16_Dev.zip
#http://downloads.rongcloud.cn/Rong_Cloud_Android_IMKit_SDK_v2_9_16_Dev.zip

downloadUrl=http://downloads.rongcloud.cn/Rong_Cloud_Android_IMKit_SDK_v$SDK_Version"_Dev.zip"
downloadZipFile=Rong_Cloud_Android_IMKit_SDK_v$SDK_Version"_Dev.zip"
SDKFile=Rong_Cloud_Android_IMKit_SDK_v$SDK_Version"_Dev/"


if [ $Rce_Version != "error" ]; then

new_branch=$Rce_Version"_SDK"

cd $project_root

 
 #创建拉出新的副本分支
#if [ "error" != "error" ]; then
   git checkout .
   git clean -df
   git checkout $Rce_Version
   
   git branch $new_branch
   git checkout $new_branch
 
 
 # 下载官网 SDK 并解压
 
   cd ..
   mkdir tempSDK_$SDK_Version
   cd tempSDK_$SDK_Version
   wget $downloadUrl
   unzip $downloadZipFile
   
   cp -r $SDKFile $project_root
  # cp -r $SDKFile/IMLib/ $project_root
 
 
 
 # 移除本地工程 kit lib thirdparty push toollib


  cd $project_root
  rm -r $project_root"lib"
  rm -r $project_root"kit"
  rm -r $project_root"thirdparty"
  rm -r $project_root"toollib"
  rm -r $project_root"push"
  
#else  
#	echo "test"
#fi

# 更改 settings.gradle  rcelib/build.gradle 依赖

 # sed 's/要被取代的字串/新的字串/g' 
   cd $project_root

   
   sed -in-place -e "s/include ':lib'/include ':IMLib'/g" settings.gradle
   sed -in-place -e "s/include ':kit'/include ':IMKit'/g" settings.gradle
   sed -in-place -e "s/include ':thirdparty'//g" settings.gradle
   sed -in-place -e "s/include ':push'//g" settings.gradle
   sed -in-place -e "s/include ':toollib'//g" settings.gradle
   
    
 



 	sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" rcelib/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" callkit/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" contactcard/build.gradle
    
    sed -in-place -e "s/api project (':kit')/api project(':IMKit')/g" recognizer/build.gradle # recognizer 多个空格
    
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" remotecontrol/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" sticker/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" seal/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" sight/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g"  ptt/kit/build.gradle
    sed -in-place -e "s/api project(':lib')/api project(':IMLib')/g"  ptt/lib/build.gradle
    
    
    
    
    sed -in-place -e "s/api project(':toollib')/api project(':IMLib')/g" callengine/agora/build.gradle
    sed -in-place -e "s/api project(':toollib')/api project(':IMLib')/g" callengine/blink/build.gradle
    sed -in-place -e "s/api project(':toollib')/api project(':IMLib')/g" callengine/rong/build.gradle
    
    sed -in-place -e "s/api project(':lib')/api project(':IMLib')/g" calllib/build.gradle
    sed -in-place -e "s/api project(':toollib')//g" calllib/build.gradle
    
    
    sed -in-place -e "s/api project(':lib')/api project(':IMKit')/g"  moment/lib/build.gradle
    sed -in-place -e "s/api project(':thirdparty')//g"  moment/lib/build.gradle
     
    
   
    
    
    sed -in-place -e "s/'com.squareup.okhttp3:okhttp-urlconnection:3.6.0'/'com.squareup.okhttp3:okhttp-urlconnection:3.6.0\\' \\n api \\'com.huawei.android.hms:push:2.6.1.301'/g" rcekit/build.gradle
    
    
    
    
    
    
    
     
 
 
 
else  
	echo "rce branch 必须指定! 脚本结束"
fi

Update-SDK-Version

  • 将 RCE 目标分支的 IM SDK (kit lib thirdparty push toollib) 代码更新到最新, 更新后的检查编译测试需要手动进行
if [ $RCE_Branch != "error" ]; then
	echo $RCE_Branch
    echo $SDK_Branch
    
    cd /Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace/
    
    #工程根路径
    projectrootpath=/Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace/
    
    git checkout .
    git clean -df
    git checkout $SDK_Branch
    
    #创建临时目录
    cur_dateTime="`date +%Y_%m_%d_%H_%m_%s`"  
    
    echo $cur_dateTime
    
    targetpath=/Users/zhouxuming/Documents/ReviewRongCloudSrc/tempSDK_$cur_dateTime/
    
    mkdir $targetpath
    
    #拷贝最新 im sdk 至临时存放文件夹
    cp -r $projectrootpath"lib" $targetpath
    cp -r $projectrootpath"kit" $targetpath
    cp -r $projectrootpath"thirdparty" $targetpath
    cp -r $projectrootpath"toollib" $targetpath
    cp -r $projectrootpath"push" $targetpath
    #cp -r $projectrootpath"sight" $targetpath
    # cp -r $projectrootpath"seal" $targetpath
    # cp -r $projectrootpath"redpacket" $targetpath
    
    git checkout .
    git checkout $RCE_Branch
    
    
    rm -r $projectrootpath"lib"
    rm -r $projectrootpath"kit"
    rm -r $projectrootpath"thirdparty"
    rm -r $projectrootpath"toollib"
    rm -r $projectrootpath"push"
    #rm -r $projectrootpath"sight"
    # rm -r $projectrootpath"seal"
    # rm -r $projectrootpath"redpacket"
    
    cp -r $targetpath"lib" $projectrootpath
    cp -r $targetpath"kit" $projectrootpath
    cp -r $targetpath"thirdparty" $projectrootpath
    cp -r $targetpath"toollib" $projectrootpath
    cp -r $targetpath"push" $projectrootpath
    # cp -r $targetpath"sight" $projectrootpath
    # cp -r $targetpath"seal" $projectrootpath
    # cp -r $targetpath"redpacket" $projectrootpath
    
    rm -fr $targetpath
    
    echo "IM SDK 升级完成 ,请验证是否能编译通过以及 apk 功能是否完善 "
    
    
else  
	echo "rce branch 必须指定! 脚本结束"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值