Native Android / iOS Entwicklung vs Marmalade SDK

Unsere Firma ist am Rande der Kommissionierung zwischen native Android / iPhone-Entwicklung und einige Cross-Plattform-Lösung, speziell Marmalade SDK (ehemalige Airplay SDK).

Wir sind ein Computer Vision-Unternehmen, was bedeutet, wir brauchen niedrigen Zugang zu den Kamera-Geräten. Auch unsere Anwendungen sind rechnerisch teuer, was bedeutet, dass wir dazu neigen, jedes kleine bisschen Rechenleistung zu quetschen.

Unser Team verfügt über genügend Erfahrung in Objective-C und Java (oder C), um plattformspezifische Lösungen anzubieten. Doch unser Hauptaugenmerk war immer auf C ++, so dass wir gerne das Fragmentieren des Teams verhindern und eher mit einer plattformübergreifenden Lösung arbeiten.

Unsere größte Angst ist, dass die Wahl Marmalade entweder beenden Verarbeitungsgeschwindigkeit (Hauptanliegen) oder stark erhöhen Entwicklungszeit durch Komplikation Low-Level-Zugang zu Kamera-Frame-Puffer.

Also meine Frage ist, neben dem offensichtlichen, was sind die Vorteile, aber speziell Einschränkungen von Marmalade SDK für prozessorintensive Video-Verarbeitung Anwendungen.

  • 2D Cross-Plattform-Spiel-Engine für Android und iOS?
  • 6 Solutions collect form web for “Native Android / iOS Entwicklung vs Marmalade SDK”

    Ich habe Marmalade / Airplay seit fast zwei Jahren in meiner Indie-Spielfirma benutzt. Für mich ist es ein Gewinn, denn ich bin nur ein Programmierer, und ich kann praktisch alle meine Arbeit in Windows mit MS Dev Studio (was ist mein Lieblings-Dev-Umgebung bei weitem) und weil es mich abschrecken, mit viel zu beschäftigen Die plattformspezifischen Details, vor allem mit den verschiedenen Entwicklungswerkzeugen, die viel Zeit verbringen konnten, die ich lieber auf Spielinhalte verbringen würde.

    Geschwindigkeit wird kein Problem mit Marmelade sein. Ihr C ++ – Code läuft nativ. Auch der Zugang zu Kamera und andere Funktionalität sollte nicht viel von einem Problem sein; Es ist entweder bereits vorhanden oder kann mit dem Erweiterungen SDK hinzugefügt werden, was ziemlich einfach zu bedienen ist.

    Marmelade ist ein ausgereiftes Produkt und das Unternehmen ist sehr hilfreich bei der Lösung von Problemen schnell, auch für Indie-Entwickler, die das Produkt kostenlos nutzen. Neben der Cross-Plattform-Funktion gibt es einige nette Werkzeuge, wie zB ein Speicher-Leck-Tracker, ein Logging-System, Grafikanalyse-Tools und andere.

    Es gibt einige Nachteile, die ich mit Marmelade erlebt habe.

    1. Obwohl in der Theorie jede API oder Drittanbieter-SDK über das Erweiterungs-System zugänglich ist, in der Praxis ist das, was Sie brauchen, noch nicht vorhanden. Als Beispiel, eine Reihe von Entwicklern sind derzeit kämpfen, um die Analytik-Paket Flurry integriert, und es war eine Herausforderung für einige. Die Situation ist ähnlich mit vielen anderen Drittanbieter-SDKs; Sie können nur ein paar Zeilen zu integrieren, wenn Sie tun Ziel-C-Entwicklung, aber kann schwieriger über Marmelade.

    2. Einige Dinge sind weniger natürlich wegen der plattformübergreifenden Schicht, durch die Sie arbeiten. Einige Beispiele für mich waren:

      • Ich hatte Schwierigkeiten, meine Splash-Screens (Anwendungs-Start-up-Bildschirme), um ordnungsgemäß in allen Bildschirmgrößen auf iOS und Android anzuzeigen. Und es ist schwer zu bekommen, sie zu zeigen, ohne einige flackernde, kurze Black-out-Perioden, oder die Größenänderung von Bildern, wie es zwischen der Geräte-Ladung der Marmalade App selbst und dann Marmalade Schritt der Laden Ihrer App-Code überträgt.

      • Marmelade setzt ein sehr einfaches Gedächtnismodell ein, wo man einen festen Haufen vorne bekommt und alle Speicherzuweisung durch Marmelade erfolgt. Aus der Sicht des Systems hat die App nur einen großen Block (oder ein paar große Blöcke) des Gedächtnisses. Dies hat einige Vorteile, aber ich hatte Probleme, dieses Modell mit dem iOS-Modell zu quadrieren, zum Beispiel, Gedächtniswarnungen zu empfangen und voraussichtlich irgendwelche unnötigen Ressourcen abgeben. Es scheint ein Fall zu sein, in dem "one size fits all" endet, um tatsächlich einige wichtige Funktionalität zu verlieren.

      • Sie können die Erweiterung Manager und einige andere Methoden, um native UI-Elemente zu zeigen, aber die Integration einer erheblichen Menge an native-Look-and-Feel-UI kann eine Herausforderung sein. Also, wenn Ihre App ist Spiel-wie und Benutzer können mit Nicht-Standard-Tasten und so weiter umgehen, das ist in Ordnung, aber wenn Sie erwarten, dass erhebliche native UI, ist es schwieriger. [Bearbeiten: Neue Versionen von Marmalade haben ein natives UI-Framework hinzugefügt, mit dem Sie Standard-UI-Elemente generisch angeben können und dann dann die entsprechenden Widgets für das Gerät implementieren. Ich habe das nicht benutzt, aber es sieht ziemlich umfangreich aus.]

    3. Wenn Sie Probleme haben, ist es oft nicht klar, ob es ein generisches OS-Problem oder ein Marmelade-Problem ist, und es kann einsam sein, um Hilfe zu finden. Zum Beispiel habe ich vor kurzem in-App-Kauf zu meinem Spiel, auf iOS und Android hinzugefügt. IAP ist herausfordernd, und auch ohne eine zusätzliche SDK-Schicht gibt es viele spezielle Fälle zu behandeln. In meinem Fall hatte ich eine Situation, in der meine App von Apple für eine kleine Frage abgelehnt worden war, und während es im abgelehnten Zustand war, war mein In-App-Kauf auch in einem "abgelehnten" Zustand (obwohl es nichts gebrochen war Das IAP selbst, das ist nur ein Anfall von Apples Prozess). Als ich versuchte zu regressionstest die in-app-Kauf-Funktionalität (während ich die Einreichung der Fix für diese Nicht-in-App-Kauf-bezogene Frage), war das Spiel tatsächlich abstürzen, anstatt ein geeignetes Fehler Ergebnis. Ich konnte feststellen, dass der Crash nicht in meinem Spielcode war, also war es entweder das OS (unwahrscheinlich) oder die Marmalade Mittelschicht für die Bearbeitung der In-App Kauf Rückrufe (was ist, was es sich herausstellte [Update 11 / 28/2012: Marmelade hat dieses Problem in einem aktuellen SDK-Update gemeldet]).

      Also in einer solchen Situation kannst du versuchen, auf Stack Overflow zu gehen, um Hilfe zu bekommen, aber wirklich niemand ist da, um dir zu helfen, also bist du auf das Marmalade-Team angewiesen, um dich mit einer Antwort zurückzuholen. Wie ich sage, machen sie eine ziemlich gute Arbeit von diesem, aber es gibt keine Möglichkeit, es kann mit fast sofortigen Antworten auf Stack Overflow aus der weltweiten Gemeinschaft von regulären iOS-Programmierer konkurrieren. So würde ich sagen, diese letzte ist meine größte Sorge mit der Verwendung eines Systems wie Marmalade. Es spart Ihnen Zeit vorne, um nicht zu kommen, um auf die Details der verschiedenen Plattform-SDKs zu beschleunigen, aber wenn Sie Probleme haben, sind Sie "auf der Barmherzigkeit" des Marmalade-Teams (oder freundliche Marmalade-Community-Mitglieder), um zurück zu kommen Sie mit einer Antwort. (Denken Sie daran, dass ich als Freebie-Indie-Entwickler schreibe, der nur Standardpriorität für die Ausgabeauflösung erhält. Sie können zahlen, um eine schnelle Auflösung zu erhalten.) Für mich persönlich ist es schwer, immer wieder zu meinem Produzenten zurückzukehren und "Ich warte auf eine Antwort von den Marmeladen-Jungs auf diesem."

      (Ein weiteres Beispiel für Ausgabe 3 ist, dass bis vor kurzem gab es ein Problem mit Sound-Effekte auf bestimmte Android-Geräte verzögert.Es war eine Marmelade Problem, und sie haben schließlich gelöst, aber es dauerte eine Weile, und es gibt im Grunde nichts, was Sie tun können in der Zwischenzeit.)

    Denken Sie daran, dass (wie andere Responder haben darauf hingewiesen) auch ohne Marmelade können Sie immer noch den Großteil Ihrer Code-Basis in C ++ auf entweder iOS oder Android.

    Trotz der langen Liste der potenziellen Probleme oben, bin ich ein Fan von Marmalade, und ich schätze das ganze Unternehmen hat für mich kostenlos zur Verfügung gestellt. Das Tool leuchtet wirklich, wenn es um andere Plattformen geht, auf die du sonst niemals stören würde, wie zB für mich Bada oder Playbook. Sie können wirklich auf eine breite Palette von Geräten aus dem Komfort von Ihrem PC und Developer Studio (oder von einem Mac mit xcode, wenn Sie Ihr Leben ein wenig härter machen wollen). Das Simulator-Tool, das sie haben, ist großartig, und es gab nur eine kleine Anzahl von Fällen, in denen ich auf dem Gerät selbst debuggen musste. Im Allgemeinen, wenn es auf dem Simulator funktioniert es nur funktioniert. IdeaWorks hat eine große Herausforderung angenommen und sie machen einen großartigen Job, der alle diese Features (dh grundsätzlich alle Features, die je auf einem mobilen Gerät angeboten werden) auf all diesen Plattformen (dh alle wichtigen Geräte in Existenz, mit Ausnahme von Windows Phone) jonglieren 7, weil es derzeit keinen nativen Code zulässt). Es kommt einfach mit einigen Einschränkungen.

    Ich bin voreingenommen, da die CTO bei Marmalade … aber wenn Ihre wichtigsten Anforderungen sind (1) Kamera-Zugang und (2) die Fähigkeit, "squeeze out jedes wenig Verarbeitungsleistung verfügbar" dann Marmalade ist eine gute Wahl.

    Marmalade kompiliert Ihre C / C ++ zu nativen ARM (oder x86) Anweisungen … keine Transcoding, keine virtuellen Maschinen. Es ist sehr einfach, über den vorhandenen C / C ++ – Code zu kommen, fast alle C / C ++ – Standardbibliotheken werden unterstützt usw. Und du kannst ASM-Code in deinem Projekt verwenden. Auch können Sie alle Ihre Entwicklung entweder auf Windows oder Mac, unabhängig davon, welche Plattformen Sie bereitstellen (ja, können Sie sogar kompilieren / testen / Bereitstellung auf iOS rein auf Windws).

    Soweit ich Ihnen sagen kann von ANDROID Entwicklung: Die Kamera-API von Android selbst scheint ein wenig Buggy zu sein (in Beispiel: vor 2.1 gibt es keine Lösung, um Kamera im Portrait-Modus ohne Scrambling der Bilder zu bekommen). Eine andere Abstraktionsschicht darüber könnte besser sein (in Bezug auf Zugänglichkeit, Features, was auch immer) oder noch schlimmer. Was es tut für shure: Es stiehlt Ressourcen, die für Ihre eigene App benötigt werden.

    Marmelade bietet ein ausgezeichnetes Native Extension Framework

    http://www.madewithmarmalade.com/marmalade/features/extensions-development-kit

    Was letztlich bedeutet, dass man direkt auf eine native Implementierung eines bestimmten Merkmals springen kann. Sie halten immer noch die Kernvorteile der Cross-Plattform-Entwicklung für Ihre Haupt-App.

    Auch auf Android, weil Marmelade nutzt die Android NDK Ihr C ++ – Code für die Verarbeitung von Daten wird schneller laufen als die entsprechenden Android-Java-Code.

    Im machen Spiele mit Marmelade und die Erweiterungen und native Code Geschwindigkeit machen mich sehr zuversichtlich, in der Lage, mindestens so gut wie eine 'native' app liefern.

    Ich würde MoSync Android / iOS verwenden, aber ich würde das sagen, da ich bei MoSync arbeite.

    Aber in aller Fairness bevorzuge ich die MoSync Camera API.

    Wenn Sie wirklich wollen, um alle Prozesse auszuschalten, sollten Sie ASM verwenden.

    / Tony

    Marmalade ist nicht schlecht, ich habe es im Jahr 2013. Einige Bugs, einige Ärgernisse (feste Speicher-Pools), aber insgesamt keine schlechte Erfahrung.

    Die einzige wirkliche Enttäuschung ist die mangelnde Unterstützung für Linux. Ich kann nicht sehen, wie die Marmelade Jungs unklar Plattformen wie Blackberry, aber nicht Linux unterstützen können. das macht keinen Sinn. Vielleicht wird sich das ändern, da Steam OS (eine Linux-basierte, Gaming-Centric-Plattform) reift, obwohl zugegebenermaßen Steam OS keine ganze Menge an den Tisch bringt, außerhalb dessen, was andere Betriebssysteme bringen, für jetzt.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.