我想在我的Android應用程序中使用Android NDK嵌入openssl庫,但我不知道如何使用該庫,因此請任何人告訴我如何使用那請發送源代碼,供我參考.......如何在ANDROID應用程序中使用openSSL庫
相關:
How to build OpenSSL on Android/Linux ?
我想在我的Android應用程序中使用Android NDK嵌入openssl庫,但我不知道如何使用該庫,因此請任何人告訴我如何使用那請發送源代碼,供我參考.......如何在ANDROID應用程序中使用openSSL庫
相關:
How to build OpenSSL on Android/Linux ?
你有沒有試過這種,它是隨機配備在Android中的OpenSSL一個獨立的構建: https://github.com/fries/android-external-openssl/blob/master/README.android
我將介紹幾個技巧有關使用OpenSSL與Android:
有必要建立使用NDK工具OpenSSL庫,否則他們將與NDK不兼容。 Compiling the latest 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的源目錄中執行。
爲了使用這些庫(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
。
如果您遇到錯誤could not load library ... needed by ...
這可能意味着您的圖書館具有版本號的soname。 AFAIK ndk目前無法與此類圖書館合作。有一種變通方法(Dalvik is looking for .so file with '.0' extension - why?):
rpl -R -e library.so.1.1 "library.so\x00\x00\x00\x00" libs obj
其中rpl
是Linux的字符串替換工具。在構建之後和運行應用程序之前運行此腳本,它將從項目文件中刪除版本號。點擊鏈接查看更多信息。
如果您使用C++編譯器,您的C函數中可能會出現「未定義引用」錯誤。使用extern "C" {}
來避免這種情況(有關更多信息,請參閱「C++ name mangling」)。
最後不要忘記包含使用網絡進入清單的權限。
我們實際上現在維護我們自己的這個版本:https://github.com/guardianproject/android-ffmpeg – 2013-02-22 19:27:28
我們正在使用的guardianproject提供OpenSSL的構建..我現在想升級由於最近的android playstore安全警報導致的openssl版本。我按照Readme文件中的步驟進行了操作,但卡住了:5)在構建之前進行清理: m -j16 clean-libcrypto clean-libssl clean-openssl clean-ssltest。 據我所知,當你從源代碼構建android時,m和mm是可用的,所以我沒有找到m:命令,並在下一步中找到mm。任何幫助是極大的讚賞! – Nonos 2016-04-04 16:26:15
@Nonos你有沒有得到任何解決方案來更新OpenSSL的版本? 我也陷入了第5步。如果你能幫助我,Herte是我的[問題](http://stackoverflow.com/questions/36493508/how-to-update-openssl-version-in-csipsimple)。 – 2016-04-19 06:56:42