2014-11-11 15 views
6

Bir libsodium şifrelemesi yürütmesi gereken bir programım var. Bu kitaplığı libsodium buldum, ancak NDK ile kullanılması gerektiğini düşünüyorum. Bu yüzden NDK ile ilgili eğitimleri okumaya başladım, ancak hala bu kütüphaneyi kullanmaya nereden başlayacağımı bilmiyorum. Birisi bu kütüphaneyi nasıl bütünleştireceğine dair bir fikir vermek için ipucu veya çok yararlı şeyler verebilirse çok mutlu olurdum. Android uygulama içine libsodium entegre etmekandroid eclipse jedisct1/libsodium Nereden yüklenmeli

Teşekkür

cevap

10

şunlar gereklidir:

gibi bağlayıcı Android platformu (ler)
  • Bir JNI için derlenmiş

    Internet'te rastgele kullanıcılara güveniyorsanız (bunu yapmamalısınız!), this tarball'u indirin ve projenize ekleyin. aynak. Aksi takdirde, kendiniz derlemek için aşağıdaki talimatları izleyin.

    libsodium

    Bir Linux kutu/Android NDK ile VM libsodium paylaşılan kütüphaneleri derlemek gerekir ve NDK ile derlemek akım git ana dalı gerekiyor gibi görünüyor. Bunu kontrol kez ARM, ARMv7 ve x86 Android kütüphane kodunu derlemek:

    ./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

    derlemek için kalium, sen SWIG yüklü gerekecektir. Daha sonra, SWIG C sarıcısını oluşturmanız, hedef platformlarınız için libkaliumjni yerel kodunu derlemeniz, onu uygulama libs/dizininize kurmanız ve JAR'ı içermeniz gerekir. kalium-jni/jni alt dizinde

    , Barındırıcınıza için yudum sarıcı ve yerli libkaliumjni.so oluşturmak (bu JAR test etmek için gerekli olacak): Daha sonra

    ./compile.sh 
    

    , jni/Android.mk değiştirmek ve derledik yerde libsodium ile /installs/ değiştirin ve $(TARGET_ARCH_ABI) ile $(TARGET_ARCH) sonra kalium-jni dizinde çalıştırın:

    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 
    

    Şimdi libs/ dizin içeriyor yerli kalium kütüphaneleri. Android projenize kopyalayın.

    mvn clean install 
    

    O ~/.m2/repository/org/abstractj/kalium/kalium-jni/1.0.0-SNAPSHOT/kalium-jni-1.0.0-SNAPSHOT.jar sona olmalıdır:

    Son olarak, potasyum JAR derlemek gerekiyor. Bunu libs dizininize de kopyalayın. Bu javadoc ve referanslar almak için Eclipse'e ekleyebileceğiniz JAR'ler ile birlikte geliyor.

  • +0

    Armv7 sodyum yapınız alınmayacak, armv5 armv5 ve armv7 yapıları için kullanılacaktır. Bunu değiştirmek için, libsodium-android-arm'unu 'libsodium-android-armeabi' olarak yeniden adlandırmalı ve' TARGET_ARCH' içinde 'TARGET_ARCH_ABI' içinde * jni/Android.mk * ile değiştirmelisiniz. Ayrıca, desteklenen platformlar listesine kolayca x86 ekleyebilirsiniz: './dist-build/android-x86.sh && ln -s libsodium-android-i686 libsodium-android-x86' ve 'ndk-build APP_ABI = armeabi, armeabi-v7a, x86' – ph0b

    +1

    Teşekkür ederiz ph0b, talimatları güncelledim ve x86 ile yeni bir tarball ekledim .so ve (umarım) sabit arm7 yapısı – ge0rg

    +0

    libsodium talimatlarını takip ettim. Şimdi do_the_job.sh komutunu çalıştırdıktan sonra .so dosyaları ile bitiyorum. Şimdi nasıl .jar alabilirim? Çünkü şimdi kütüphaneyi nasıl kullanacağımı bilmiyorum. – user1007522