2012-01-30 9 views
5

Androidアプリケーション向けに最新のOpenSSL(1.0.0g)をビルドする必要があります。私はhttps://github.com/fries/android-external-opensslで与えられた例に従おうとしていますが、それを構築することはできません。Windows/Cygwin上のAndroid NDK用外部OpenSSLライブラリを構築できません

私はWindows 7 Professional(64-bit)を実行していて、最新かつ完全なCygwinを使用しています。私はAndroid SDKとNDKをインストールしており、NDKのhello-jniサンプルアプリケーションを構築して実行することができます。

私はhello-opensslという新しいサンプルNDKアプリケーションを作成しました。 jniディレクトリには、opensslというディレクトリが作成されています。そこに、私はCの下で私にこのツリー構造を与えたhttps://github.com/fries/android-external-openssl/zipball/masterを、解凍:アンドロイド\アンドロイド - NDK \サンプル\ \ハロー-opensslの:

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

私は、JNIAndroid.mkファイルを修正しましたOpenSSLのファイルをインクルードするための試みでディレクトリ:

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

include $(subdirs) 

は、私はNDKビルドを実行したときに今、それはいくつかの.cファイルをコンパイルしたが、その後すぐに失敗します。

Compile thumb : crypto <= cryptlib.c 
In file included from jni/openssl/crypto/cryptlib.c:117: 
jni/openssl/crypto/cryptlib.h:65:18: error: e_os.h: No such file or directory 
jni/openssl/crypto/cryptlib.h:72:28: error: openssl/crypto.h: No such file or directory 

は、私は私が暗号/ Android.mkで、私は、私はこれを達成するために使用する構文を把握することはできません「 JNIとJNI /上記LOCAL_C_INCLUDESに含まを追加」するように指示され、http://osdir.com/ml/android-ndk/2010-07/msg00424.htmlを発見しました。

私は正しいディレクトリ構造を持っていることもわかりません。

私は心から歓迎します。

ありがとうございます!

答えて

12

私はhttps://github.com/fries/android-external-opensslを放棄して代わりにhttps://github.com/guardianproject/openssl-androidを使用してこの問題を解決しました。

これは、最新のOpenSSL(1.0.0a)をベースにしており、NDKに変更を加えずに構築されています。

これらのライブラリをAndroidアプリで使用するには、名前を変更する必要があります。アプリケーションにlibssl.soとlibcrypto.soを含めて、System.LoadLibrary( "crypto")とSystem.LoadLibrary( "ssl")を呼び出すと、Androidシステムに含まれているOpenSSLライブラリが取得されます。あなたのカスタムライブラリ。

これを行うには、それぞれのAndroid.mk(つまり、/ crypto、/にある "libssl" - > "libsslx"、 "libcrypto" - > "libcryptox" ssl、および/ apps)。

は、その後、あなたのAndroidアプリでは、こんにちは

+0

SystemLoadLibrary( "cryptox")とSystem.loadLibraryを( "SSLX")を呼び出して、私はあなたがやったと同じことをやろうとしている、私は、opensslの-アンドロイド使用これらのライブラリを使って.cファイルを書き、jniフォルダに入れ、Android.mkファイルを書いて、私も2つの共有ファイルを使用していることを伝えますライブラリはすべてうまくコンパイルされますが、実行時にUnsatisfiedLinkErrorでクラッシュすると、話すことができれば素晴らしいことになります。 – onizukaek

関連する問題