2012-01-25 16 views
12

È possibile chiamare una libreria C++ da un'app per Android? Se sì, come?Chiama libreria C++ da Java in Android

Non ho esperienza nella programmazione Android (tuttavia, alcune esperienze di programmazione Java), ma mi piacerebbe comunque sapere se questo è possibile. Dato il numero di grandi librerie C++ là fuori, sarei sorpreso se non fosse possibile chiamare una libreria C++ da un'app Android.

risposta

7

Sì, è possibile. Devi costruire la tua libreria C++ usando l'NDK di Android. Il nuovo collegamento https://developer.android.com/ndk/index.html

+3

Cosa succede se la mia libreria C++ è una libreria di sola intestazione? (non c'è niente da costruire)? – Ela782

11

È necessario scrivere una Java Native Interface (JNI) per poter chiamare le librerie native (c/C++) dal codice Java di Android.
La gerarchia è come:

+++++++++++++++++++++++++++++++++++   
|  Android Application   |   
+++++++++++++++++++++++++++++++++++   


+++++++++++++++++++++++++++++++++++ 
| Android Application Framework | 
+++++++++++++++++++++++++++++++++++ 


+++++++++++++++++++++++++++++++++++  
|  Java Native Interface  | 
+++++++++++++++++++++++++++++++++++ 


+++++++++++++++++++++++++++++++++++ 
|  C/C++ Native Libraries  | 
+++++++++++++++++++++++++++++++++++ 
1

Sì, è possibile. Come nelle precedenti menzionati a costruire la vostra libreria C++ utilizzando l'NDK e utilizzare JNI per chiamare da Java

Se hai intenzione di fare diverse classi C++ accessibile è possibile utilizzare SWIG per generare automaticamente il layer JNI per voi

http://www.swig.org/index.php