根据项目初级的需求,整理一键化这个功能。美中不足的是,因为游戏用的是tolua框架,而最新的mac机器不是luajit ,是原生lua。所以mac用打了字节码的bundle是解析不了的。 但是mac可以打非lua字节码的bundle。
所以AB文件必须在win平台下打好,提交才可以在打包。也就是没有实现真正的一键化打包。。。。。。。
如果有2台打包机,一个window打AB,一个Mac打包。目前只能。。。。。有好的思路,希望能互相沟通。
最后布置好的Jenkins效果:
一、Android
二、Ios配置
三、知识点集合
1)Jenkins传参数到sh脚本使用
在sh里面获取配置参数: ${companyName} 是Jenkins的变量名字companyName
2)c#脚本获取sh传入的参数:
string[] args = System.Environment.GetCommandLineArgs();
3)打包流程思路
mac机器上checkout一个项目的两个目录,切换号平台。
打包前:
1)两个都需要关闭unity,Xcode,AndroidStudio软件,以防止调用冲突。
2)svn目录,会自动更新,还原到版本。
3)AB打好的文件路径根据平台StreamingAssets_android/StreamingAssets_ios放好,所以需要拷贝到持久化目录StreamingAssets里面一份。
4)打包
5)自动上传到svn
我把通用的功能挪出来了,CommonFun.sh (真的不知道叫什么好!通用方法吧)
#!/bin/sh
cd $HOME
source .bash_profile
#关闭Android,untiy,Xcode软件,防止冲突
closeApp(){
CloseAndroidStudio
CloseXcode
CloseUnity
}
updateSvn(){
echo $1
echo $2
echo $3
echo $4
cd /
#删除到处中间项目的位置
rm -rf $4
rm -rf $3
rm -rf $2
cd $1
#svn 项目更新
#cd ${PROJECT_PATH}
svn cleanup
svn revert -R .
svn up
#删除文件
#把ios最新的拷贝到这个文件夹
cp -r $3/. $2
}
#显示时间
showDate(){
DATE=$(date +%Y%m%d_%H%M%S)
echo "--------------Time is $DATE------------------"
}
#上传包文件
updatePackage(){
echo $1
echo $2
echo $3
cd /
if [ -f "$1" ]; then
echo "--------------updatePackage Start!------------------"
#创建文件夹
cd $2
#获取年月日
DATE=$(date +%Y%m%d_%H%M%S)
#拷贝到svn路径
mkdir $DATE
cp -f $1 $DATE/$3
#svn 提交
svn add $DATE
svn commit -m "update package" $DATE
echo "--------------updatePackage End!------------------"
else
echo "$1 is not exist!"
exit
fi
}
BuildAndroid.sh
#!/bin/sh
# unity app path
UNITY_PATH=/Applications/Unity/Unity.app/Contents/MacOS/Unity
#root path
PRJECT_ROOT_PATH=/Users/chenpeng
# project path TODO
PROJECT_PATH=${PRJECT_ROOT_PATH}/client_android
#生成的log路径#
UNITY_LOG_PATH=${PROJECT_PATH}/../log_android.txt
#Asset资源目录
ASSET_PATH=${PROJECT_PATH}/Assets
#持久化目录
DELETE_STREAM_PATH=${ASSET_PATH}/StreamingAssets
#安卓AB目录
DELETE_STREAM_ANDOID_PATH=${ASSET_PATH}/StreamingAssets_android
#Unity项目导出的Gradle文件夹的路径
GRADLE_PRJ_FOLDER_PATH=${PROJECT_PATH}/AndroidBuild
cd $HOME
. ./CommonFun.sh
closeApp
updateSvn $PROJECT_PATH $DELETE_STREAM_PATH $DELETE_STREAM_ANDOID_PATH $GRADLE_PRJ_FOLDER_PATH
cd /
#将unity导出成xcode工程#
echo "===========