Ich versuche, ein Spiel für Android zu entwickeln / zu portieren, aber es ist in C und Android unterstützt Java, aber ich bin sicher, dass es eine Möglichkeit geben muss, eine C-App dort zu installieren. Weiß jemand, wie dies erreicht werden kann?
Ich versuche, ein Spiel für Android zu entwickeln / zu portieren, aber es ist in C und Android unterstützt Java, aber ich bin sicher, dass es eine Möglichkeit geben muss, eine C-App dort zu installieren. Weiß jemand, wie dies erreicht werden kann?
Antworten:
Wenn Sie über Google darauf zugreifen, beachten Sie, dass Android ab SDK 1.6 jetzt ein offizielles natives SDK hat.
Sie können das Android NDK (Native Development Kit) hier herunterladen: https://developer.android.com/ndk/downloads/index.html
Es gibt auch einen Blog-Beitrag über das NDK:
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Das Android NDK ist ein Toolset, mit dem Sie Teile Ihrer App in nativem Code mithilfe von Sprachen wie C und C ++ implementieren können. Für bestimmte Arten von Apps kann dies Ihnen helfen, in diesen Sprachen geschriebene Codebibliotheken wiederzuverwenden.
Weitere Informationen zum Einstieg in die native Entwicklung finden Sie unter diesem Link .
Beispielanwendungen finden Sie hier .
Normalerweise müssen Sie:
Wenn Sie eine App verkaufen möchten:
Google hat ein Native Development Kit (NDK) veröffentlicht (laut http://www.youtube.com/watch?v=Z5whfaLH1-E um 00:07:30).
Hoffentlich werden die Informationen auf der Google Groups-Seite ( http://groups.google.com/group/android-ndk ) aktualisiert , da sie noch nicht veröffentlicht wurden.
Ich bin nicht sicher, wo ich einen einfachen Download dafür bekommen soll, aber ich habe gehört, dass Sie eine Kopie des NDK aus dem Git-Repository von Google unter dem Donut-Zweig erhalten können.
Die offizielle Position scheint zu sein, dass dies nicht etwas ist, was Sie jemals "tun wollen". Siehe diesen Thread in der Liste der Android-Entwickler. Google stellt sich vor, dass Android auf verschiedenen Geräten (CPUs, Displays usw.) ausgeführt wird. Der beste Weg, um die Entwicklung zu ermöglichen, ist daher die Verwendung von (portablem) verwaltetem Code, der auf die Dalvik-VM abzielt. Aus diesem Grund unterstützt das Android SDK C / C ++ nicht.
ABER werfen Sie einen Blick auf diese Seite :
Android enthält eine Reihe von C / C ++ - Bibliotheken, die von verschiedenen Komponenten des Android-Systems verwendet werden. Diese Funktionen stehen Entwicklern über das Android-Anwendungsframework zur Verfügung.
Das verwaltete Anwendungsframework scheint über diesen Bibliotheken zu liegen. Auf dieser Seite werden die C / C ++ - Bibliotheken aufgelistet: Standard-C-Bibliothek, Medien, 3D, SQL Lite und andere.
Sie benötigen also lediglich eine Compilerkette, die C / C ++ auf die entsprechende CPU kompiliert (ARM im Fall des G1). Einige kurze Anweisungen dazu finden Sie hier .
Was ich nicht weiß, ist, wo Beschreibungen der APIs zu finden sind, die diese Bibliotheken bereitstellen. Ich würde vermuten, dass irgendwo im SDK Header-Dateien vergraben sind, aber die Dokumentation ist möglicherweise lückenhaft / fehlt. Aber ich denke es kann getan werden!
Hoffe das ist nützlich. Ich habe keine nativen Android-Apps geschrieben - nur ein paar einfach verwaltete.
Andy
Sie können nestedvm verwenden , um C (oder andere GCC-Sprachen) in Java-Bytecode zu übersetzen, und diesen als Grundlage für Ihren Port verwenden. Sehen Sie sich zum Beispiel den Android-Port der tragbaren Puzzlesammlung von Simon Tathams an .
Ich gehe davon aus, dass diese Methode vom NDK überholt wird, aber möglicherweise nicht, wenn einige Netzwerke oder ähnliches es den Benutzern nicht erlauben, ihre Telefone zu aktualisieren.
Google hat bereits Google I / O 2011 gestartet : Bringen Sie C- und C ++ - Spiele in die Android- Sitzung, die unter http://www.youtube.com/watch?v=5yorhsSPFG4 verfügbar ist
Das ist gut zu verstehen, die Verwendung von NDK zum Schreiben von Anwendungen in c und c ++ für Android.
Wenn Sie nur ein konsolenbasiertes natives Spiel kompilieren und auf Android ausführen möchten, enthält dieser Artikel drei Methoden für dasselbe.
1: Statische Kompilierung mit einer eigenständigen Toolchain
2: Cross-Kompilierung mit der Toolchain von Android NDK
3: Cross-Kompilierung mit AOSP-Quellcode
Vielleicht suchen Sie das?
Es ist eine mittlere Ebene für die Entwicklung für mehrere mobile Plattformen mit C ++.
Wenn man das betrachtet, scheint es möglich zu sein:
"Die Tatsache, dass nur Java-Sprache unterstützt wird, bedeutet nicht, dass Sie keine Anwendungen in anderen Sprachen entwickeln können. Dies wurde von vielen Entwicklern, Hackern und Experten für die Anwendungsentwicklung für Mobilgeräte bewiesen. Die Mitarbeiter von Elements Interactive BV, dem Unternehmen hinter Edgelib Bibliothek, es ist gelungen, native C ++ - Anwendungen auf der Android-Plattform auszuführen, auch wenn derzeit noch viele Probleme bei Anzeige und Sound auftreten… usw. Dazu gehören das S-Tris2-Spiel und eine 3D-Animationsdemo von Edgelib. "
Seit 2009 gibt es eine Entwicklung in dieser Angelegenheit.
Necessitas - Qt (C ++ Framework) für Android
Erste Schritte Video .
Werfen Sie einen Blick auf die Google Ndk-Gruppe , die vielversprechend aussieht. Die erste Version des NDK wird in 1H2009 verfügbar sein.
Update: Und es wird veröffentlicht http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Ich bin nicht sicher, ob das NDK die offizielle Java-API vollständig abdeckt.
Von http://developer.android.com/sdk/ndk/index.html#overview :
Bitte beachten Sie, dass Sie mit dem NDK keine nativen Anwendungen entwickeln können. Die primäre Laufzeit von Android bleibt die virtuelle Dalvik-Maschine.
Google hat gerade das NDK veröffentlicht, das genau das ermöglicht.
Es kann hier gefunden werden: http://developer.android.com/sdk/ndk/1.5_r1/index.html
Dieser Blog-Beitrag kann ein guter Anfang sein: http://benno.id.au/blog/2007/11/13/android-native-apps Leider werden viele wichtige Dinge "dem Leser als Übung überlassen".
Ich kenne kein Tutorial, aber ein gutes Entwicklungswerkzeug: Airplay SDK von Ideaworks Labs. (Kürzlich umbenannt in " Marmelade ") Mit C / C ++ können Sie Apps für Windows Mobile, iPhones und Android erstellen. Die einzige Komponente, die mir nicht gefallen hat, war der GUI-Composer - ein fehlerhafter, aber Sie können ihn immer durch den Notepad ersetzen.
Sie können c4droid herunterladen und dann das GCC-Plugin installieren und auf Ihrer SD installieren. Von der Shell gehe ich einfach zu dem Verzeichnis, in dem sich die GCC-Binärdatei befindet, und rufe sie dann auf, um eine On-Board-ausführbare Datei zu erstellen.
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
#include<stdio.h>
int main(){
printf("hello arm!\n");
return 0;
}
Hallo Arm!
Diese drei Schritte sind gut zu haben und in diesem Beitrag zu speichern.
1) Wie man nativen C-Code auf Android portiert
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
Native C / c ++ - Dateien libstdc ++. * Von Ihrem Ubuntu sind x86- (oder x86_64-) Binärdateien, Android-Geräte und -Emulatoren jedoch ARM. Dies funktioniert natürlich sowieso nicht, selbst wenn Sie den richtigen Sonamen einstellen. Dies ist ein sehr naiver Weg, der nirgendwohin führt. Android unterstützt C ++ nur sehr eingeschränkt, dh es gibt keine Ausnahmen, Standard-C ++ - Bibliothek (einschließlich STL) und RTTI. Wenn Sie solche Funktionen benötigen, verwenden Sie meine benutzerdefinierte NDK-Distribution von
http://crystax.net/android/ndk.php - unterstützt die oben aufgeführten vollständigen C ++ - Funktionen.
Warum gibt es einen Fehler: undefinierter Verweis auf den Linkfehler '__cxa_end_cleanup'. Android stlport
Zeit. Weil es keinen Link zu libstdc ++ gibt. A. Also falsch.
Da eine statische Bibliothek verwendet wird, muss die vollständige libstdc ++ verknüpft werden. Eine Kanne
http://crystax.net/android/ndk.php hier, um das Paket herunterzuladen
Quellen \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi Verzeichnis.
Android auf seiner eigenen libstdc ++ Unterstützung ist begrenzt, es muss mit einer vollständigen libstdc ++ verknüpft werden. A der Job.
Datei in Android.mk hinzufügen LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \
$ (LOCAL_PATH) / libs / liblua.a \
`$ (LOCAL_PATH) / libs / libstdc + +. A`
Und LOCAL_CPPFLAGS + =-lstdc + +-fexceptions
kann kompiliert werden
Es ist geplant, C / C ++ - Bibliotheken in der nächsten SDK-Version von Android (Codename Eclair?) Zuzulassen. Bisher ist dies über das Android Java SDK nicht möglich. Sie können jedoch das RIESIGE Open-Source-Projekt herunterladen, Ihre eigenen Bibliotheken rollen und dann Ihr eigenes Gerät flashen ... aber jeder, der Ihre Bibliothek verwenden möchte, muss auch Ihr benutzerdefiniertes Build flashen.
Kurze Antwort: Das kannst du nicht.
@ Backslash17: Wenn Sie den Artikel und den folgenden Link mit den Installationsanweisungen durchsehen, muss das Unternehmen lediglich eine selbst kompilierte ausführbare Datei auf dem Emulator starten und dabei das Android-Framework umgehen. Sobald Sie den Emulator haben, können Sie Telnet und eine Linux-Shell haben. Das Ausführen eines Linux-Programms dort ist natürlich trivial. Dies funktioniert jedoch nicht für Telefone ohne Jailbreak (auch bekannt als Root-Zugriff) und ist auf dem Markt nicht verfügbar.
Solange Google keine anderen Möglichkeiten eröffnet oder jemand einen benutzerdefinierten Compiler schreibt, der Sprache X in Dalvik-Bytecode kompiliert (Dalvik ist die VM, auf der Android-Programme ausgeführt werden), können Sie keinen nativen Code schreiben.