Vor ein paar Tagen Dropbox-Entwickler per Post auf dem offiziellen Blog der Anwendung Sie kündigten den Weg an, den sie in Bezug auf die mobile Entwicklung einschlagen wollen Ihre plattformübergreifende AnwendungHier entschied sich das Team für die Erstellung einer einheitlichen Codebasisfür verschiedene Zwecke oder Plattformen.
Der Ansatz kann für kleine Teams mit wenigen Fähigkeiten nützlich sein, aber die Produktion sollte so schnell wie möglich sein. Das Dropbox-Team verwendet diese Strategie seit 2013. UMATipp für Android- und iOS-Plattformen über eine exklusive C ++ – Codebasis. Der Beitrag erklärt, warum das Unternehmen die lokale Entwicklung in Swift und Kotlin bevorzugt.
“Indem wir unsere Codebasis auf nicht standardmäßige Weise aufbauen, erben wir Kosten, über die wir uns keine Sorgen machen müssen, wenn wir uns an die Standardwaffen gewöhnen, die von Dritten in großem Umfang verwendet werden.” Letztendlich war es teurer als zweimal Code zu schreiben “, sagte er.
Plötzlich Die Kommentare der Dropbox-Ingenieure zeigen die Wahl des plattformübergreifenden Entwicklungsansatzes Es führt zusätzliche Entwicklungskosten ein, die mit der Implementierung benutzerdefinierter Bibliotheken und Strukturen verbunden sind.
Ganz zu schweigen von denen, die sich auf die Implementierung personalisierter Arbeitstools oder die Notwendigkeit beziehen, Dritte zu schulen oder einzustellen, die sich an einen hochgradig angepassten Software-Stack anpassen können.
Eigentlich Highlights, bei denen die Auswahl von C ++ für die plattformübergreifende Android- und iOS-Entwicklung zu Schwierigkeiten bei Entwicklern führen kann sie hätten es nicht von Haus aus gehabt.
Das Einrichten eines Frameworks zum Verwalten von Hintergrundaufgaben kann beispielsweise in der plattformübergreifenden C ++ – Entwicklungspipeline von entscheidender Bedeutung sein.
Andererseits Ein anderer Ingenieur erklärt den Dropbox-Ingenieur, es ist kein natives Problem.
Darüber hinaus behauptet er, dass das Dropbox-Team eine JSON-Bibliothek für C ++ 11 und eine andere konfigurieren musste, um NULL-Zeiger zu verwalten.
Der Ingenieur des Unternehmens ging noch einen Schritt weiter und betonte, dass er sich der Theorie zuwendet, dass eine einzige Codebasis für mehrere Plattformen bereitgestellt werden kann.
Tatsächlich sind die Besonderheiten jeder Plattform Faktoren, die nicht vermieden werden können.
“Die Art und Weise, wie eine App im Hintergrund funktioniert, ist plattformspezifisch und muss von Anfang an berücksichtigt werden”, sagt er.
Zusätzlich zu den Überlegungen, die sich auf den Code auswirken, gibt es auch Überlegungen zu den Arbeitswerkzeugen. Vor diesem Hintergrund entwickelt der Ingenieur des Unternehmens auf zwei Achsen: Debuggen und Konfigurieren kundenspezifischer Tools.
“Das native Debugging ist C ++ über die Standard-IDE der Zielplattform im Allgemeinen überlegen”, schreibt er für die Entwicklung anderer, die den plattformübergreifenden Ansatz in C ++ unterstützen können. “”
In Bezug auf Ausbildung und Rekrutierung behauptet Eyal Guthmann schließlich, dass das plattformübergreifende Abenteuer auf einem Kern von Ingenieuren mit einem soliden Verständnis von C ++ basiert.
Mit seiner Abreise zu anderen Teams oder Unternehmen.Das Unternehmen hatte zunehmend Schwierigkeiten, die technische Lücke zu schließen, um die C ++ – Codebasis aufrechtzuerhalten. Intern und extern hatte das Unternehmen mit zusätzlichen Schulungen und Rekrutierungen in diesem Bereich zu kämpfen, da anscheinend nur sehr wenige Entwickler mobiler Geräte an C ++ interessiert sind.
Die Weitergabe von Dropbox-Ausrüstung an indigene Völker über Kotlin und Swift für Android und iOS hat Vorteile.
Tatsächlich dient die C ++ – Sprache zusammen mit dem C, das sie nicht mehr zitiert, als gemeinsamer Nenner, um diese Probleme zu lösen.
Es ist nicht schwer vorstellbar, dass die ursprüngliche Gruppe von Ingenieuren sie integriert hat, um bestimmte kritische Aspekte des Backends zu verwalten. Sie können nur Fragen zur Qualität der C ++ – Schnittstelle mit Zielplattformen stellen.
Quelle: https://blogs.dropbox.com/
