Salve a tutti.
Sto riscontrando un problema con l'utilizzo dell'android-ndk-r9d
Ho un progetto con la seguente architettura.

1) Componente compilata con android-ndk-r9d usata per creare una libreria di codice nativo in C da usare in un progetto Android.

In Android.mk ho specificato le seguenti opzioni:

codice:
TARGET_ABI = android-16-armeabi-v7a
TARGET_PLATFORM = android-16
TARGET_ARCH_ABI = armeabi-v7a

LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp
LOCAL_LDLIBS += -Wl,--fix-cortex-a8
e in Application.mk le seguenti:

codice:
APP_ABI := armeabi-v7a
APP_PLATFORM     := android-16
per forzare l'utilizzo della platform android-16 invece di quella di default che dovrebbe essere la android-3

Nei files C è presente il seguente codice

codice:
device = open(pathFileSmartIO, O_RDWR | O_DIRECT);
effettuando ndk-build noto che alla fine mi scrive:

[armeadi-v7a] install : nomeLib.so => libs/armeabi/nomeProgetto.so e già questo mi stona, non dovrebbe creare il .so in libs/armeabi-v7a/ ?

2) Una libreria java in cui faccio il load del .so tramite in seguente codice

codice:
static {
		System.loadLibrary("SmartIO");
		}
Da questo progetto ricavo un .jar

3) Un'app Android che importa il .jar generato nel punto 2 e ha il .so generato nel .1 nel path libs/armeabi-v7a
Se nell'AndroidManifest non specifico il tag <uses-sdk> il tutto funziona.
Se invece inserisco il tag funziona solo se specifico mindSdk="3", se ne specifico una superiore fallisce la chiamata alla funzione open sopra citata.

Quello che io non riesco a capire è se l'errore è dovuto a problemi della funzione open a partire dalla versione 4 oppure se, in qualche modo, la libreria .so che utilizzo è in qualche modo ancora compilata con la versione android-3 nonostante tutti i settings fatti nei .mk e quindi se cambio sdk sbarrella (e lo fa proprio su quella funzione).

L'app android la faccio puntare alla target android-16 nelle properties del progetto.

Ciao a tutti
Sandro