2016-06-03 6 views
0

Ich habe ein Projekt mit CocoaPods, in dem einer meiner Pods eine .framework-Datei erfordert, die als Referenz zum Pods-Projekt hinzugefügt wird, nachdem es von pod update generiert wurde. Die .framework-Datei befindet sich jetzt im Hauptprojektverzeichnis und ich füge einen Verweis hinzu. Zur Zeit kann ich nach dem Erstellen der Pods in Xcode in den Projektnavigator gehen, mit der rechten Maustaste klicken und die Datei zum Projekt hinzufügen. Ich muss dann die Framework-Datei auswählen und ihr Ziel auf den Pod setzen, der sie nutzen soll.Wie kann eine Dateireferenz hinzugefügt und das Ziel dieser Datei automatisch mit dem Post-Installationsteil der Poddatei festgelegt werden?

Damit mein CI-Server automatisch erstellt werden kann, versuche ich, den Prozess des Hinzufügens der Datei und die Auswahl des Ziels mithilfe des Hooks post_install im Podfile zu automatisieren. Dort stoße ich auf Probleme.

Ich habe es geschafft, den Dateiverweis zu der Gruppe für den eigentlichen Pod hinzuzufügen, aber das scheint nicht zu funktionieren, da die Dateien in diesem Pod ein Framework von außerhalb seiner Gruppe zu importieren scheinen. Wenn ich den Dateiverweis manuell zum Pods-Projekt hinzufüge, aber nicht innerhalb der eigentlichen Gruppe für den betreffenden Pod, funktioniert das problemlos.

Erste Frage:
Gibt es eine richtige Art und Weise eine Datei Verweis auf das Pods Projekt hinzuzufügen selbst ohne es zu einer bestimmten Pod Gruppe hinzufügen zu müssen? Oder vielleicht eine Möglichkeit, beim Hinzufügen eine neue Gruppe für den Dateiverweis zu erstellen?

Zweite Frage:
Wie würde ich das Ziel für die Datei gehe über die Einstellung, wenn es automatisch in das Pods Projekt hinzugefügt wird?

Dies ist der Code, der die Datei Verweis auf die Pod-Gruppe fügt sich:

post_install do |installer| 
    dir = Dir.pwd + '/app/VPX.framework' 
    group = installer.pods_project.pod_group('OGVKit') 
    installer.pods_project.add_file_reference(dir, group) 
end 

Antwort

0

Sie die zweite, indem man einen Verweis auf das Ziel und das Hinzufügen der Datei Verweis auf sie erreichen kann. Hier ist der tl; dr;

Lösung
post_install do |installer| 

    dir = Dir.pwd + '/app/VPX.framework' 

    project = installer.pods_project 

    group_name = 'OGVKit' 

    group  = project.pod_group(group_name) 
    reference = project.add_file_reference(dir, group) 

    project.targets.select { |target| 
     target.add_file_references([ reference ]) if target.display_name.eql? group_name 
    } 

end 

hier eine kleine Panne:

project.add_file_reference(dir, group) 

Dieses eine PBXFileReference zurückkehrt, stellt dies nur einen Verweis auf eine Datei im Dateisystem.

Wir können diese Referenz verwenden, um sie dem Build-Ziel hinzuzufügen.

project.targets.select { |target| 

Loop- und iterieren die verfügbaren Ziele

target.add_file_references([ reference ]) if target.display_name.eql? group_name 

Das Ziel add_file_references akzeptiert ein Array von PBXFileReference Objekten, groß, können wir die man verwenden wir zuvor erworben haben.

Cocoapods Zielname ist derselbe wie der Gruppenname, daher müssen wir nur eine bedingte Überprüfung durchführen, um dies zu bestätigen.

Hoffe, das hilft.

Verwandte Themen