読者です 読者をやめる 読者になる 読者になる

堕(惰)プログラマ開発記録

タイトル変えようかなとも思ってるけれど,思い浮かばない

Android NDKでOpenSSL使う

C++ Android NDK

忘れないうちにメモ.

OpenSSLも普通のライブラリと同じようにincludeするヘッダーと共有ライブラリ(.so)
が必要.(当たり前)
こいつをリンクさせるのに少し戸惑ったのでメモ.

includeするヘッダーの用意

言うまでもなく.適当に手に入るヤツでいいはず.
これについてはどうでもいいので略.

共有ライブラリの入手

OpenSSLが公式でAndroid NDKに対応したビルド方法を提供しているようですがっ!!!
せっかく目の前のAndroid(AVD/実機含む)に入ってるんだったらそれを使っちゃったりしませんか?(面倒くさいからね)

ってなことで,adbで接続可能な状態になっているデバイスからlibssl.soとlibcrypto.soを落としてきましょう.事前にadbでconnectしておきます.

$ adb pull /system/lib/libssl.so <保存先のパス>
$ adb pull /system/lib/libcrypto.so <保存先のパス>
$

はい終了です.

Android.mkの記述

上の方にとりあえず,共有ライブラリ使うよ的な何かをこう書いてあげて…….

LOCAL_PATH := <保存した.soが有るパス>
include $(CLEAR_VARS)
LOCAL_MODULE	:= libcrypto
LOCAL_SRC_FILES	:= libcrypto.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE	:= libssl
LOCAL_SRC_FILES	:= libssl.so
include $(PREBUILT_SHARED_LIBRARY)


後は本命のリンクするソースの直ぐ上辺りに

LOCAL_C_INCLUDES += 
LOCAL_SHARED_LIBRARIES += libcrypto libssl

と追記しておけばおk.

終わりに

ざっと10分ぐらいでメモとして書き付けたので,これで.