一、部署jenkins省略
二、部署flutter
1.環境:
Flutter (Channel stable, v1.12.13+hotfix.5, locale zh-Hans-CN)
下載地址:https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_v1.12.13+hotfix.5-stable.zip
gradle: 3.5.0
下載地址: https://gradle.org/next-steps/?version=3.4.1&format=bin
jdk: 1.8.0_151 (自行安裝)
Android SDK version 28.0.3
下載地址:http://tools.android-studio.org/index.php/sdk/
開發給定渠道如下:
qijian {}
yingyongbao {}
vivo {}
oppo {}
baidu {}
lenovo {}
huawei {}
samsung {}
xiaomi {}
anzhi {}
sougou {}
gfan {}
uc {}
_360 {}
meizu {}
mumayi {}
2.部署
環境部署:
cd /usr/local/src/
wget https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_v1.12.13+hotfix.5-stable.tar
tar -xf flutter_linux_v1.12.13+hotfix.5-stable.tar -C /usr/local/
wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
mkdir /usr/local/android-home -p
tar -xf android-sdk_r24.4.1-linux.tgz -C /usr/local/android-home
wget https://gradle.org/next-steps/?version=3.4.1&format=bin
unzip gradle-3.5-bin.zip
mkdir -p /opt/gradle/
mv gradle-3.5 /opt/gradle/
增加 profile
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH:/usr/local/apache-maven-3.3.9/bin:/usr/local/flutter/bin
export PATH=$JAVA_HOME/bin:$PATH
export ANDROID_HOME=/usr/local/android-home
export PATH=$PATH:/usr/local/android-home/android-tools/bin
export PATH=$ANDROID_HOME/android-tools:$ANDROID_HOME/platform-tools:$PATH
export GRADLE_HOME=/opt/gradle/gradle-3.5
export PATH=$GRADLE_HOME/bin:$PATH
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH=/usr/local/flutter/bin:$PATH
source /etc/profile
安裝 Android SDK
/usr/local/android-home/tools/bin/sdkmanager "platforms;android-28" "build-tools;28.0.3"
flutter doctor -v
flutter 版本信息會出現unknown 狀態
需要升級git 版本
yum remove git
yum install http://opensource.wandisco.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm -y
git version 2.22.0
flutter doctor -v
會出現網絡問題
修改:
/usr/local/flutter/packages/flutter_tools/gradle/flutter.gradle
再次運行 flutter doctor -v
發現已經解決報錯問題。
jenkins上部署:
執行shell
代碼粘貼如下:
#下載flutter 依賴包
flutter packages get
#flutter 打包
flutter build apk
#分渠道創建目錄
rm -rf /data/tgbus_app_android/*
mkdir /data/tgbus_app_android/{_360,anzhi,baidu,gfan,huawei,lenovo,meizu,mumayi,qijian,samsung,sougou,uc,xiaomi,yingyongbao,oppo,vivo}
dir="/data/tgbus_app_android/"
project=`ls /data/tgbus_app_android/`
for i in $project;do
scp -qpr /data/tgbus.jks $dir$i
scp -qpr /data/jenkins/.jenkins/workspace/tgbus_app_android/build/app/outputs/apk/release/app-release.apk $dir$i
cd $dir$i/
#解碼apk
apktool d -f app-release.apk
#修改渠道
sed "s/test1/${i}/g" -i app-release/AndroidManifest.xml
#重新打包apk
apktool b app-release -o app-release-$i-dev.apk
#為打包后的apk 進行簽名,tgbus.jks 為開發提供的秘鑰
echo "32100000" | jarsigner -verbose -keystore tgbus.jks -signedjar app-release-$i.apk app-release-$i-dev.apk tgbus
if [ $? -eq 0 ];then
echo "build is ok"
else
echo "build is false"
fi
done
以上命令 apktool 安裝:
右鍵點擊此鏈接,另存為apktool
下載最新版本的apktool-2,然后重命名為apktool.jar
將apktool和apktool.jar移動到/usr/local/bin文件夾中
mv apktool /usr/local/bin
mv apktool.jar /usr/local/bin
給apktool和apktool.jar添加可執行權限
chmod +x apktool
chmod +x apktool.jar
jarsigner 簽名命令:
cp /usr/local/jdk1.8/bin/jarsigner /usr/local/bin
至此,jenkins 自動化打包flutter android apk包完成。