簡體   English   中英

如何在ANDROID應用程序中使用openSSL庫

[英]How to use openSSL Library in the ANDROID application

我正在嘗試使用Android NDK在我的Android應用程序中嵌入openssl庫,但我不知道如何使用該庫,所以請任何人都可以告訴我如何使用它請發送源代碼供我參考... ....

相關:

如何在Android / Linux上構建OpenSSL?

你試過這個嗎,它是一個包含在Android中的openssl的獨立版本: https//github.com/fries/android-external-openssl/blob/master/README.android

關於在Android上使用OpenSSL有幾個提示:

  1. 有必要使用NDK工具構建OpenSSL庫,否則它們將與NDK不兼容。 編譯最新的OpenSSL for Android

     CC=~/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc ./Configure android-armv7 export ANDROID_DEV=~/android-ndk-r9//platforms/android-8/arch-arm/usr make build_libs 

    假設這些命令在OpenSSL的源目錄中執行。

  2. 為了將這些庫(ssl和crypto)與NDK中自己的庫一起使用,您需要在jni文件夾中創建其他* .mk文件。 例如:

     include $(CLEAR_VARS) LOCAL_MODULE := ssl-crypto LOCAL_SRC_FILES := openssl-crypto/libcrypto.so include $(PREBUILT_SHARED_LIBRARY) 

    並將它們包含在主Android.mk中:

     include $(LOCAL_PATH)/openssl-ssl/Android.mk 

    並可能添加

     include $(CLEAR_VARS) 

    之后,以避免錯誤。 圖書館將被放入libs/armabi.apk

  3. 如果您將遇到could not load library ... needed by ...錯誤然后它可能意味着您的庫具有版本號的soname。 AFAIK NDK目前無法使用此類庫。 有一種解決方法( Dalvik正在尋找帶有'.0'擴展名的.so文件 - 為什么? ):

     rpl -R -e library.so.1.1 "library.so\\x00\\x00\\x00\\x00" libs obj 

    其中rpl是一個linux字符串替換工具。 在構建之后和運行應用程序之前運行此腳本,它將從項目文件中刪除版本號。 請點擊鏈接獲取更多信息。

    如果使用C ++編譯器,可能會在C函數中出現“未定義的引用”錯誤。 使用extern "C" {}來避免這種情況(有關詳細信息,請參閱“C ++名稱修改”)。

  4. 最后確保清單中有網絡權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM