
Offizieller VPN-Client für iOS und macOS mit verschlüsseltem Tunneling, sicherer Speicherung von Anmeldedaten, automatisierter Serverkonfiguration und Unterstützung für gängige VPN-Protokolle.
Copyright (c) 2025 Proton Technologies AG
Dieses Projekt verwendet Swift Package Manager für alle seine Abhängigkeiten. Erlaube Xcode, Pakete aufzulösen, bevor du ein Ziel ausführst.
git submodule init + git submodule update)brew bundleCmd+Shift+K)Zum Erstellen des Projekts ist eine Reihe von Geheimnissen erforderlich. Diese umfassen URLs und Schlüssel und werden in Dateien mit dem Namen ObfuscatedConstants.swift aufbewahrt. Diese Dateien werden in einem separaten Repository aufbewahrt, was eine zusätzliche Einrichtung erfordert, um sie synchron zu halten.
Rufe zunächst das Skript unter Integration/Scripts/credentials.sh mit dem Befehl setup auf. Gib den Pfad an, in dem du das Geheimnisse-Repository lokal klonen möchtest, mit dem Argument -p, und die URL des Repositorys mit dem Argument -r.
./Integration/Scripts/credentials.sh setup -p <path to credentials repo> -r <credentials remote>
Um dann zu überprüfen, ob die Einrichtung erfolgreich war:
./Integration/Scripts/credentials.sh checkout
Wenn die Einrichtung korrekt durchgeführt wurde, werden die verschleierten Konstanten automatisch während der Build-Phase „Generate Obfuscated Constants“ jeder App synchronisiert.
Das Projekt ist nach Schichten verpackt, um die Modulabhängigkeits-Hölle zu vermeiden:
Das Hinzufügen von neuem Code/neuen Funktionen zu LegacyCommon und NEHelper sollte nach Möglichkeit vermieden werden. Diese Pakete sollten nach und nach abgebaut werden, um ihre Komponenten in neue/bestehende Pakete in den obigen drei Kategorien zu verschieben.
Während der Entwicklung wird swiftlint im nicht-strengen Modus ausgeführt, sodass die Entwicklung einfacher ist, ohne sich um die Codeformatierung zu kümmern. Bei CI ist das Linting streng und schlägt bei jeder Warnung fehl. Bevor du Code in dieses Repository committest, führe das folgende Skript aus, um einen Pre-Commit-Hook hinzuzufügen, der alle neuen/geänderten Dateien im strengen Modus prüft und dich davon abhält, Code zu committen, der CI nicht bestehen würde.
./Integration/Scripts/pre_commit_lint.sh setup
Die App verwendet SwiftGen, um die Datei Localizable.strings zu generieren, um auf alle App-Strings zuzugreifen, die in den standardmäßigen Localizable.strings-Dateien gespeichert sind. Füge einfach einen neuen String zum Strings-Paket hinzu und führe den Befehl swiftgen in einem Verzeichnis aus, in dem swiftgen.yml definiert ist.
Die Code- und Datendateien in dieser Distribution sind unter den Bedingungen der GPLv3 lizenziert, wie sie von der Free Software Foundation veröffentlicht wurde. Siehe https://www.gnu.org/licenses/ für eine Kopie dieser Lizenz.
Copyright (c) 2025 Proton Technologies AG