AS使用jni並且c 中使用第三方so庫

2021-07-15 21:01:01 字數 2069 閱讀 7515

之前在eclipse中載入jni並且jni中使用到了第三方庫的時候很簡單只要在android.mk檔案中配置就可以了

例如:

對應的android.mk檔案:

local_path

:= $(call my-dir)

local_c_includes := \

$(local_path) \

$(local_path)/include \

local_src_files:= \

com_protocol_opensslproxy.cpp \

include

$(build_shared_library)

include

$(clear_vars)

local_module

:=crypto

local_src_files

:=libcrypto.a

include

$(prebuilt_static_library)

include

$(clear_vars)

local_module

:=ssl

local_src_files

:=libssl.a

include

$(prebuilt_static_library)

include

$(clear_vars)

local_src_files += $(local_src_files)

local_c_includes += $(local_c_includes)

local_ldlibs +=-llog -lz

local_static_libraries += crypto ssl

local_module_tags

:= optional

local_module

:= libprotohandler

include

$(build_shared_library)

使用時倒入這三個生成的庫檔案就可以了,度娘那有很多 就不再過多的贅述了。

現在我用android studio開發了,之前的**自然要移植到studio上邊來,這時候問題就來了。開始移植的時候以為studio相容eclipse的使用方式,直接弄過來了,一執行果然沒有成功。因為android.mk檔案根本沒有被呼叫。

然後又度娘了不少studio的jni呼叫,然後發現網上的大多都是簡單的呼叫,只是寫幾句c/c++**。然後gradle中配置下系統依賴庫和生成的名字,就完事兒了,並沒有我想要的使用第三方的庫,而且使用一下使用兩個的方法。然後坑了不少時間。後來發現要使用gradle-experimental外掛程式才能解決這個問題。現在記錄一下以備不時之需

gradle檔案配置:

專案:

然後就執行成功了!

JNI 在c中使用log 和生成so庫

ndk配置ldlibs log z m ndk sourcesets abifilters 指定生成哪幾種.so檔案 sourceset配置生成.so檔案的位置 使用.so檔案 c已經編譯成.so檔案的情況下,將生成的.so檔案複製到專案的libs目錄下,然後刪除jni檔案下面的檔案,再執行的時候你...

C 中使用MVC架構(三)

定義乙個基本業務邏輯介面ibaseservice,作各業務訪問的總中介,也就是說檢視層只通過ibaseservice的介面物件,訪問業務層,具體訪問哪個業務,是通過注入ibaseservice的實現類來完成的,可根據需要生成具體業務類,實現介面中定義的抽象方法。業務邏輯層通過對應資料實現類,訪問模型...

在Eclipseme中使用第三方庫

由於工作關係,需要研究tinyline這個第三方的j2me開發包。我建立project時,把tinyline.zip放在了project的 lib目錄下面,編譯時,可以通過。但是執行時,總是會出現midpsvgcanvas這個類找不到的異常。幾經周折,才發現,用到的tinyline的第三方庫中的cl...