Projet Unity-iOS export Xcode méthode de construction automatique

Le processus de base de la publication Unity-iOS exporte d'abord le projet Xcode dans Unity, puis configure certains processus d'empaquetage IOS dans le projet Xcode, tels que l'importation de lib, de framework ou d'autres ressources, la définition de signatures et d'autres paramètres de compilation, l'ajout de scripts de compilation. , et ainsi de suite.

Si ces opérations sont effectuées manuellement après avoir exporté Xcode à chaque fois, cela fera perdre du temps et sera sujet aux erreurs. À l'heure actuelle, il existe principalement les méthodes suivantes pour configurer automatiquement les projets Xcode :

  1. Unity définit les paramètres du projet Xcode via le rappel PostProcessBuild lors de l'exportation du projet Xcode
  2. Une autre méthode consiste à le définir via la bibliothèque ruby ​​xcodeproj.Cette méthode est séparée du projet Unity et constitue un moyen de configurer spécifiquement le projet xcode.

Après avoir configuré automatiquement le projet Xcode, nous pouvons utiliser la commande xcodebuild pour créer automatiquement le projet Xcode et utiliser ExportOptions.plist pour configurer le processus de publication automatique de l'ipa ou du package officiel. Grâce à un tel ensemble de processus, le processus global d'emballage automatisé de Xcode peut être réalisé. Cet article parle principalement de la configuration automatique du projet Xcode, si vous pensez que c'est nécessaire, je parlerai plus tard du processus d'exportation d'ipa.

Fichier de configuration du projet Xcode

Avant de parler de builds automatiques, passons brièvement en revue le fichier de configuration du projet Xcode. Si votre projet Unity importe le SDK via CocoaPods, nous devons ouvrir *.xcworkspace, qui contient deux xcodeproj

  1.  Unity-iPhone est le projet exporté par notre Unity
  2. Pods est le projet de pod que nous avons installé à l'aide de pod install

Si nous avons encore besoin de définir les paramètres du projet Pods, tels que la définition de la signature du framework ou d'autres paramètres, il n'y a aucun moyen d'utiliser le rappel de Unity.L'installation du pod ne peut être générée dans le PodFile qu'une fois le projet xcode terminé. exporté par unité.Définissez pendant le projet Pod ou utilisez la bibliothèque ruby ​​xcodeproj pour le définir de manière uniforme.

Le fichier *.pbxproj dans *.xcodeproj enregistre tous nos paramètres de projet Xcode. Vous pouvez ouvrir le fichier project.pbxproj sous Unity-iPhone.xcodeproj pour afficher tous les paramètres du projet.

Analyse de la structure du projet pbxproj

Xcode lit la valeur rootObject, obtient l'uuid du projet et analyse l'intégralité de la configuration du projet à partir du projet. Ce fichier est facile à comprendre et les commentaires sont très clairs, ce qui est très pratique lorsque nous devons définir la valeur plus tard, nous n'avons qu'à nous y référer.

isa est équivalent au type, nous pouvons facilement interroger l'interface modifiée dans  xcodeproj

Manière générique d'implémenter la configuration automatique

Déterminer ce qu'il faut modifier

Le principe de la construction automatique est de pouvoir configurer manuellement la construction, ce qui est très pratique pour comprendre où nous devons configurer les informations de construction automatique. Par exemple, si je veux ajouter un script shell dans la phase de construction, je peux l'ajouter manuellement dans Xcode d'abord, puis passez L'outil de comparaison git est très pratique pour voir le contenu modifié.

 Nous pouvons facilement découvrir qu'un objet de script a été ajouté au tableau buildPhases dans PBXNativeTarget. Cette méthode est très simple et directe pour les novices, et le médicament peut guérir la maladie

Trouver les bons outils (interfaces) pour implémenter la fonctionnalité

utiliser 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

 Nous pouvons savoir que le type ShellScript est PBXShellScriptBuildPhase via le commentaire, nous pouvons ajouter un shellscript en créant cet objet, puis les valeurs à l'intérieur peuvent être définies par nous après le réglage manuel

Utilisez la méthode de rappel d'unité pour définir

Ajoutez des scripts via PBXProject-> AddShellScriptBuildPhase, mais cette façon de définir n'est pas aussi importante que l'utilisation de ruby. Par conséquent, il est recommandé d'utiliser la bibliothèque xcodeproj pour configurer le projet si possible.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_36719607/article/details/128179021
conseillé
Classement