So vereinfachen Sie das Leben von iOS-Entwicklern

Wahrscheinlich möchte jeder Entwickler, wenn er anfängt, eine neue Technologie zu beherrschen, alles selbst ausprobieren, alles von der untersten Ebene implementieren und dann das Ergebnis seiner Arbeit genießen. Mit der Ansammlung von Erfahrung werden jedoch viele Aufgaben ziemlich langweilig und ich möchte mich von dieser notwendigen, aber uninteressanten Routine befreien. In diesem Artikel möchte ich erläutern, welche Methoden und Tools dazu beitragen, das Leben der Entwickler zu vereinfachen und Nerven zu sparen.

Einrichten eines Projekts, einer Entwicklungsumgebung, Verbinden von Bibliotheken, Snippets


Dies ist eine der ersten und einfachsten, aber immer noch bedeutenden Aktionen, aber es wurden bereits viele Artikel darüber geschrieben, wie zum Beispiel dies , dies , dies, und es gibt kaum einen Entwickler, der dies nicht weiß, daher werden wir hier nicht aufhören. Auch für Xcode wurde eine ganze Reihe nützlicher Plugins geschrieben, ein Übersichtsartikel, den Sie hier lesen können .

Benutzerdefiniertes CocoaPods-Repository


Zusätzlich zum Verbinden Ihrer bevorzugten oder benötigten Bibliotheken für dieses Projekt über CocoaPods können Sie Ihr eigenes Repository mit den häufigsten „Hilfsfunktionen“ hinzufügen. Wer zum Beispiel nicht müde ist, Code wie diesen zu schreiben:

[self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

oder

NSData *data = [responseString dataUsingEncoding:NSUTF8StringEncoding];
return [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

Um mich davon zu befreien, verwende ich auf GitHub ein Repository mit nützlichen Kategorien, die das Schreiben von Code erheblich reduzieren. Damit kann alles wie folgt umgeschrieben werden:

[self removeAllSubviews];
return responseString.JSON;

Anwendungslokalisierung


Fast immer müssen mindestens zwei oder drei Projektstandorte angelegt werden. Xcode hat seine eigenen Mittel dafür, und Sie müssen den Apple-Entwicklern Anerkennung für ihre Verbesserung aussprechen, aber dies ist immer noch nicht der bequemste Weg, besonders wenn sich die Anwendung bereits im AppStore befindet und Sie ein Update veröffentlichen müssen - es gibt genug Probleme wie bei der Base Internationalisierung. so mit Localizable.Strings. Diejenigen, die dies bereits festgestellt haben, wissen, dass Xcode keine Werte in lokalisierten * .strings-Dateien für das Storyboard anhängen oder aktualisieren kann, und das Dienstprogramm genstrings erwartet, dass nur neue hinzugefügte Zeilen eingegeben werden, es sei denn, wir möchten alle Einträge erneut generieren.

Beginnen wir mit Localizable.Strings. Ich hebe eine separate h-Datei für NSLocalizedString hervor, zum Beispiel StringConstants.h, in der lokalisierte Zeichenfolgen durch #define definiert sind. Mit diesem Ansatz können Sie zwei Fliegen mit einer Klappe schlagen:
  1. Sammeln Sie gebräuchliche Ausdrücke und Wörter wie „Abbrechen“, „Abmelden“, „Ungültiger Benutzername oder ungültiges Kennwort“ usw., die in jedem Projekt vorhanden sein können, damit Sie sie mit vorgefertigten Zeilen bei sich tragen können
  2. Verwenden Sie vorhandene Zeilen innerhalb des Projekts erneut, ohne das lange und unangenehme NSLocalizedString-Makro jedes Mal einzugeben
Das Anzeigen einer Standard-UIAlertView mit einer Fehlermeldung sieht also folgendermaßen aus:

[[[UIAlertView alloc] initWithTitle:kErrorString
                            message:kInvalidLoginOrPasswordString
                           delegate:nil
                  cancelButtonTitle:@"OK"
                  otherButtonTitles:nil] show];

Für die Generierung lokalisierter Dateien verwende ich die zweite h-Datei, NewStringConstants.h, in der ich die Einträge hinzufüge, die lokalisiert werden müssen, und sie dann lösche. Direkt in Localizable.Strings werden die neuen Einträge vom Skript in den Erstellungsphasen hinzugefügt:

cd ${PROJECT_DIR}/MyProject
genstrings -a -o Base.lproj NewStringConstants.h
genstrings -a -o ru.lproj NewStringConstants.h
genstrings -a -o pt-PT.lproj NewStringConstants.h
genstrings -a -o es.lproj NewStringConstants.h

Danach müssen nur noch lokale Zeichenfolgenwerte in Localizable.Strings-Dateien geschrieben werden.

Mit Storyboard Aufgabe wird auch durch ein Skript erreicht, die im Detail in besprochen wird dieseArtikel. Hier möchte ich kurz erwähnen, dass das Wesentliche des Skripts darin besteht, dass es mit dem Dienstprogramm ibtool Zeilen aus dem Storyboard extrahiert und beim Aufrufen überprüft, ob Änderungen aufgetreten sind. Wenn letztere vorhanden sind, wird der Export lokalisierter Zeichenfolgen durchgeführt, wonach die lokalisierten Dateien zusammengeführt werden. Auch hier müssen die lokalisierten Dateien noch korrigiert werden. Ich möchte auch das AppleGlot-Tool erwähnen, das im obigen Artikel erwähnt wurde. Bei der iterativen Aktualisierung der Lokalisierung wird jedoch ein anderer Ansatz verfolgt. Die Auswahl eines bestimmten Tools hängt von den Vorlieben des Entwicklers ab.

Anwendungstests


Hier konzentrieren wir uns auf das manuelle Testen der Anwendung in einer begrenzten Anzahl von Geräten. Unabhängig davon, wie viel Code von Komponententests abgedeckt wird, können manuelle Tests nicht ausgeschlossen werden. Grundsätzlich tut dies der Entwickler selbst während der Erstellung der Anwendung, aber wenn es fertig ist, müssen Sie die Anwendung an einen normalen Benutzer übertragen, der keine „unscharfen“ Augen hat und der die Anwendung als Durchschnittsbenutzer verwendet, der in allen Details der Arbeit nicht eingeweiht ist. Es ist gut, wenn Sie alle Geräte mit allen unterstützten Betriebssystemen haben. Im Grunde ist dies jedoch nicht der Fall. Selbst wenn es eine ganze Reihe von Geräten gibt, unterscheiden sie sich in der Regel nicht in der Vielfalt der Betriebssysteme, was im Grunde natürlich nicht notwendig ist, aber nicht schaden wird, es zu überprüfen. Der iOS-Simulator wird zur Rettung kommen, Dies kann durch Auswahl des gewünschten Elements aus dem Dropdown-Menü konfiguriert werden. Ohne zusätzliche Maßnahmen muss der Tester jedoch die Quellcodes übertragen, was nicht immer akzeptabel ist. Als nächstes werde ich beschreiben, wie Sie die zusammengestellte Anwendung zum Testen auf den iOS-Simulator übertragen können und welche zusätzliche Software dafür installiert werden muss.

Installieren Sie sim_launcher und ios-sim


gem install sim_launcher
brew install ios-sim

Mit sim_launcher können Sie iOS-Anwendungen im Simulator über HTTP-GET-Anforderungen ausführen. Dies ist praktisch, da alle organisatorischen Aufgaben zum Testen in einem Browser organisiert werden können, ohne dass sich der Benutzer Terminalbefehle merken muss. ios-sim ist eine Art Wrapper über Terminalbefehle, der die Arbeit mit dem Simulator vereinfacht. Es scheint, dass sim_launcher seit einiger Zeit nicht mehr aktualisiert wurde und daher nicht mit der neuesten Version von ios-sim kompatibel ist. Sie müssen die folgenden Funktionen in der Datei simulator.rb im Installationsordner von sim_launcher korrigieren:

Repariert simulator.rb
def start_simulator(sdk_version, device_family)
    sdk_version ||= SdkDetector.new(self).latest_sdk_version
    run_synchronous_command( :start, '--devicetypeid', sdk_version, '--exit' )
end
def launch_ios_app(app_path, sdk_version, device_family, app_args = nil)
    if problem = SimLauncher.check_app_path( app_path )
        bangs = '!'*80
        raise "\n#{bangs}\nENCOUNTERED A PROBLEM WITH THE SPECIFIED APP PATH:\n\n#{problem}\n#{bangs}"
    end
    sdk_version ||= SdkDetector.new(self).latest_sdk_version
    args = ["--args"] + app_args.flatten if app_args
    run_synchronous_command( :launch, app_path, '--devicetypeid', sdk_version, '--exit', *args )
end

Ausführen des Builds auf dem Simulator


sim_launcher

Dieser Befehl hebt einen Webdienst auf Port 8881 auf. Geben Sie stattdessen anDen vollständigen Pfad zur APP-Datei finden Sie im Browser unter http: // localhost: 8881 / launch_iphone_app? sdk = com.apple.CoreSimulator.SimDeviceType.iPhone-6,% 208.1 & app_path =. Wenn der iPhone 6 Simulator mit iOS 8.1 geöffnet wird, funktioniert alles einwandfrei. Wenn Fehler im Browserfenster auftreten, liegt höchstwahrscheinlich ein Fehler im Quellcode von sim_launcher vor oder die .app-Datei unterstützt keine Arbeit im Simulator. Mit dem folgenden Befehl können Sie eine Assembly für den Simulator erstellen:

xcodebuild -workspace MyProject.xcworkspace -scheme MyProject -arch i386 -sdk iphonesimulator

Feinschliff


Das Ausführen des Simulators über den Browser ist praktisch, das manuelle Eingeben der Adresse ist jedoch nicht sehr praktisch. Sie können eine kleine HTML-Seite erstellen, die dem Tester eine praktische Benutzeroberfläche bietet. Die einfachste Implementierung ist wie folgt:

HTML-Code
Testing utility


Die Liste der Simulatoren, die derzeit über ios-sim zum Starten verfügbar sind, können Sie mit dem Befehl abrufen

ios-sim showdevicetypes

Design schneiden


Ich denke, dass viele iOS-Entwickler auch zur gleichen Zeit, wenn nicht erfahrene, dann recht fortgeschrittene Benutzer von Adobe Photoshop sind, da man manchmal etwas aus Layouts modifizieren oder exportieren muss. Um die Oberflächenelemente auszuschneiden, können Sie ein Skript verbinden , das dies mit ein paar Klicks erledigt.

Bewerbung veröffentlichen


Für ein gutes Design der Anwendungsseite im AppStore müssen entsprechende Screenshots bereitgestellt werden. Zusätzlich zu der Notwendigkeit, sie für jedes unterstützte Gerät zu erstellen, müssen Sie auch alle Lokalisierungen berücksichtigen. Ohne Automatisierung trägt das Verfahren auch den Schmerz viel Routinearbeit. Auf fastlane.toolsDas Schema der Automatisierung vieler Prozesse im Zusammenhang mit dem Testen, der kontinuierlichen Integration sowie der Veröffentlichung der Anwendung ist angegeben. Alle Quellcodes sind öffentlich zugänglich, und es gibt auch eine Anweisung für sie. Hier möchte ich nur den Teil zur Arbeit mit Screenshots kommentieren. Mithilfe der Benutzeroberflächenautomatisierung wird ein Skript erstellt, das der Simulator im automatischen Modus ausführt. An den richtigen Stellen müssen Sie einen Befehl zum Erstellen von Screenshots hinzufügen. Für Telefone und Tablets werden separate Skripts unterstützt. Alle Screenshots sind nach Lokalisierung sortiert und in separaten Ordnern abgelegt. Außerdem wird eine HTML-Übersichtsseite generiert. Mit einem anderen Skript können alle Screenshots auch ohne Benutzereingriff auf iTunesConnect hochgeladen werden. Es bleibt also nur die Parametrierung.



Hierzu möchte ich diesen Artikel vervollständigen. Ich hoffe, dass es nicht nur für diejenigen nützlich ist, die gerade erst angefangen haben zu lernen oder sich für die Freuden der iOS-Entwicklung interessieren, sondern auch für erfahrene Entwickler, die vielleicht nicht gewusst haben, dass einem Computer viel langweilige Arbeit anvertraut werden kann, und sich selbst die interessanteste Entwicklung hinterlassen. In den Kommentaren schlage ich vor, gegebenenfalls andere Tools und Methoden zu diskutieren, um einige Aufgaben zu beschleunigen oder zu vereinfachen.

Jetzt auch beliebt: