2014-11-11 12 views
6

Ho un programma che deve eseguire una crittografia libsodium. Ho trovato questa libreria libsodium ma penso che debba essere utilizzata con NDK. E così ho iniziato a leggere tutorial su NDK ma non so ancora da dove cominciare a usare questa libreria. Se qualcuno potesse dare un suggerimento o cose molto utili per dare un'idea su come integrare questa libreria, sarei così felice.android eclipse jedisct1/libsodium da cui iniziare

Grazie

risposta

10

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.

+0

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

+1

Grazie @ ph0b, ho aggiornato le istruzioni e aggiunto un nuovo tarball con x86 .so e (si spera) fixed arm7 build – ge0rg

+0

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