Cómo utilizar un script de shell para crear un archivo y exportar un archivo IPA firmado
Este script de Shell se utiliza para crear el proyecto de código fuente del espacio de trabajo XCode y exportarlo a un archivo IPA que se puede volver a firmar, que se utiliza para distribuir archivos de instalación de prueba y enviar archivos de revisión de la tienda de aplicaciones. Implementar desarrollo de productos auxiliares, gestión de configuración de pruebas, etc.
Para utilizar este script necesitas el siguiente entorno
- Mac OS 10.9+
- XCode 6.0 o superior y herramientas de línea de comandos
- Adecuado para proyectos WorkSpace, como aquellos que usan bibliotecas de dependencia Cocoapods
- Certificados y adaptadores de desarrollo configurados. *Configurar certificados de desarrollo y certificados ad ho (para depuración) y (para lanzamiento)
- Configurar el nombre del esquema y construir en el proyecto fuente
- Configurar los ajustes para depurar y liberar el nombre del certificado
- Confirma que puedes compilar completamente el proyecto desde la interfaz de usuario de Xcode y el entorno genera una nueva versión del proyecto
- Confirma que puedes compilar completamente el proyecto desde la interfaz de usuario de Xcode , desde el entorno Cree y genere archivos e IPA en , y fírmelos correctamente.
-Cree la carpeta de compilación en la carpeta del espacio de trabajo
2. Copie el archivo de script al directorio del espacio de trabajo
3. Abra la herramienta terminal y vaya al Espacio de trabajo. directorio
4. Otorgar permiso de ejecución al script
chmod 777 ./build_one_target.sh
5. el código fuente Coméntalo
Parámetros que deben modificarse
Nombre del espacio de trabajo
provisioningProfile
nombre del esquema
build_config
Bloque de código
La sintaxis del bloque de código sigue el código de marcado estándar
#! /bin/bash
# configuración de compilación inicial
# rutas de salida de archivo y ipa
build_path="./build"
# Nombre del espacio de trabajo
build_workspace="workspacename.xcworkspace"
#Nombre y ruta del proyecto
project_path=$(pwd)
project_name = $(ls | grep xcodeproj | awk -F.xcodeproj '{print $1}')
# nombre del archivo de configuración de aprovisionamiento
provisioningProfile='"XC Ad Hoc: com.xxxxxx . yyyyyyy"'
# La marca de tiempo del nombre del archivo de salida
timeStamp="$(date + "%Y%m%d_%H%M%S")" p>
echo "$project_path/$build_workspace"
if [ ! -d "$project_path/$build_workspace" ]; luego
echo "¡Error! La ruta actual no es un espacio de trabajo de xcode. Verifique o no use la opción -w".
abandonar.
"
salida 2
fi
# Obtener info.plist
app_infoplist_path=${project_path}/${project_name}/$ {project_name}-AppStore-Info.c " print CFBundleVersion" "${app_infoplist_path}")
# Obtener revisión de svn
svn_revision=$(svn info |grep Revisión:| awk '{print $2}')
#`svnversion -c |sed 's/^.*://' |sed 's/[A-Z]*$//'`
#svn info |grep Revisión:|awk '{print $2}'
#workspace_name='*.xcworkspace'
#ls $project_path/$ build_workspace &>/dev/null
#rtnValue=$?
#if [ ! $rtnValue = 0 ];entonces
# #build_workspace=$( echo $(basename $project_path/$workspace_name))
# echo "¡Error! La ruta actual no es un xcode. Verifique o no use la opción -w".
# exit 2
#fi
# nombre del esquema
build_scheme="nombre del esquema"
# build_scheme="nombre del esquema"
# configuración de buidl. El valor predeterminado es Depurar|Release
build_config="Release"
# clean build
clean_cmd='xcodebuild'
clean_cmd=${ clean_cmd}' clean -workspace '${build_workspace}' -scheme '${build_scheme}' -configuration '${build_config}
$clean_cmd > $build_path/clean_qa.txt || salir
# compilar y archivar, generar archivo comprimido
archive_name="targetname_QA_${timeStamp}.xcarchive"
archive_path=" ./build/"$nombre_archivo
build_cmd='xcodebuild'
build_cmd=${build_cmd}' -workspace '${build_workspace}' -scheme '${build_ Scheme}' -esquema genérico de destino}' -destination generic/platform=archivo iOS -.config '${build_config}' SOLAMENTE_ACTIVE_ARCH=NO -archivePath '$
{archive_path}
echo "** Archivado de control de calidad ** en ${archive_path}"
echo ${build_cmd}
$build_cmd >./build/build_archive_qa. log || salir
if [ ! -d "${archive_path}" ]; entonces
echo "** ¡Error! ARCHIVO QA FALLÓ ** Por favor verifique ./build/build_archive_qa .log."
salida 2
else
echo "** ARCHIVO QA EXITOSO ** al ${archive_path}"
fi
# Usar el servidor de control de calidad para exportar a ipa
ipa_name="targetname_QA_adhoc_v${bundleShortVersion}_b${bundleVersion}_rev${svn_revision}_t${timeStamp}.ipa"
ipa_path="./build/"$ipa_name"
ipa_cmd='xcodebuild'
ipa_cmd=${ipa_cmd}' -exportArchive -exportFormat ipa - ruta_archivo '${archive_path}' - ruta_exportación '${ipa_path}' - ruta_exportación '${ipa_path}' - ruta_exportación '${ipa_path}' - ruta_exportación '${ipa_path}} - ruta_exportación '${ipa_path}} - ruta_exportación ' $ {ipa_path}}exportProvisioningProfile '${provisioningProfile}
echo "** Exportando control de calidad ** al ${ipa_path}"
echo ${ ipa_cmd}
eval ${ipa_cmd} > ./build/export_ipa_qa.log || salir
if [ ! -f "${ipa_path}" ]; * ¡Error! Error de control de calidad de IPA de exportación** Por favor, consulte ./build/export_ipa_qa.log."
exit 2
else
echo "** Control de calidad de exportación de IPA EXITOSO * * al ${ipa_path}"
fi
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525 354 55565758596061626364656667686970717273747576778798081828384858687888990919293949596979899100
6. / p>
Los proyectos grandes tardarán aproximadamente entre 3 y 5 minutos en completarse.
Cuando haya terminado, verá los siguientes dos archivos principales en el directorio de compilación en el directorio del espacio de trabajo.
targetname_QA_20150420_094731.xcarchive
targetname_QA_adhoc_v2.1.1_b44_rev7849_t20150420_094731.ipa
El archivo xcarchive es muy importante y se puede utilizar para archivos ipa firmados por diferentes certificados
El archivo ipa se exporta utilizando el certificado ad hoc para la distribución de prueba de máquina real. El nombre del certificado se configura en el código fuente. Realice las modificaciones correspondientes según los ID de paquete de los diferentes productos. Los nombres y certificados aquí son solo para referencia de demostración y no tienen ningún significado comercial.