20/11/10 16:37
hackersitiz
Postato originariamente da TheKaneB:
con l'Android NDK in pratica compili il tuo codice in C o C++ sotto forma di libreria. Successivamente richiami i metodi di libreria usando l'estensione JNI all'interno dell'applicazione "launcher" che dovrai necessariamente costruire in Java.
Quindi la tecnica base è quella di fare un programma interamente in C++ o in C, con un punto d'ingresso fakeMain() e richiamare il fakeMain da un micro-programmino in Java che funziona così da launcher.
Però ci sono dei problemi:
- Android ogni tanto invia dei "messaggi" che il tuo programma dovrà gestire "lato Java"
- Se ti serve qualcosa di specifico (accelerometro, GPS, ecc...) devi richiederlo "lato Java" e poi passare i risultati al tuo programma, ecc...
Detto questo, ci sono tante tecniche, ma solo 2 sono veramente efficaci:
1- Fai un wrapper Java-vs-C per ogni funzione di Android che userai, ed esponi questo wrapper all'interno del tuo programma in C (difficile, ma ti consente di fare programmi multiplatform)
2- Fai l'intero programma in Java, e soltanto gli algoritmi veramente pesanti implementali in C e richiamali quando serve tramite chiamate JNI (facile, soluzione migliore se non sei molto esperto)
con l'Android NDK in pratica compili il tuo codice in C o C++ sotto forma di libreria. Successivamente richiami i metodi di libreria usando l'estensione JNI all'interno dell'applicazione "launcher" che dovrai necessariamente costruire in Java.
Quindi la tecnica base è quella di fare un programma interamente in C++ o in C, con un punto d'ingresso fakeMain() e richiamare il fakeMain da un micro-programmino in Java che funziona così da launcher.
Però ci sono dei problemi:
- Android ogni tanto invia dei "messaggi" che il tuo programma dovrà gestire "lato Java"
- Se ti serve qualcosa di specifico (accelerometro, GPS, ecc...) devi richiederlo "lato Java" e poi passare i risultati al tuo programma, ecc...
Detto questo, ci sono tante tecniche, ma solo 2 sono veramente efficaci:
1- Fai un wrapper Java-vs-C per ogni funzione di Android che userai, ed esponi questo wrapper all'interno del tuo programma in C (difficile, ma ti consente di fare programmi multiplatform)
2- Fai l'intero programma in Java, e soltanto gli algoritmi veramente pesanti implementali in C e richiamali quando serve tramite chiamate JNI (facile, soluzione migliore se non sei molto esperto)
Ti offro una birra quando posso ok? beh poi dipende dove abiti LOL
aaa