Cordova + Vue打包iOS,Xcode提交至TestFlight
1. 安装Cordova
sudo npm install -g cordova
2. 新建Cordova项目
# cordovaApp:项目的目录名称(path)
# com.cordova.test:项目的ID,用于写入 config.xml 的 widget 中(ID)
# HelloWorld:应用程序的显示名称(name)
# 项目的可选配置项(options)
# --template:可执行项目的模版文件
# --copy-from:指定 src
# --link-to:将前端资源目录链接到 cordova 项目的 www 目录下
cordova create cordovaApp com.cordova.test HelloWorld
# 进入 cordovaApp 项目目录
cd cordovaApp
# 添加 iOS 平台
cordova platform add ios
# 添加 android 平台
cordova platform add android
3. 打包Vue项目,将npm run build后将生成的文件移至Cordova项目www文件夹中
4. 进入Cordova项目根目录
# 执行
# 打包 ios 平台
cordova build ios
# 然后进入下面目录,打开 *.xcodeproject 文件
# 打包 android 平台
cordova build android

1.png
5. Xcode打包,选择机型后,点击左侧小三角启动模拟器运行
6. Xcode提交TestFlight

2.png

3.png

4.png

5.png

2.png
6. sh自动编译编写
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
plugins=$2
###热更新资源表部署
client_build () {
cd ${DIR}
npm install
npm run build:app
cd ${DIR}/app/dev
cordova-hcp build
# rsync -CKavz --exclude-from=${DIR}/app/dev/exclude.list --progress ${DIR}/app/dev/www/ rsync://121.199.71.142:8873/apphome/jxz/assets/dev/
};
###热更新资源表部署
client_build_pro () {
cd ${DIR}
npm install
npm run build:app:pro
cd ${DIR}/app/pro
cordova-hcp build
# rsync -CKavz --exclude-from=${DIR}/app/pro/exclude.list --progress ${DIR}/app/pro/www/ rsync://121.199.71.142:8873/apphome/jxz/assets/pro/
};
###打包测试安卓包
build_dev () {
cd ${DIR}/app/dev
echo 'android-----dev---------环境'
echo 'remove android'
cordova platform remove android
echo 'add android'
cordova platform add android@8.1.0
echo 'build android'
cordova build android --release
jarsigner -verbose -storepass 123456 -keystore com.pepm.keystore -signedjar ${DIR}/output/pepm_test_`date +%Y%m%d `.apk ${DIR}/app/dev/platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk com.pepm.keystore
};
###仅仅打包测试安卓包
build_dev_only () {
cd ${DIR}/app/dev
echo 'android-----dev---------环境'
echo 'build android'
cordova build android --release
jarsigner -verbose -storepass 123456 -keystore com.pepm.keystore -signedjar ${DIR}/output/pepm_test_`date +%Y%m%d `.apk ${DIR}/app/dev/platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk com.pepm.keystore
};
###打包正式安卓包
build_pro () {
cd ${DIR}
echo ${DIR}'-------android-----pro---------环境'
# echo 'rm -rf www'
#rm -rf www
# echo 'npm run build www'
# npm run build
# rename www
echo 'cordova build android --release'
cordova build android --release
jarsigner -verbose -storepass 123456 -keystore com.pepm.keystore -signedjar ${DIR}/output/pepm_pro_`date +%Y%m%d `.apk ${DIR}/platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk com.pepm.keystore
echo ${DIR}/output/pepm_pro_`date +%Y%m%d `.apk
};
###仅仅打包正式安卓包
build_pro_only () {
cd ${DIR}/app/pro
echo 'build android'
cordova build android --release
jarsigner -verbose -storepass 123456 -keystore com.pepm.keystore -signedjar ${DIR}/output/pepm_pro_`date +%Y%m%d `.apk ${DIR}/app/pro/platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk com.pepm.keystore
};
###运行测试安卓包
run_dev () {
cd ${DIR}/app/dev
echo '运行android-----dev---------环境'
echo 'remove android'
cordova platform remove android
echo 'add android'
cordova platform add android@8.1.0
echo 'run android'
cordova run android
};
###运行正式安卓包
run_pro () {
cd ${DIR}/app/pro
echo '运行android-----pro---------环境'
echo 'remove android'
cordova platform remove android
echo 'add android'
cordova platform add android@8.1.0
echo 'run android'
cordova run android
};
###编译测试ios项目
build_ios_dev () {
cd ${DIR}/app/dev
echo 'ios-----dev---------环境'
echo 'remove ios'
cordova platform remove ios
echo 'add ios'
cordova platform add ios@5.1.1
echo 'run android'
cordova build ios --release
};
###编译正式ios项目
build_ios_pro () {
cd ${DIR}/app/pro
echo 'ios-----pro---------环境'
echo 'remove ios'
cordova platform remove ios
echo 'add ios'
cordova platform add ios@5.1.1
cordova build ios --release
};
###运行测试ios
run_ios_dev () {
cd ${DIR}/app/dev
echo 'ios-----dev---------环境'
echo 'remove ios'
cordova platform remove ios
echo 'add ios'
cordova platform add ios@5.1.1
cordova run ios
};
###运行正式ios
run_ios_pro () {
cd ${DIR}/app/pro
echo 'ios-----pro---------环境'
echo 'remove ios'
cordova platform remove ios
echo 'add ios'
cordova platform add ios@5.1.1
cordova run ios
};
###添加插件
add () {
cd ${DIR}/app/dev
echo 'dev---------环境---添加'${plugins}
cordova plugin add ${plugins}
cd ${DIR}/app/pro
echo 'pro---------环境---添加' ${plugins}
cordova plugin add ${plugins}
};
###删除插件
remove () {
cd ${DIR}/app/dev
echo 'dev---------环境---删除'${plugins}
cordova plugin remove ${plugins}
cd ${DIR}/app/pro
echo 'pro---------环境---删除' ${plugins}
cordova plugin remove ${plugins}
};
###################################################################################
case "$1" in
client_build)
client_build;
echo 'dev client build done.';
;;
client_build_pro)
client_build_pro;
echo 'pro client build done.';
;;
build_dev)
build_dev;
echo 'dev build done.';
;;
build_dev_only)
build_dev_only;
echo 'dev build dev only done.';
;;
build_pro_only)
build_pro_only;
echo 'pro build pro only done.';
;;
build_pro)
build_pro;
echo 'pro build done.';
;;
run_dev)
run_dev;
echo 'dev run done.';
;;
run_pro)
run_pro;
echo 'pro run done.';
;;
build_ios_dev)
build_ios_dev;
echo 'build_ios_dev done.';
;;
build_ios_pro)
build_ios_pro;
echo 'build_ios_pro done.';
;;
run_ios_dev)
run_ios_dev;
echo 'run_ios_dev done.';
;;
run_ios_pro)
run_ios_pro;
echo 'run_ios_pro done.';
;;
add)
add;
echo 'add plugin.';
;;
remove)
remove;
echo 'remove plugin.';
;;
*)
echo -e "\033[5;31;1m 缺少参数 \033[0m"
echo -e "\033[32;1m 参数说明:\033[0m"
echo "
[热更客户端]
测试:client_build
正式:client_build_pro
[安卓打包,重新构建项目]
测试:build_dev
正式:build_pro
[安卓打包,仅打包]
测试:build_dev_only
正式:build_pro_only
[安卓真机运行]
测试:run_dev
正式:run_pro
[ios真机运行]
测试:run_ios_dev
正式:run_ios_pro
[ios编译]
测试:build_ios_dev
正式:build_ios_pro
[add插件]
add
"
exit 1;
;;
esac;
签名
keytool -genkeypair -alias [Coreqi 别名] -keyalg RSA -validity [400 有效期] -keystore [fanqi.jks 签名的文件]
jarsigner -verbose -keystore [fanqi.jks 签名的文件] -signedjar [OppoSignVerify_signed.apk 签名后的文件地址] [app-debug.apk 待签名] [Coreqi 生成 签名文件时输入的别名]
cordova-plugin-camera iOS 闪退
Privacy - Camera Usage Description
cameraDesciption

image.png