Einheit 2 / 11

Mobile Codegenerierung mit künstlicher Intelligenz: Kotlin, Swift und plattformübergreifende Entwicklung

Gewinne:

  • Erhalten Sie einfach zu wartenden und testbaren Code, indem Sie eine Architektur wie MVVM einführen und Schicht für Schicht in kleinen Stücken anfordern, bevor die künstliche Intelligenz Code generiert.
  • Fähigkeit, sprachspezifische Fallen wie Nullsicherheit und Coroutine in Kotlin, optionale Schleifen und Speicherschleifen in Swift zu erkennen und den generierten Code anhand dieser zu prüfen.
  • Möglichkeit, Berechtigungen und Konfiguration für jede Plattform in plattformübergreifenden Projekten (Flutter, React Native) separat zu überprüfen

Das Herzstück der mobilen Entwicklung ist der Code, und dort zeigen sich die greifbarsten Vorteile der KI. Doch der Satz „Lass die KI Code für mich schreiben“ ist keine Strategie für sich. Gute Codegenerierung; Es erfordert die Kombination der richtigen Sprache, der richtigen Architektur, der richtigen Grenzen und der richtigen Validierung. In dieser Einheit lernen wir, wie wir KI effizient und sicher für Swift, die Sprache von iOS, Kotlin, die Sprache von Android, und plattformübergreifende Tools nutzen, die auf zwei Plattformen mit einer einzigen Codebasis laufen. Ziel ist es, KI nicht als „Code-Automaten“, sondern als Beschleuniger zu positionieren, dessen Architektur Sie bestimmen.

Zuerst die Architektur, dann der Code

Der häufigste Fehler besteht darin, die KI ohne Architekturplan direkt nach Code zu fragen. Das ist, als würde man eine Mauer bauen, ohne ein Fundament zu legen. Die gebräuchlichste Architektur auf Mobilgeräten ist MVVM (Model-View-ViewModel – ein Entwurfsmuster, das die Daten, die Anzeige und die Logik der Anzeige trennt). Dies bedeutet, dass die Ansicht nur eine Ansicht ist, die Logik und der Status im ViewModel leben und die Daten sich in der Modellebene befinden. Wenn man der KI diese Trennung nicht von Anfang an aufzwingt, entsteht eine nicht testbare und schwer zu wartende Struktur, die die gesamte Logik in den Bildschirmcode stopft.

Ein gesunder Codegenerierungsablauf Schritt für Schritt:

  1. Geben Sie den Kontext an. Plattform, Sprache, Version, Architektur, verwendete Bibliotheken.
  2. Fragen Sie nach Schichten. Zuerst das Datenmodell, dann die Netzwerk-/Datenschicht, dann das ViewModel und zuletzt der Bildschirm.
  3. Fragen Sie nach kleinen Stücken. Ein Bildschirm oder eine Funktion; Es handelt sich nicht um eine riesige 500-Zeilen-Datei.
  4. Überprüfen Sie jedes Stück. Erstellen, testen, integrieren; Fahren Sie dann mit dem nächsten Titel fort.
  5. Fordern Sie einen Refactor an (verbessern Sie den Code). Schritt „Machen Sie dies lesbarer und testbarer“ nach dem Arbeitscode.
Hinweis: Teilen Sie der KI mit, „den Code gemäß MVVM aufzuteilen: Welcher Teil sollte View sein, welcher ViewModel sein sollte, welcher Model sein sollte, geben Sie sie separat an.“ Dieser einzelne Satz verbessert die Architekturqualität des generierten Codes erheblich.

Kotlin und Swift: sprachspezifische Überlegungen

Kotlin (Android) und Swift (iOS) sind moderne, sichere Sprachen, weisen jedoch unterschiedliche Fallstricke auf. In Kotlin wird die Nullsicherheit (Überprüfung, ob eine Variable über das Typsystem „null“ sein kann) manchmal von der KI lose typisiert; unnötig !! Der Operator (das Zeichen, das einen Absturz erzwingt, wenn er null ist) kann die Anwendung zum Absturz bringen. In Swift sind optionale Verwaltungs- und Aufbewahrungszyklen von entscheidender Bedeutung; Die KI vergisst möglicherweise, [weak self] in Abschlüssen hinzuzufügen, was zu einem Speicherverlust führt.

Wenn Sie also eine Sprache auswählen, verfeinern Sie die Eingabeaufforderung entsprechend: etwa „Nullsicherheit in Kotlin beibehalten, nicht verwenden!!“ oder „Verhindern Sie starke Referenzschleifen in Abschlüssen in Swift“.

Achtung: Von KI erstellter asynchroner Code erfordert besondere Aufmerksamkeit. Die Auswahl des falschen Bereichs in Kotlin-Coroutinen oder das Blockieren des Hauptthreads in async/await in Swift führt zum Einfrieren der Anwendung. KI macht diese Fehler häufig; Vertrauen Sie ihm nicht, ohne es zu testen.

Plattformübergreifende Entwicklung: Flutter und React Native

Für diejenigen, die mit einer einzigen Codebasis sowohl auf iOS als auch auf Android umsteigen möchten, stechen Flutter (das auf der Dart-Sprache basierende Toolkit von Google) und React Native (die auf JavaScript basierende Lösung von Meta) hervor. KI ist auch in diesen Umgebungen leistungsstark, umgeht jedoch manchmal Plattformunterschiede (Berechtigungen, Speicherregeln, gerätespezifisches Verhalten). In Flutter wird beispielsweise die Kameraberechtigung in verschiedenen Dateien auf iOS und Android definiert; Die KI kann nur einen schreiben. Im plattformübergreifenden Code ist es wichtig zu sagen: „Erteilen Sie die erforderlichen Berechtigungen und Konfigurationen für beide Plattformen separat.“

Zusammenfassung der Wahlen:

Ansatz

wann

Aufmerksamkeit mit KI

Native (Kotlin/Swift)

Höchste Leistung, gerätetiefe Integration

Jede Plattform verfügt über einen separaten Code. zweimal überprüfen

Flattern

Ein Team, schnelle, konsistente Benutzeroberfläche

Überprüfen Sie manuell die plattformspezifischen Berechtigungen/Einstellungen

Native reagieren

Web/JS-Team verfügbar

Testen Sie die Brückenabschnitte (native Bridge) sorgfältig

drei Mini-Koffer

Fall 1 – Coroutine-Falle. Ein Android-Team hat eine Funktion erhalten, die die Produktliste von der KI abruft. Der Code stellte die Netzwerkanfrage im Hauptthread; Auf dem Testgerät trat das Problem nicht auf, aber im schwachen Netzwerk fror die Anwendung für 4 Sekunden ein und gab eine ANR-Warnung (Application Not Responding) aus. Es wurde behoben, als der KI gesagt wurde, sie solle „die Netzwerkarbeit im IO-Dispatcher erledigen“. Lektion: Parallelität wird immer kontrolliert.

Fall 2 – Speicherverlust. Ein iOS-Entwickler stellte fest, dass nach 20-maligem Öffnen und Schließen eines KI-generierten Bildschirms der Speicher der App von 40 MB auf 180 MB anstieg. Der Grund dafür war, dass der ViewController aufgrund eines fehlenden [schwachen Selbsts] im Abschluss nicht aus dem Speicher gelöscht werden konnte. Das Speicherdiagramm von Xcode enthüllte die Falle. Lektion: Speicherprofil ist in der nativen Entwicklung obligatorisch.

Fall 3 – Plattformunterschied. Ein Flutter-Team erhielt den Zugangscode für die Galerie von AI, es funktionierte auf Android, stürzte jedoch auf iOS ab. Der Grund dafür war, dass die Beschreibung der Fotobibliotheksberechtigung (NSPhotoLibraryUsageDescription) nicht zur Datei Info.plist hinzugefügt wurde; AI hat nur die Android-Seite geschrieben. Es handelt sich um eine 15-minütige Lösung, aber es wäre eine Ablehnung im Geschäft gewesen, wenn es nicht erkannt worden wäre.

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

Schwache Eingabeaufforderung: „Schreiben Sie Kotlin-Code, der Produkte von der API abruft.“

Leistungsstarke Eingabeaufforderung: „Generieren Sie Code für Android/Kotlin, der die Produktliste von der REST-API abruft. – Netzwerkschicht mit Retrofit, Suspend-Funktion – Netzwerkjob in Dispatchers.IO; Blockieren des Hauptthreads – MVVM: Repository -> ViewModel -> UI-Status mit StateFlow – Fehlerzustände: kein Netzwerk, separater versiegelter Klassenstatus für 4xx, 5xx – Nullsicherheit schützen, !! Verwenden von !! Ebenen als separate Dateien exportieren, jeweils 1 Satz erklären.“

Eine starke Eingabeaufforderung verhindert, dass der generierte Code in die Fallen der vorherigen Fälle gerät.

Kopierbare Vorlagen

Vorlage für mehrschichtige Produktion: „Entwickeln Sie [Funktion] für [Plattform/Sprache]. Produzieren Sie in der folgenden Reihenfolge: 1) Datenmodell (Datenklasse/-struktur) 2) Netzwerk- oder Datenquellenschicht 3) Repository 4) Ansichtsmodell (Zustandsverwaltung) 5) Bildschirm (UI) Exportieren Sie jede Schicht separat und fügen Sie dazwischen einen Integrationshinweis hinzu.“

Sprachspezifische Sicherheitsvorlage (Kotlin): „Überprüfen Sie diesen Kotlin-Code: – Klare Verwendung von !! und Plattformtyp – Überprüfen Sie den Coroutine-Bereich und die Dispatcher-Auswahl – Blockieren Aufrufe den Hauptthread?[Code]“

Sprachspezifische Sicherheitsvorlage (Swift): „Überprüfen Sie diesen Swift-Code: – Risiko eines Retain-Zyklus in Schließungen (schwaches/unbesessenes Selbst) – Verwendung von optionalem Force-Unwrap (!) – Schwerwiegende Arbeit, die aus dem Hauptthread [Code] verschoben werden muss.“

Plattformübergreifende Steuervorlage: „Listen Sie alle Berechtigungen, Konfigurationen und plattformspezifischen Code auf, die für diese [Flutter/React Native]-Funktion sowohl auf iOS als auch auf Android erforderlich sind. Stellen Sie separate Info.plist- und AndroidManifest.xml-Einträge bereit.“

Häufige Fehler

  • Nach Code fragen, ohne Architektur aufzudrängen. Das Ergebnis: eine nicht testbare Struktur, die alles auf den Bildschirm stopft.
  • Vertrauen, ohne gleichzeitigen Code zu testen. Haupt-Thread-Blockaden und falscher Umfang sind die häufigsten Absturzursachen.
  • Speicherverwaltung außer Acht gelassen. Insbesondere Lecks bei iOS-Abschlüssen; Ohne Profilaufnahme fällt es nicht auf.
  • Plattformunterschiede umgehen. Bei plattformübergreifenden Tools werden Berechtigungen und Konfiguration separat auf den beiden Plattformen geschrieben.
  • Die Bibliotheksversion wird nicht überprüft. KI schlägt möglicherweise eine veraltete Retrofit/Alamofire-API vor; Erkundigen Sie sich anhand des offiziellen Dokuments.
  • Erstellen einer einzigen riesigen Datei. Unmöglich zu warten und zu überprüfen; Fragen Sie nach Schichten.

Zusammenfassend

Die Codegenerierung mit KI ist leistungsstark, wenn Sie die Architektur festlegen. Legen Sie zunächst eine Struktur wie MVVM fest, fordern Sie dann Schicht für Schicht und in kleinen Teilen an, kompilieren und testen Sie jedes Stück. Nullsicherheit und Coroutine in Kotlin, optionale Schleifen und Speicherschleifen in Swift erfordern besondere Aufmerksamkeit. In plattformübergreifenden Tools werden Berechtigungen und Konfiguration für jede Plattform separat geschrieben. Die starke Eingabeaufforderung teilt die Sprache, Version, Architektur und sprachspezifischen Sicherheitsregeln im Voraus mit. Dies verhindert die häufigsten Absturz- und Leckfehler in der Produktion.

Anwendungsaufgabe

Fordern Sie für einen Listenbildschirm (z. B. „Kontaktliste“) Code von der KI an, indem Sie die „Vorlage für additive Fertigung“ auf der Plattform Ihrer Wahl (Kotlin oder Swift) verwenden. Fügen Sie den generierten Code zu einem Projekt hinzu, kompilieren Sie ihn und führen Sie die folgenden beiden Prüfungen durch: (1) Läuft der Netzwerk-/Langprozess im Hauptthread, (2) Ist die Null-/optionale Sicherheit korrekt? Lassen Sie die KI das gefundene Problem mit einer sprachspezifischen Sicherheitsvorlage beheben.

Checkliste

  • [ ] Ich habe die Architektur (MVVM usw.) angegeben, bevor ich Code angefordert habe
  • [ ] Ich wollte es Schicht für Schicht, in kleinen Stücken
  • [ ] Ich habe getestet, dass gleichzeitiger Code den Hauptthread nicht blockiert
  • [ ] Ich habe null/optionale Sicherheit und Speicherverwaltung überprüft
  • [ ] Ich habe die Berechtigungen/Einstellungen zweier Plattformen separat in einem plattformübergreifenden Projekt überprüft
  • [ ] Ich habe Bibliotheksversionen und API-Signaturen anhand der offiziellen Dokumentation überprüft