Sto cercando di sviluppare / trasferire un gioco su Android, ma è in C e Android supporta Java, ma sono sicuro che ci deve essere un modo per ottenere un'app C lì, qualcuno sa come farlo?
Sto cercando di sviluppare / trasferire un gioco su Android, ma è in C e Android supporta Java, ma sono sicuro che ci deve essere un modo per ottenere un'app C lì, qualcuno sa come farlo?
Risposte:
Per chiunque venga a questo tramite Google, nota che a partire da SDK 1.6 Android ora ha un SDK nativo ufficiale.
Puoi scaricare Android NDK (Native Development Kit) da qui: https://developer.android.com/ndk/downloads/index.html
Inoltre c'è un post sul blog sull'NDK:
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Il NDK Android è un set di strumenti che consente di implementare parti della vostra applicazione in codice nativo, utilizzando linguaggi come C e C ++. Per alcuni tipi di app, questo può aiutarti a riutilizzare le librerie di codici scritte in quelle lingue.
Per maggiori informazioni su come iniziare con lo sviluppo nativo, segui questo link .
Le applicazioni di esempio sono disponibili qui .
Normalmente, devi:
Se stai cercando di vendere un'app:
Google ha rilasciato un kit di sviluppo nativo (NDK) (secondo http://www.youtube.com/watch?v=Z5whfaLH1-E alle 00:07:30).
Si spera che le informazioni vengano aggiornate sulla pagina dei gruppi di google ( http://groups.google.com/group/android-ndk ), in quanto si dice che non è stato ancora rilasciato.
Non sono sicuro di dove scaricare un semplice download, ma ho sentito che puoi ottenere una copia dell'NDK dal repository Git di Google sotto il ramo di ciambella.
La posizione ufficiale sembra essere che questo non è qualcosa che vorresti "voler fare". Vedi questa discussione nell'elenco degli sviluppatori Android. Google prevede Android in esecuzione su una varietà di dispositivi diversi (CPU, display, ecc.). Il modo migliore per consentire lo sviluppo è quindi utilizzare il codice gestito (portatile) destinato alla VM Dalvik. Per questo motivo, l'SDK di Android non supporta C / C ++.
MA, dai un'occhiata a questa pagina :
Android include un set di librerie C / C ++ utilizzate da vari componenti del sistema Android. Queste funzionalità sono esposte agli sviluppatori attraverso il framework delle applicazioni Android.
Il framework dell'applicazione gestita sembra essere sovrapposto a queste librerie. La pagina continua con l'elenco delle librerie C / C ++: libreria C standard, media, 3D, SQL Lite e altre.
Quindi tutto ciò che serve è una catena di compilatori che compilerà C / C ++ nella CPU appropriata (ARM, nel caso di G1). Alcune brevi istruzioni su come eseguire questa operazione sono qui .
Quello che non so è dove trovare le descrizioni delle API fornite da queste librerie. Immagino che potrebbero esserci dei file di intestazione sepolti nell'SDK da qualche parte, ma la documentazione potrebbe essere imprecisa / mancante. Ma penso che si possa fare!
Spero sia utile. Per la cronaca, non ho scritto nessuna app Android nativa, solo alcune semplici gestite.
Andy
È possibile utilizzare nestedvm per tradurre C (o altri linguaggi GCC) in bytecode Java e utilizzarlo come base della propria porta. Ad esempio, vedi la porta Android della raccolta di puzzle portatile Simon Tathams .
Mi aspetto che questo metodo sia reso obsoleto dall'NDK, ma potrebbe non esserci se alcune reti o qualcosa non consentono alle persone di aggiornare i propri telefoni.
Google ha già lanciato Google I / O 2011: portare giochi C e C ++ alla sessione Android , disponibile all'indirizzo http://www.youtube.com/watch?v=5yorhsSPFG4
che è buono per capire l'uso di NDK per scrivere l'applicazione in c e c ++ per Android.
Se vuoi solo compilare tutti i giochi nativi basati su console ed eseguirli su Android, questo articolo ha mostrato 3 metodi per lo stesso.
1: compilazione statica utilizzando toolchain standalone
2: Compilazione incrociata utilizzando la toolchain di Android NDK
3: Compilazione incrociata utilizzando il codice sorgente AOSP
Forse lo stai cercando?
È uno strato intermedio per lo sviluppo di diverse piattaforme mobili che utilizzano c ++.
Guardando questo sembra che sia possibile:
"il fatto che sia supportato solo il linguaggio Java non significa che non è possibile sviluppare applicazioni in altre lingue. Lo hanno dimostrato molti sviluppatori, hacker ed esperti nello sviluppo di applicazioni per dispositivi mobili. I ragazzi di Elements Interactive BV, la società dietro Edgelib libreria, è riuscito a eseguire applicazioni C ++ native sulla piattaforma Android, anche se in questo momento ci sono ancora molti problemi di visualizzazione e suono ... ecc. Questo include il gioco S-Tris2 e una demo di animazione 3D di Edgelib. "
Dal 2009 c'è uno sviluppo in materia.
Necessitas - Qt (framework C ++) per Android Video
introduttivo .
Dai un'occhiata al gruppo google ndk sembra promettente, la prima versione di NDK sarà disponibile nel primo semestre del 2009 .
Aggiornamento: ed è rilasciato http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Non sono sicuro che NDK offra una copertura completa dell'API Java ufficiale.
Da http://developer.android.com/sdk/ndk/index.html#overview :
Si noti che NDK non consente di sviluppare applicazioni solo native. Il runtime principale di Android rimane la macchina virtuale Dalvik.
Google ha appena rilasciato l'NDK che lo consente esattamente.
Può essere trovato qui: http://developer.android.com/sdk/ndk/1.5_r1/index.html
Questo post sul blog potrebbe essere un buon inizio: http://benno.id.au/blog/2007/11/13/android-native-apps Sfortunatamente, molte delle cose importanti vengono "lasciate come esercizio al lettore".
Non conosco un tutorial ma un buon strumento di sviluppo: Airplay SDK di Ideaworks Labs. (Recentemente rinominato " Marmelade ") Usando C / C ++ puoi creare app per Windows Mobile, iPhone, Android. L'unico componente che non mi è piaciuto è stato il compositore della GUI: un bug con errori, ma puoi sempre sostituirlo con il Blocco note.
Puoi scaricare c4droid e quindi installare il plug-in GCC e installarlo sulla tua SD. Dalla shell ho appena attraversato la directory in cui si trova il binario GCC e quindi lo chiamo per creare un eseguibile a bordo.
/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;
}
ciao braccio!
Questi tre passaggi sono buoni da avere e archiviare in questo post.
1) Come eseguire il porting del codice c nativo su Android
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
I file nativi C / c ++ libstdc ++. * Dal tuo Ubuntu sono binari x86 (o x86_64) ma i dispositivi Android e gli emulatori sono ARM. Ovviamente, questo non funzionerà comunque, anche se imposterai il soname corretto. Questo è un modo molto ingenuo che non porta da nessuna parte. Android ha un supporto molto limitato di C ++, il che significa che non ci sono eccezioni, libreria C ++ standard (incluso STL) e RTTI. Se hai bisogno di tale funzionalità, usa la mia distribuzione NDK personalizzata da
http://crystax.net/android/ndk.php - supporta le funzionalità C ++ complete elencate sopra.
Perché è presente un errore: riferimento indefinito all'errore di collegamento "__cxa_end_cleanup". Stlport Android
tempo. Perché non esiste alcun collegamento a libstdc + +. A. Così sbagliato.
Poiché utilizza una libreria statica, è necessario collegare l'intero libstdc + +. Una lattina
http://crystax.net/android/ndk.php qui per scaricare il pacchetto
directory source \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi.
Android sul proprio supporto libstdc + + è limitato, deve essere collegato a un completo libstdc + +. A il lavoro.
Aggiungi file in Android.mk LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \
$ (LOCAL_PATH) / libs / liblua.a \
`$ (LOCAL_PATH) / libs / libstdc + +. A`
E LOCAL_CPPFLAGS + =-lstdc + +-fexceptions
può essere compilato
Esiste un piano per consentire le librerie C / C ++ nella prossima versione dell'SDK di Android (Codename Eclair?) Ad oggi, non è possibile tramite l'SDK Java di Android. Tuttavia, puoi prendere il progetto ENORME ENORME, girare le tue librerie e quindi eseguire il flashing del tuo dispositivo ... ma anche chiunque desideri utilizzare la tua libreria dovrà eseguire il flashing della tua build personalizzata.
Risposta breve: non puoi.
@ Backslash17: guardando l'articolo e il seguente link con le istruzioni di installazione, tutta l'azienda ha funzionato è lanciare un eseguibile autocompilato sull'emulatore, bypassando il framework Android. Una volta che hai l'emulatore puoi telnet e avere una shell Linux. L'esecuzione di un programma Linux è ovviamente banale. Ma questo non funziona per i telefoni senza jailbreak (noto anche come accesso root) e non disponibili sul mercato.
A meno che Google non apra altre opportunità o qualcuno scriva un compilatore personalizzato che compila Lingua X nel bytecode Dalvik (Dalvik è la VM che esegue i programmi Android) non sarai in grado di scrivere codice nativo.