In einem kürzlich veröffentlichten Beitrag von John Gruber wird Folgendes festgestellt:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.
Wurde wie folgt überarbeitet:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
Und macht folgende Beobachtung:
Ich lese diese neue Sprache so, dass Cross-Compiler wie der Flash-to-iPhone-Compiler in der kommenden Flash Professional CS5-Version von Adobe verboten sind. Dies verbietet auch Apps, die mit MonoTouch kompiliert wurden - einem Tool, das C # - und .NET-Apps auf dem iPhone kompiliert.
Verbietet dies tatsächlich die Verwendung von Monotouch für das IPhone?
quelle
Antworten:
Update -
Ja, aus der Lizenzvereinbarung geht hervor, dass die ursprüngliche Anwendung, wenn sie in C # geschrieben ist, gegen die Lizenz verstoßen würde:
Sie hämmern es sogar noch ein bisschen weiter ein:
MonoTouch und der Flash CS5 -> iPhone Konverter sind ziemlich cool.
quelle
Aktualisieren:
Apple hat (fast) alle technischen Anforderungen für Sprachen und Bibliotheken für iOS fallen gelassen, sodass MonoTouch ohne Zweifel eine praktikable Lösung ist. Siehe Apples Ankündigung .
Die meisten Leute hier wollen einfach Apples Dokument beim Wort nehmen und "Ja, es ist verboten" sagen. Nun, hier ist mein Standpunkt: Zu diesem Zeitpunkt hat niemand wirklich eine Ahnung, ob MonoTouch verboten wird oder nicht, und ich werde erklären, warum:
Die Apple-Vereinbarung Version 3 (nicht die neueste, die vorherige) besagt eindeutig, dass es illegal ist, andere Frameworks zur Entwicklung anderer als der von Apple bereitgestellten Anwendungen zu verwenden:
Auch wenn dies der Fall ist (und dies seit 2.x tatsächlich der Fall war), hat Apple kein Problem damit, Anwendungen zu akzeptieren, die genau das tun. Beispielsweise verwenden ALLE EA-Spiele Lua-Skripte, und viele, viele Leute verwenden externe Bibliotheken, die dies tun sind nicht nativ für das iPhone. Selbst wenn das iPhone über diese nativen APIs verfügt, hatte Apple nie Probleme, Anwendungen mit unterschiedlichen Versionen wie SQLite zu akzeptieren.
Mein Punkt ist, dass es einfach zu früh ist, "JA, sie werden verboten" zu sagen. Das einzig Klare an diesem Punkt ist, dass Apple dies tatsächlich verwenden könnte, um Apps zu verbieten. So wie sie heute Apps akzeptieren, die gegen einige ihrer Regeln verstoßen, werden sie dies wahrscheinlich auch weiterhin tun.
Es gibt auch die Tatsache, dass Hunderte (oder wahrscheinlich einige Tausend?) Apps im Store derzeit Mono ausführen und Apple Updates für diese Apps akzeptieren muss. Wichtige Apps mit Millionen von Verkäufen wurden mit Mono (und Lua) erstellt, und ich bezweifle, dass sie jeden einzelnen Benutzer erstatten würden.
Schließlich werden Unternehmensanwendungen ohne Apples Genehmigung auf iPhones bereitgestellt, und das ist ein großer Markt, auf dem MonoTouch tätig ist (ich selbst entwickle Unternehmensanwendungen). Derzeit kann Apple MonoTouch für diese Anwendungen nicht verbieten, und dies wird wahrscheinlich ausreichen, um MonoTouch für lange Zeit am Leben zu erhalten.
quelle
Aktualisieren:
Neue Änderungen an den Abschnitten 3.3.1, 3.3.2 und 3.3.9 haben MonoTouch (und alle anderen Cross-Compiler / Sprachen / usw.) auf dem iPhone vollkommen akzeptabel gemacht. Siehe Apples Ankündigung
Miguel scheint das nicht zu glauben. Siehe den Tweet und Miguels Antwort . Lassen Sie uns hier nicht überreagieren und sagen, dass Monotouch tot ist, oder die Entwicklung mit Monotouch einstellen, bis alle Beteiligten einige Klarstellungen vorgenommen haben.
Das heißt, ich würde definitiv anfangen, Apple für solch drakonische Entwicklungsrichtlinien zu begeistern. Solche Dinge und der nebulöse Prozess, der die Genehmigungsrichtlinie für iPhone / iPad / Touch-Apps darstellt, sollten den Entwicklern Angst einjagen. Wie geht es weiter? Die Lizenz besagt, dass die einzige Anzeigenplattform, die Sie verwenden dürfen, iAd ist. Erlauben Sie nicht die Verbreitung von kostenlosen Apps ohne iAd? Den Anteil von Apple am Umsatz der App-Verkäufe langsam steigern? Als Entwickler in einem gesperrten Ökosystem sind wir eine Art Frosch in einem Topf mit heißem Wasser, und Apple dreht langsam die Hitze auf. Jetzt ist es an der Zeit, andere mobile Plattformen zu erkunden, denn wenn sie besser werden, ist die Hauptsache, die die Menschen an der Apple-Plattform festhält, der Mangel an Anwendungen auf anderen Plattformen.
quelle
Ich habe monatelang abends an Ideen für eine Killer-iPhone-App in Objective C gearbeitet. Mein Tagesjob ist C #. Ich habe MonoTouch C # heruntergeladen, als es eine praktikable Alternative wurde, und habe gerade 3 Monate damit verbracht, meinen Code in iPhone-spezifisches MonoTouch C # umzuwandeln. Was mich durch den Wechsel von C # / Objective C verrückt gemacht hat.
Was mache ich jetzt alles wegwerfen und von vorne anfangen oder aufgeben!?!
Die Mono-Jungs tun mir wirklich leid. Das ist einfach falsch. Es ist eine Sache, Adobe zu stoppen, das sein Produkt nicht auf den Markt gebracht hat und keine Kunden hat, und MonoTouch zu stoppen, das Produkt im AppStore genehmigt hat.
Warum sollte jemand ein Geschäft aufbauen und in Apple investieren wollen, wenn er alles sofort wegnimmt, ohne verantwortlich oder fragwürdig zu sein?
Es ist klar, dass Entwickler und Kunden von Apple, die sich um sie und ihre Produkte kümmern, eine Einbahnstraße sind.
quelle
Ich hoffe, Apple wird für diese lächerliche Politik verärgert. Arroganz ist nicht attraktiv und im Allgemeinen schlecht für das Geschäft. Dies ist einer der Gründe, warum ich noch nicht mit der iPhone-Entwicklung begonnen habe.
Die meisten Hardware- und Betriebssystemanbieter freuen sich über zusätzliche Tools und Zielgruppen, um auf ihre Plattform zu schreiben. Apple vertritt die Auffassung, dass seine (Braindead-) Tools das einzige Spiel in der Stadt sind.
Die "Big Brother" -Anzeige von 1984 wird immer relevanter ...
BEARBEITEN
Die Art und Weise, wie es geschrieben ist, scheint auch zu implizieren, dass der Code nicht akzeptabel ist, wenn ich ein .net an den objektiven C / Apple-Übersetzer schreibe, da der ursprüngliche Code nicht objektiv war. C. Das ist lächerlich (und nicht durchsetzbar).
quelle
Unity basiert auch auf Mono und da dies ein beträchtliches kommerzielles Produkt ist, stelle ich mir vor, dass dies ein Thema ist, von dem wir noch nicht gehört haben.
Das Verbot aller Apps, die nicht in Obj-C / C ++ geschrieben sind, würde theoretisch auch alle Unity-Spiele verbieten, von denen es bereits eine große Anzahl im App Store gibt.
Diese Frage wurde auch auf der Unity Answers-Website gestellt. Die offizielle Antwort lautet:
Seien Sie interessant zu sehen, was Apple ihnen sagt.
Die Sache ist, sicher zu sagen , dass eine App werden muss , geschrieben in einer bestimmten Sprache ist ein wenig irreführend, da , sobald die App zusammengestellt unten ist, ist es immer ein native binäre unabhängig davon , wie es gebaut worden. Ich vermute, dass sie nur nach einer Art Signatur in der Binärdatei suchen können, um festzustellen, mit welchem Tool sie erstellt wurde. Ein fehlerhafter Ansatz.
EDIT: Es gibt einen interessanten Überblick über die Situation in diesem Blog: Monotouch jetzt tot im Wasser, was bedeutet Äpfel neue iPhone-Entwicklervereinbarung
quelle
In der neuen Lizenzvereinbarung wird dies ausdrücklich klargestellt. Also JA, es wird verboten.
Hinweis: Wenn Sie wirklich für das iPhone entwickeln möchten, versuchen Sie es mit XCode. Wenn Sie bereits mit Java oder C # oder besser mit C ++ vertraut sind, wird das Erlernen von Objective-C nicht so schwierig sein.
iPhone / iPad ist Apples neues erfolgreiches Geschäft, und sie werden alles tun, um dieses Geschäft am Wachsen zu halten. Vielleicht werden sie Monotouch-Apps jetzt nicht verbieten, aber wer weiß, dass es den nächsten Schritt gibt? Wenn Sie sich also wirklich für iPhone-Entwickler interessieren, anstatt Albträume zu haben, wird Ihre Arbeit möglicherweise einfach abgelehnt. Wechseln Sie einfach zu XCode. Zumindest wird dadurch der Prozentsatz der App-Ablehnung gesenkt. Daher mein Rat.
quelle
Ich denke, etwas, das stark berücksichtigt werden muss, ist Apples Motivation.
Ich stimme anderen online veröffentlichten Ansichten zu, dass Apple versucht, die Kommerzialisierung von Anwendungen zu verhindern - das heißt, dass immer mehr Anwendungen mit Frameworks geschrieben werden, die Anwendungen generieren, die auf mehreren Geräten ausgeführt werden können.
Aber das ist Monotouch nicht. Bei Monotouch geht es darum, die Apple-Frameworks zum Schreiben von Anwendungen zu verwenden - jedoch über Mono, nicht über Objective-C. Von diesem Standpunkt aus sollte Monotouch Apple also nicht wirklich stören.
Ich bin immer noch der Meinung, dass Entwickler besser in der Muttersprache der von ihnen verwendeten Plattform schreiben sollten, da die Dinge im Allgemeinen reibungsloser sind, wenn Sie kein System einführen, bei dem die Abstimmungsimpedanz nicht übereinstimmt - die Cocoa-Frameworks wurden alle für die Verwendung entwickelt Objective-C, und sie sind am sinnvollsten, wenn Sie an die Philosophie von Objective-C gewöhnt sind. Ich hoffe jedoch, dass Apple die Verwendung von MonoTouch zulässt.
quelle
Alles, was Apple sagt, ist, dass Sie jetzt alle die Sprachen der 1980er Jahre verwenden müssen, um Ihre Konkurrenz zu entwickeln, die die neuesten mobilen Anwendungen schlägt.
Macht perfekt Sinn. Klingt für mich nach einer Gewinnstrategie.
Es verhindert auch, dass Sie Bibliotheken von Drittanbietern verwenden, von denen Sie nicht garantieren können, dass sie in Straight C, C ++ oder Objective C entwickelt wurden.
Im Grunde bedeutet dies, dass Sie keine Spiele-APIs wie Unity kaufen können.
quelle
Ich füge nur meine 2 Cent hinzu. Es scheint, dass nach dem Lesen dieses Teils: (z. B. Anwendungen, die über eine Zwischenübersetzungs- oder Kompatibilitätsschicht oder ein Tool mit dokumentierten APIs verknüpft sind, verboten sind) nichts zu besprechen ist. Sie haben sie eindeutig ausgedrückt. Sie verbieten nicht nur MonoTouch und Unity3d, sondern anscheinend auch das Titanium Framework . Nachdem ich diesen Artikel gelesen hatte , war ich wirklich verwirrt. Ich bin mit US-Gesetzen nicht vertraut, aber ist es legal? Ich meine, brechen sie nicht einige Antimonopolgesetze?
Abgesehen davon kann ich ihre Motivation nicht verstehen. Sie werden nicht nur teilweise das Interesse der Entwickler verlieren, sondern auch den Respekt der Entwickler, denke ich.
quelle
Bis heute wurde Abschnitt 3.3.1 der Apple iOS Developer Program License auf den alten Text zurückgesetzt:
Apple hat eine offizielle Erklärung zu den Lizenzänderungen veröffentlicht.
Dies würde darauf hinweisen, dass die Verwendung von MonoTouch jetzt zulässig ist.
quelle
Ein Ziel des Mono-Teams ist es, Silverlight mittels MonoTouch / Moonlight für die plattformübergreifende Entwicklung auf das iPhone zu portieren. Das ist ein bisschen wie das Portieren von Flash auf das iPhone. Es ist auch Monodroid unterwegs, um uns bei der Portierung von Anwendungen zu helfen, und Apple läuft jedes Mal amonk, wenn jemand "Android" sagt :-) IMHO, wenn Apple mit der neuen Vereinbarung auf Adobe abzielt, zielt es auch auf Novel ab. Wir spekulieren wahrscheinlich und es gibt eine NDA, aber viele von uns haben viel Zeit in diese Plattform investiert, deshalb müssen wir die Situation klarstellen. Wir können es kaum erwarten, diesen Sommer zu diskutieren. Zum Beispiel wurde ich von einem Freund gebeten, seinem Unternehmen beim Prototyp einer MonoTouch-Anwendung für einen Kunden zu helfen. Betrifft die neue Vereinbarung nur die App Store-Distribution? Was ist mit der internen Verteilung?
quelle
Diese Google Docs-Tabelle enthält eine lange Liste von Apps, die von der neuen Vereinbarung betroffen sind. Einige bemerkenswerte, die für ihre Kategorie die Nummer 1 im Appstore waren:
Eine der lustigen Einschlüsse ist Toy Story.
quelle
Viele Apps wurden in den letzten Tagen mit Hilfe von Monotouch und Unity akzeptiert, während ich sie seit der Ankündigung und Änderung der Vereinbarung ebenso wie obj-c verwende, also GO FIGURE, ... the good ol'WTF fällt mir ein. Es scheint ein bipolares Sparschwein zu sein.
AUCH das letzte Unity-Spiel GiantMOTO, das unter HOT NEW GAMES - YESTERDAY steht, hat auf seinem Begrüßungsbildschirm onLoad in großen Buchstaben, POWERED BY UNITY. Alle Vermutungen, Annahmen usw. sind also wirklich draußen. Es könnte alles sagen, dass in der neuen Version es sicherlich NICHT erzwungen wird. Und montouch ist die einzige Entwicklungsplattform, die die iPhone-API VOLLSTÄNDIG verfügbar macht und mithilfe von XCode VOLLSTÄNDIG in obj-c integriert.
quelle
Laut Lizenzvereinbarung sind MonoTouch-Apps im AppStore eindeutig nicht zulässig.
Die interessantere Frage ist jedoch, gegen welches Framework / welche Apps sie es durchsetzen werden. Sie müssen auch automatisierte Tests schreiben, um zu überprüfen, ob die Apps nativ geschrieben wurden oder nicht, da die Personen, die die Apps genehmigen, nicht die Zeit / Fähigkeiten haben, dies für jede einzelne App zu tun. Diese Apps bringen dort keinen Aufkleber "Using MonoTouch / Flash" an.
quelle
Die kurze Antwort auf all diesen Blob in der Vereinbarung lautet JA .
Apple schießt sich im Grunde genommen in den Fuß, indem es Programme auf wenige Sprachen beschränkt:
Sie beschränken absichtlich die Tools, die Sie für die Entwicklung für das iPhone verwenden können, was sie mit ziemlicher Sicherheit in ernsthafte Schwierigkeiten bringen wird. Ich bin mir sicher, dass ein großer Teil der Community die iPhone-Entwicklung einfach beenden und auf eine andere Plattform wie Windows Mobile, Symbian, Android oder Maemo migrieren wird, die völlig offen ist. Sie können Ihre Anwendung in LOLCODE schreiben.
Abgesehen davon, dass iPhone möglicherweise für Entwickler zu Junk wird, gibt es Adobe auch einen schönen Kuss: Apple blockiert Flash absichtlich vom iPad, und jetzt blockieren sie es auch vom iPhone. Die Nummer ist die größte CS5-Funktion von Adobe Flash: die Bereitstellung von Flash-Anwendungen auf dem iPhone.
tl; dr: Apple schießt sich mit dieser Bewegung im Grunde genommen in den Fuß.
quelle
Es ist jetzt Monate nach dem Flash-Debakel und es ist ziemlich offensichtlich, dass es Monotouch und Unity gut geht.
Gemäß "Anwendungen, die über eine Zwischenübersetzungs- oder Kompatibilitätsschicht oder ein Tool mit dokumentierten APIs verknüpft sind, sind verboten".
Monotouch kompiliert Code bis zu einer nativen Binärdatei, es gibt keine "Ebene". Sie beziehen sich auf etwas wie eine .NET-Laufzeit, Java JVM oder Flash-Laufzeit.
quelle
Mono-Anwendungen werden normalerweise zu Bytecode kompiliert, für den eine JIT-Kompilierung (just in time) erforderlich ist, sodass ein .NET-Framework oder ein Mono-Framework erforderlich ist. Bei iOS und Android wird die Mono-Anwendung jedoch zu nativem Code kompiliert. Daher gibt es in den Augen von Apple keine dritte Schicht , Apple wird Mono niemals verbieten. So können Sie mit MonoTouch entwickeln und Ihre Apps verteilen. Um Sie weiter zu versichern, gibt es im AppStore verschiedene Mono-Anwendungen (einschließlich Spiele und Anwendungen), die es schon lange gibt.
quelle