2012-01-30 17 views
5

Bir Android uygulaması için en yeni OpenSSL (1.0.0g) sürümünü oluşturmam gerekiyor. https://github.com/fries/android-external-openssl tarafından verilen örneği takip etmeye çalışıyorum, ancak bunu yapamıyorum.Windows için Android NDK için harici OpenSSL kütüphanesi yapılamıyor/Cygwin

Tam ve yeni bir Cygwin ile Windows 7 Professional (64 bit) çalıştırıyorum. Android SDK ve NDK'yı kurdum ve NDK'nın hello-jni örnek uygulamasını başarıyla oluşturup çalıştırabilirim.

Merhaba-openssl adlı yeni bir örnek NDK uygulaması oluşturdum. jni dizininde, openssl dizinini oluşturdum. android \ android-ndk \ numunelerin \ \ merhaba-openssl:

jni 
+- openssl 
    +- apps 
    +- crypto 
    +- include 
     +- openssl 
    +- ssl 

Sonra jni yılında Android.mk dosyayı modifiye Orada, bana c Bu ağaç yapısı verdi, https://github.com/fries/android-external-openssl/zipball/master fermuarını OpenSSL dosyaları dahil etmek amacıyla dizin: Ben ndk-yapı yürütmek Şimdi ne zaman

subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \ 
    openssl \ 
)) 

include $(subdirs) 

, birkaç .c dosyaları derler, ama sonra hızla başarısız:

10 Ben kripto/Android.mk içinde "/ yukarıdaki LOCAL_C_INCLUDES için dahil JNI ve JNI add" söyleyene hangi http://osdir.com/ml/android-ndk/2010-07/msg00424.html bulundu, ancak ben bunu başarmak için kullanması gereken sözdizimi çözemiyorum.

Ayrıca, doğru dizin yapısına sahip olduğumu anlayamıyorum.

Sunulabilir herhangi bir yardım için içtenlikle teşekkür ederim.

Teşekkürler!

cevap

12

Bu sorunu, https://github.com/fries/android-external-openssl'u terk ederek ve https://github.com/guardianproject/openssl-android kullanarak çözdüm.

Daha yeni bir OpenSSL (1.0.0a) tabanlıdır ve herhangi bir değişiklik yapılmadan NDK'da oluşturulur.

Bu kütüphaneleri bir Android uygulamasında kullanabilmek için bunları yeniden adlandırmanız gerektiğini unutmayın. Uygulamanızdaki libssl.so ve libcrypto.so dosyalarını basit bir şekilde eklerseniz, System.LoadLibrary ("crypto") ve System.LoadLibrary ("ssl") yöntemini çağırırsanız, Android sisteminde bulunan OpenSSL kitaplıklarını alırsınız. özel kütüphaneleriniz.

Bunu yapmak için, her bir Android.mk dosyasında tam kelime arama yapın ve ("libssl" -> "libsslx" ve "libcrypto" -> "libcryptox" olarak değiştirin) (örneğin,/kripto/ssl ve/apps).

Sonra Android uygulamasında, SystemLoadLibrary ("cryptox") ve System.LoadLibrary ("sslx") aramak

+0

Merhaba, ben yaptığı gibi, ben openssl-android kullanılan aynı şeyi yapmaya çalışıyorum, kaynakları oluşturdu ve .so dosyalarımı aldım ancak projemde kullanırken karşılaştığım sorunlar, bu kütüphaneleri kullanarak .c dosyası yazdım, onu jni klasörüne koyup 2 tane daha paylaştığımı anlatan bir Android.mk dosyası yazdım. kütüphaneler, her şey iyi derler ama bir UnsatisfiedLinkError ile çalışma zamanında çöküyor, konuşabilseydik harika olurdu. – onizukaek