Per integrare libsodium nella vostra app per Android, è necessario:
- La biblioteca libsodium compilato per la piattaforma Android (s)
- Un JNI vincolante come kalium-jni
Se ti fidi di persone casuali su Internet (che non dovresti!), Scarica this tarball ed estrailo nel tuo progetto s ource. Altrimenti, segui le istruzioni qui sotto per compilarlo da solo.
libsodium
Hai bisogno di un Linux/VM con Android NDK per compilare le librerie libsodium condiviso, e sembra che tu abbia bisogno ramo principale git attuale di compilarlo con l'NDK. Una volta averlo estratto, compilare il codice della libreria Android per ARM, ARMv7 e x86:
./autogen.sh
./dist-build/android-arm.sh # for older ARMv6 devices
./dist-build/android-armv7-a.sh # for the more recent ARMv7 devices
./dist-build/android-x86.sh # for the emulator/x86 devices
# Provide the directory names nkd-build expects
ln -s libsodium-android-armv6 libsodium-android-armeabi
ln -s libsodium-android-armv7-a libsodium-android-armeabi-v7a
ln -s libsodium-android-i686 libsodium-android-x86
Kalium-jni
Per compilare kalium, avrete bisogno SWIG installato. Quindi, è necessario generare il wrapper SWIG C, compilare il codice nativo libkaliumjni per le piattaforme di destinazione, installarlo nella directory libs/app dell'app e includere il JAR.
Nella sottodirectory Kalium-jni/jni, creare l'involucro SWIG e la libkaliumjni.so nativo per il vostro ospite (che saranno necessari per testare la JAR):
./compile.sh
Successivamente, modificare jni/Android.mk
e sostituirlo con /installs/
libsodium ovunque avete compilato, e $(TARGET_ARCH)
con $(TARGET_ARCH_ABI)
quindi eseguire nella directory Kalium-jni:
ndk-build APP_ABI=armeabi,armeabi-v7a,x86
[...]
[x86] Install : libkaliumjni.so => libs/x86/libkaliumjni.so
[armeabi] Install : libkaliumjni.so => libs/armeabi/libkaliumjni.so
[armeabi-v7a] Install : libkaliumjni.so => libs/armeabi-v7a/libkaliumjni.so
Ora la directory contiene libs/
le librerie native di kalium. Copia nel tuo progetto Android.
Infine, è necessario compilare il JAR Kalium:
mvn clean install
Dovrebbe finire in ~/.m2/repository/org/abstractj/kalium/kalium-jni/1.0.0-SNAPSHOT/kalium-jni-1.0.0-SNAPSHOT.jar
. Copialo anche nella tua directory libs
. È accompagnato da javadoc e sorgenti JAR, che puoi aggiungere in Eclipse per ottenere i riferimenti.
Il build di armv7 di sodio non verrà selezionato, armv5 verrà utilizzato per armv5 e armv7. Per cambiarlo, devi rinominare 'libsodium-android-arm' in' libsodium-android-armeabi', e cambia 'TARGET_ARCH' di' TARGET_ARCH_ABI' all'interno di * jni/Android.mk *. Inoltre, puoi aggiungere facilmente x86 all'elenco delle piattaforme supportate: './dist-build/android-x86.sh && ln -s libsodium-android-i686 libsodium-android-x86' e 'ndk-build APP_ABI = armeabi, armeabi-v7a, x86' – ph0b
Grazie @ ph0b, ho aggiornato le istruzioni e aggiunto un nuovo tarball con x86 .so e (si spera) fixed arm7 build – ge0rg
Ho seguito le istruzioni libsodium. Ora dopo aver eseguito lo script do_the_job.sh ho finito con i file .so. Come posso ottenere il .jar? Perché ora non so come usare la libreria. – user1007522