Unity-iOS project export Xcode método de construcción automático

El proceso básico de publicación de Unity-iOS primero exporta el proyecto Xcode en Unity y luego configura algunos procesos de empaquetado de IOS en el proyecto Xcode, como importar lib, framework u otros recursos, establecer firmas y otras configuraciones de compilación, agregar scripts de compilación , etcétera.

Si estas operaciones se realizan manualmente después de exportar Xcode cada vez, perderá tiempo y será propenso a errores. En la actualidad, existen principalmente los siguientes métodos para configurar automáticamente proyectos Xcode:

  1. Unity establece la configuración del proyecto Xcode a través de la devolución de llamada PostProcessBuild al exportar el proyecto Xcode
  2. Otro método es configurarlo a través de la biblioteca Ruby ​​xcodeproj.Este método está separado del proyecto Unity y es una forma de configurar específicamente el proyecto xcode.

Después de configurar automáticamente el proyecto Xcode, podemos usar el comando xcodebuild para compilar automáticamente el proyecto Xcode y usar ExportOptions.plist para configurar el proceso de liberación automática del paquete ipa o oficial. A través de este conjunto completo de procesos, se puede realizar el proceso general de empaquetado automatizado de Xcode. Este artículo habla principalmente sobre la configuración automática del proyecto Xcode, si lo crees necesario, hablaré sobre el proceso de exportación de ipa más adelante.

Archivo de configuración del proyecto Xcode

Antes de hablar sobre compilaciones automáticas, repasemos brevemente el archivo de configuración del proyecto Xcode. Si su proyecto de Unity importa el SDK a través de CocoaPods, debemos abrir *.xcworkspace, que contiene dos xcodeproj

  1.  Unity-iPhone es el proyecto exportado por nuestro Unity
  2. Pods es el proyecto de pod que instalamos usando pod install

Si aún necesitamos establecer la configuración del proyecto Pods, como establecer la firma del marco u otras configuraciones, no hay forma de usar la devolución de llamada de Unity. La instalación del pod solo se puede generar en PodFile después de que el proyecto xcode esté exportado por la unidad Configure durante el proyecto Pod o use la biblioteca Ruby ​​xcodeproj para configurarlo uniformemente.

El archivo *.pbxproj en *.xcodeproj registra todas las configuraciones de nuestro proyecto Xcode. Puede abrir el archivo project.pbxproj en Unity-iPhone.xcodeproj para ver todas las configuraciones del proyecto.

Análisis de la estructura del proyecto pbxproj

Xcode lee el valor de rootObject, obtiene el uuid del proyecto y analiza toda la configuración del proyecto a partir del proyecto. Este archivo es fácil de entender y los comentarios son muy claros. Esto es muy conveniente cuando necesitamos establecer el valor más adelante, solo necesitamos consultarlo.

isa es equivalente al tipo, podemos consultar fácilmente la interfaz modificada en  xcodeproj

Manera genérica de implementar la configuración automática

Determinar qué modificar

La premisa de la compilación automática es poder configurar manualmente la compilación, lo cual es muy conveniente para comprender dónde debemos configurar la información de compilación automática.Por ejemplo, si quiero agregar un script de shell en la fase de compilación, puedo agregarlo manualmente en Xcode primero, y luego pase La herramienta de comparación de git es muy conveniente para ver el contenido modificado.

 Podemos descubrir fácilmente que se ha agregado un objeto de secuencia de comandos a la matriz buildPhases en PBXNativeTarget. Este método es muy simple y directo para los novatos, y la medicina puede curar la enfermedad.

Encuentre las herramientas adecuadas (interfaces) para implementar la funcionalidad

usar xcodeproj

require "xcodeproj"
# @添加shell脚本
# 打开项目
project_path = "Unity-iPhone.xcodeproj"
# PBXProject
project = Xcodeproj::Project.open(project_path)
#@PBXNativeTarget
$pbx_native_target = project.targets[0]
build_phases = $pbx_native_target.build_phases
# 生成一个uuid
uuid = project.generate_uuid
puts "uuid===>" + uuid
# 设置脚本属性
script = Xcodeproj::Project::Object::PBXShellScriptBuildPhase.new(project,uuid)
script.name = "test shell"
script.shell_path = "/bin/sh"
script.shell_script = "ruby test.rb"
script.run_only_for_deployment_postprocessing = "0"
script.always_out_of_date = "1"
# 插入位置
build_phases.insert(3,script)
# 保存项目
project.save

 Podemos saber que el tipo de ShellScript es PBXShellScriptBuildPhase a través del comentario, podemos agregar shellscript creando este objeto, y luego podemos configurar los valores internos después de la configuración manual

Use el método de devolución de llamada de Unity para establecer

Agregue scripts a través de PBXProject->AddShellScriptBuildPhase, pero esta forma de configuración no es tanto como usar Ruby. Por lo tanto, se recomienda usar la biblioteca xcodeproj para configurar el proyecto si es posible.

Supongo que te gusta

Origin blog.csdn.net/weixin_36719607/article/details/128179021
Recomendado
Clasificación