建立android中使用的openssl靜態庫

2021-06-07 15:46:49 字數 1247 閱讀 7894

我的環境:ubuntu12.04, ndkr8 

這個專案可以在網上找到

是最近需要將openssl庫編譯成靜態庫給android使用,由於android自帶的openssl靜態庫不支援engine機制,所以只好自己找方法來編譯了。

編譯首先需要安裝ndk,這個不多說了

安裝好ndk後

開始解壓guardianproject-openssl-android,(你可以給這個資料夾改個名字),我把名字換成了android-openssl

cd android-openssl

這裡需要修改幾處**:

androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>

package="org.openssl.android"

android:versioncode="1"

android:versionname="1.0">

這裡我用的android版本是10  所以裡面新增10

default.properties

target=android-10

然後進入jni資料夾

修改裡面的

這裡面的abi可有可無,隨自己的心情

接下來就需要修改幾個重要的make檔案

首先修改android-openssl/crypto/android.mk:

要編譯靜態庫,所以把include $(build_shared_library) 修改為 include $(build_static_library)。

我們不需要編譯host庫,所以可以把include $(build_host_shared_library)之類的都注釋掉。

注意這裡檔案裡面有3個include哦   看見有host注釋的就不需要管了,只要修改第乙個就行

同樣的我們還需要修改ssl/android.mk:

要編譯靜態庫,所以把

include $(build_shared_library) 

修改為include $(build_static_library)。

host的不需要修改

最後儲存檔案  

回到android-openssl目錄  ndk-build,最後可以在obj資料夾下面看到了這兩個靜態庫檔案了  

補充,如果需要動態庫 的話 直接編譯就可以 不需要多餘的修改

Android中使用全屏

在開發android研發時,最開始一般都會有個全屏顯示的閃屏,下面提供實現全屏的兩種方法 1 通過 實現 去掉標題欄 this.requestwindowfeature window.feature no title 全屏顯示 this.getwindow setflags windowmanage...

使用op 復合形式 替代op 獨身形式 的優點

考慮下面的類 class rational 這個例子的好處就是維護的時候更加方便,只要修改op 復合形式 就可以了。主要的優點有兩個 1.可以提高效率,op 不需要產生臨時物件,減少了臨時物件析構跟構造的開銷。op 直接返回的是前面已經構造好的物件。2.可以為客戶提供兩種形式,客戶可以自行在效率與便...

Android中使用AsyncTask實現非同步載入

使用該類可以在子執行緒中更新ui,具體表現在和handler相比,其封裝和簡化了非同步操作的過程 一般需要重寫乙個類來繼承和實現asynctask類,如public myasynctask extends asynctask,三個引數一次表示 1,params 啟動任務時輸入引數的型別 2,prog...