NDK開發筆記——Android使用openssl
Android自身使用了谷歌的openssl分支boringssl,因此,如果要在Android中使用openssl,需要編譯成靜態庫整合在自己的程式當中。
為Android編譯openssl,首先需要獲取到openssl的原始碼和Android ndk,利用ndk中的交叉編譯工具鏈編譯出需要的openssl庫。具體的配置可參照https://www.jianshu.com/p/b790c548e787,我使用的ndk版本是r17b,openssl版本是1.1.0h
這裡需要注意的是的Android NDK可能會缺少標頭檔案,交叉工具鏈預設的包含目錄是沒有需要的包含目錄的,需要手動新增
export C_INCLUDE_PATH='$ANDROID_NDK_ROOT/sysroot/usr/include/'
這裡還可能遇到缺少asm目錄下的標頭檔案,這些標頭檔案可以在ndk目錄裡找到對應工具鏈的asm目錄拷貝出去,編譯時缺少的標頭檔案都可以在該資料夾下搜尋並複製到對應目錄。
編譯完之後可能會有連結的問題,如
./libcrypto.a(bio_cb.o):bio_cb.c:function BIO_debug_callback: error: undefined reference to 'stderr'
這個問題跟編譯選擇的對應Android版本有關,在NDK的stdio.h中有如下的定義
#if __ANDROID_API__ >= __ANDROID_API_M__ extern FILE* stdin __INTRODUCED_IN(23); extern FILE* stdout __INTRODUCED_IN(23); extern FILE* stderr __INTRODUCED_IN(23); /* C99 and earlier plus current C++ standards say these must be macros. */ #define stdin stdin #define stdout stdout #define stderr stderr #else /* Before M the actual symbols for stdin and friends had different names. */ extern FILE __sF[] __REMOVED_IN(23); #define stdin (&__sF[0]) #define stdout (&__sF[1]) #define stderr (&__sF[2]) #endif
由於openssl編譯時沒有android api巨集,當編譯的目標版本小於android m也就是23的時候,編譯會報錯,這時編譯指定android的版本大於23即可,這樣做會對相容性產生什麼影響尚未驗證。
編譯成功生成了.a檔案之後,將其放入app的工程中,可能也會產生各種編譯的錯誤,這裡需要調整sdk的版本和最小相容版本,具體能相容到哪個版本待驗證。
編譯成功之後執行時可能會產生java.lang.UnsatisfiedLinkError錯誤,大意是64位程式引用32位庫的問題,
在生成的apk的lib中會有各個平臺的資料夾比如armv8這裡需要在build.gradle中寫入
android { ...defaultConfig { ... ndk { abiFilter("armeabi-v7a"來過濾掉其它的庫) } } }
在gradle.properties中新增
android.useDeprecatedNdk=true
相關推薦
Ndk開發筆記
pla 框架 miss start 它的 ndk plus ner 通過 <pre name="code" class="cpp">ndk開發: 1.編譯android本地程序的二種方法.q 2.安裝ndk編譯工具. 3.編寫android.apk程序. 4
NDK開發筆記——Android使用openssl
Android自身使用了谷歌的openssl分支boringssl,因此,如果要在Android中使用openssl,需要編譯成靜態庫整合在自己的程式當中。為Android編譯openssl,首先需要獲取到openssl的原始碼和Android ndk,利用ndk中的交叉編譯
NDK開發筆記---CMake構建JNI
從AndroidStudio2.2版本開始,預設使用 CMake 的方式來構建NDK專案,也可以使用 ndk-build 的方式,這裡我們主要介紹 CMake 的方式。 首先,介紹 NDK
NDK開發筆記(一)---環境搭建
安裝NDK開發環境: 結果: 執行 cygwin ,在彈出的命令列視窗輸入: cygcheck -c cygwin 命令,會打印出當前 cygwin 的版本和執行狀 態,如果 status 是 ok 的話,則 cygwin 執行正常。 然後依次
Android NDK開發及OpenCV初步學習筆記
-a cep cto strip 鏈接 jni 加載 idt jniexport https://www.jianshu.com/p/c29bb20908da Android NDK開發及OpenCV初步學習筆記 Super_聖代 關註 2017.08.19 00:
Android逆向基礎筆記—Android NDK開發2之Windows下的gcc手動編譯(交叉連編譯)和利Linux Ubuntu系統下的交叉工具鏈手動編譯
一、交叉工具鏈 這些工具都在NDK的路徑下:E:\Android\android-ndk-r13\toolchains\arm-linux-androideabi-4.9\prebuilt\windo
Android學習筆記之:NDK開發環境配置
NDK 即Native Development Kit,因此又被Google稱為“NDK”。 1,提高程式的效能:把需要高效能的應用邏輯使用C開發, 2,程式程式碼進行保護:因為反編譯C/C++
Android逆向基礎筆記—Android NDK開發4之Android studio NDK自動編譯
這部分就是最後的部分了,為什麼要寫Android studio呢。大家知道,eclipse 到了現在,已經不被Google支援了,所以現在最好的開發就是利用Android studio。雖然說,網上有
微信公眾號開發筆記1(nodejs開發的)
.post err log 加密 課堂 是我 targe 分享 gty 本篇記錄了微信公眾號開發的一些筆記 一、微信服務器與我們服務器的交流 微信開發者擁有自己的服務器,在我們服務器上可以與微信服務器進行交流。既然可以交流,那就必定需要前提條件(微信認證),也就是說,只有自
張高興的 Windows 10 IoT 開發筆記:使用 ULN2003A 控制步進電機
uln2003 zhang windows iot ges 開發 ima dem win GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/ULN2003A 張高興的 Wind
張高興的 Windows 10 IoT 開發筆記:三軸數字羅盤 HMC5883L
cnblogs -i mas https http png 開發 target 分享 註意,數據不包含校驗,準確的來說我不知道怎麽校驗,但方向看起來差不多是對的。。。 GitHub:https://github.com/ZhangGaoxing/windows-io
Android NDK 開發總結
設置 .text nbsp def runt 編寫 abi 文件的 targe 一.安裝配置環境 1.安裝Android Studio,下載路徑https://developer.android.com/studio/index.html?hl=zh-cn。我下載的是Win
JNI/NDK開發指南(2)
清除 onu 呼叫 rac 個人理解 運行 ati clas 函數 1.生成動態庫.so,存放於手機的system/lib/中(APP怎樣將.so存入該文件夾,奇怪?????),Java層調用JNI的類會運行靜態代碼System.loadLibrary("***")將手
微信開發筆記-調用自定義分享接口
彈出菜單 菜單 開發筆記 n-1 onf target ready 模式 時間戳 文章來自:http://www.cnblogs.com/ysyn/archive/2015/07/23/4665897.html 引言: 工作中開發微信網站,簡稱微網站。由於微
Android開發筆記(12)——ListView & Adapter
dba 只顯示一行 -1 ngs 而已 整理 adapt array xxx 轉載請註明:http://www.cnblogs.com/igoslly/p/6947225.html 下一章是關於ListFragment的內容,首先先介紹ListView的相關配置,理解L
android NDK開發中,用Cygwin調試本地代碼時報錯“Another debug session running,Use --force to kill it”原因及解決的方法
能夠 att cati kill 時報 andro 使用 deb gdb調試 在使用ndk-gdb調試的時候。運行$NDK/ndk-gdb --verbose報錯“Another debug session running,Use --force to kil
微信二次分享功能開發筆記
如何 設置 _id 朋友 start 還需要 str one data 最近的一個項目在進行二次分享的時候出現了問題,定制的文案描述及圖片都不能在分享後出現,如圖所示: 經過十八般折騰,終於變成我想要的樣式了,如圖:
Kinect開發筆記之三Kinect開發環境配置具體解釋
pc2 1.0 微軟 .aspx 技術分享 連接 實驗 family 不同 0、前言: 首先說一下我的開發環境,Visual Studio是2013的,系統是win8的64位版本號,SDK是Kinect for windows
CoolBlog開發筆記第4課:數據庫模型設計
的人 model類 set 來看 aid 想想 目錄 targe init 教程目錄 1.1 CoolBlog開發筆記第1課:項目分析 1.2 CoolBlog開發筆記第2課:搭建開發環境 1.3 CoolBlog開發筆記第3課:創建Django應用 前言 我新書《
Vue-cli開發筆記一----------項目的結構
web node lin sch scrip base via 裏的 ack 配置文件package.json: 搜索了配置的原理:https://segmentfault.com/a/1190000000344102 裏面講到:npm會在package.json文件中找s