2010-09-24 10 views
5

Da Objective-C existiert und auch in MinGW unterstützt wird, gibt es einen Hack, um dies mit Android SDK zu erreichen, indem man -x objective-c übergibt? Ich habe einen rudimentären Test auf dem Computer eines Kollegen gemacht, wo es scheint, dass die Sprache nicht unterstützt wird.gcc -x objective-c mit Android SDK

Ich bin nicht daran interessiert, UIKit oder AppKit oder sogar Foundation zu arbeiten; Ich habe den Großteil eines OpenGLES-Spiels in Objective-C geschrieben und es erfolgreich auf Mac OS X und Windows portiert. Ich bin ziemlich sicher, dass ich es leicht auf GNU/Linux portieren könnte, sobald ich genug Zeit habe, um genug von GNUStep herauszufinden (und sogar ohne es könnte ich die Klassen erstellen, um das Spiel zum laufen zu bringen).

Ich bin nur interessiert an der Basissprache und grundlegende Laufzeit (einschließlich Eigenschaften, wenn möglich); sogar NSObject kann leicht in dem Maße geschrieben werden, wie ich es brauche.


In der Zwischenzeit habe ich es geschafft, einige Objective-C-Code zu kompilieren, und haben einen Leitfaden für diese geschrieben:

Es gibt mehr Details in meiner antworte unten.

+0

Heh, ich liebe, wie jemand die Frage wahrscheinlich, wegen Eifer und nicht weil es uninteressant ist downvoted :) –

+0

Dort habe ich upvoted, weil es direkt auf meinen Wunsch, GDC, D Sprache Compiler-Unterstützung in der NDK erhalten. – dwerner

Antwort

1

Sie müssen wahrscheinlich die Quellen des ndk gcc mit dieser Option neu kompilieren. Im Extremfall müssen Sie möglicherweise den Code für diese Option upstream finden und ihn zu den Quellen des ndk gcc hinzufügen.

Die Portierung von Laufzeitbibliotheken auf bionische anstelle von glibc kann interessanter sein.

Beachten Sie, dass Android nicht wirklich pure-native Binaries sehr gut behandelt, müssen Sie entweder als jni-Bibliothek aus einem Java-Wrapper-Anwendung aufgerufen werden, die Sie für Audio oder Fork und exec aufrufen müssen 'd von einem (nicht empfohlen, und Sie mit geräteabhängigen Hacks für Audio verlassen).

+0

Das ist etwas zu tief für mich. Ich habe es nie gemocht, GCC neu zu kompilieren. Ich werde jedoch akzeptieren, wenn Sie ein paar Upvotes von Leuten bekommen, die besser informiert sind als ich. –

1

Es gibt dieses Google Code Projekt: http://code.google.com/p/android-gcc-objc2-0/ aber ich habe es noch nicht getestet.

Auch ich habe auf der Cocotron-Mailingliste erkundigt, ob dieser Compiler mit Cocotrons Foundation und CoreFoundation verwendbar ist; eine Person antwortete, dass es nicht ist, und dass er auf das Problem gearbeitet hat: http://groups.google.com/group/cocotron-dev/browse_thread/thread/448355f2a6c9c28e#


In der Zwischenzeit ich es geschafft habe einige Objective-C-Code zu kompilieren, und haben einen Leitfaden für diese geschrieben:

* Developing Objective-C apps for Android using Mac OS X


Clang ist heute in NDK enthalten, wenn das ist alles, was Sie brauchen.

+0

Der Link scheint kaputt zu sein. –

+0

@jeffamaphone Danke, ich habe ein Upgrade des Servers durchgeführt und ich habe nie überprüft, dass ein Wordpress-Plugin mit PHP 5.4 in Konflikt steht. –

+1

Nizza doc. Es gibt auch diese NDK-Version, die GCC 4.6.3 in der Toolchain hat: http://www.crystax.net/en/android/ndk –

2

Die enthält eine Clang-Compiler-Integration mit dem Android NDK. Es enthält auch eine Reihe weiterer nützlicher Funktionen, wenn Sie über die grundlegende Objective-C-Sprache und Laufzeitunterstützung hinausgehen möchten.