1. 程式人生 > >JIN學習一、Android使用已有C/C++程式碼、第三方SO庫的方法

JIN學習一、Android使用已有C/C++程式碼、第三方SO庫的方法

1.配置好NDk編譯環境(這個Google一下,:))

2.將已有C/C++程式碼,編譯成SO檔案

3.Eclipse中新建Android工程,建立一個jni目錄。如下所示


4.在jni目錄建立C/C++檔案,裡面呼叫步驟2函式,或者第三方SO的函式

5.建立Android.mk檔案,內容為:

LOCAL_PATH := $(call my-dir)
# Link libXXX.so
include $(CLEAR_VARS)  
LOCAL_MODULE :=XXX  
LOCAL_SRC_FILES := libXXX.so  
#LOCAL_SRC_FILES := /jni/libXXX.so  
include $(PREBUILT_SHARED_LIBRARY)  

include $(CLEAR_VARS)
LOCAL_MODULE    := XXXAgent
LOCAL_SRC_FILES := XXXAgent.cpp
LOCAL_SHARED_LIBRARIES := XXX
LOCAL_LDLIBS := -llog 
include $(BUILD_SHARED_LIBRARY)

將XXX替換為編譯出的SO或者第三方SO的名字

6.將jni目錄下的C/C++編譯成Android通過JNI呼叫的SO檔案,這裡名字為  libXXXAgent.so

7.Android工程中使用時,首先載入一下用到的SO庫,即可正常使用了。

System.loadLibrary("XXX");
System.loadLibrary("XXXAgent");

說明:這裡的重點是如何呼叫第三方SO庫,所有部分細節沒有表述。比如Javah生成相關標頭檔案,jni呼叫等。

補充:上面步驟可能比較多,這裡舉一個例子加以說明。某天,你得到一個第三SO庫,名字就叫XXX。你發現裡面的功能正好是你Android專案裡需要的,可以拿來就用。這個訊息令你高興萬分啊那是。但是,如何在Android裡使用呢,XXX庫裡的呼叫約定不符合JNI規定,是不能直接來用的。哈哈,想到了,建立一個XXXAgent.so。它的呼叫採用JNI,然後在實現裡呼叫第三方SO就可以了。以上就是大概的思路。

SO檔案是如何自動安裝到虛擬機器或者手機上呢,NDK生成的SO檔案會自動放到libs/armeabi目錄下。而此目錄下的SO檔案都會自動打包到APK,安裝後釋放到/data/data/專案名字/lib/下。這裡XXXAgent.SO檔案生成libs/armeab,XXXAgent.SO依賴XXX檔案,XXX檔案自動拷貝到libs/armeab下。(XXX檔案放在jni下,和Android.mk同級,這個是和Android.mk裡的設定配合使用的)

相關推薦

Android Studio配置CMakeLists.txt來載入第三方SO

要使用第三方庫首先當然是載入第三方庫的標頭檔案 使用include_directories來包含第三方標頭檔案,多個路徑用空格隔開,新增在cmake_minimum_required的下面 include_directories(xxx/include ../xxx)  例如

JIN學習Android使用C/C++程式碼第三方SO方法

1.配置好NDk編譯環境(這個Google一下,:)) 2.將已有C/C++程式碼,編譯成SO檔案 3.Eclipse中新建Android工程,建立一個jni目錄。如下所示 4.在jni目錄建立C/C++檔案,裡面呼叫步驟2函式,或者第三方SO的函式 5.建立Androi

Android使用C/C++程式碼第三方SO方法JIN學習

1.配置好NDk編譯環境(這個Google一下,:)) 2.將已有C/C++程式碼,編譯成SO檔案 3.Eclipse中新建Android工程,建立一個jni目錄。如下所示 4.在jni目錄建立C/C++檔案,裡面呼叫步驟2函式,或者第三方SO的函式 5.建

【Django2x 學習筆記 05】面向api(模板使用者請跳過),操作資料庫的查詢增加修改

根據部落格https://blog.csdn.net/itas109/article/details/80898943 才知道如何查詢已有資料庫欄位。 Django官方文件https://docs.djangoproject.com/zh-hans/2.0/寫的真爛,愣是沒找到如何

React-Native開發二 Android 專案整合React-Native

1 前言 之前寫過一篇RN的環境搭建教程和新建一個新的RN專案的文章 https://blog.csdn.net/qiyei2009/article/details/78820207 但是其實在實際開發中,在已有的android專案中整合RN情況更普遍,這篇文章就是一個怎麼在已有

Android多媒體學習Android中Image的簡單例項。

在多媒體應用中,Image是最基礎的功能模組,接下來我們將看看在Android中是如何獲取和儲存Image的。Android內嵌的Image獲取和儲存功能,可以讓我們對於整個媒體框架有個比較全面的瞭解,同時為audio和video的學習打下基礎。 一、Image的獲取可以通過

如何將自己寫的C++程式碼封裝成.so以供其他人呼叫

1.通過自己寫的canbus函式程式碼,先生成一個libcanbus.so連結庫 canbus.cpp程式碼如下: 編譯指令如下: $ g++ -Wall -g -fPIC -c canbus.cpp -o canbus.o $ g++ -

微信小程式學習筆記(三)----初識小程式程式碼輪播圖實現

從這一節開始我們就開始接觸小程式前臺程式碼了,其實前臺邏輯還是比較簡單的,學習難度比學習一個前端框架難不了多少,記得以前一開始學前端框架的時候,流程就是:熟悉一下--檢視元件--找到要用的--複製貼上,其實對於大部分人來說,小程式前臺也是一樣。 首先,我們可以先看下小程式的

學習種矩形通過css定義寬高等比例自適應的方法

參考資料1:https://juejin.im/post/5b0784566fb9a07abd0e14ae 參考資料2:https://blog.csdn.net/u014607184/article/details/52661760 參考資料3:https://segmentfault.c

JNI開發() 簡單的C程式碼打包成SO以及專案如何呼叫SO

前段時間開發過程中用到了簡單的JNI使用,當時發現很多網上文章總有這樣那樣的問題,最近趁時間充裕就記錄下來,以供記憶和交流。 JNI環境配置 這裡就不做多講,百度一下,把腳跨過牆就好。 寫

獲取android安裝的應用PackageInfo啟動第三方APP應用

獲取android已安裝的應用PackageInfo 獲取已安裝的應用 public static ArrayList<AppInfo> getInstalledApps(C

4.2Android Studio壓縮你的程式碼和資源

為了讓你的APK檔案儘可能的小,你需要在構建的時候開啟壓縮來移除無用的程式碼和資源。 程式碼壓縮可在ProGuard中使用,可以檢測和清除無用的類,變數,方法和屬性,甚至包括你引用的庫。ProGuard同樣可以優化位元組碼,移除無用的程式碼,並且模糊剩下的類,

javaAndroid銀行卡校驗(程式碼copy過去直接用)

親愛的同仁們:         最近專案中要本地校驗銀行卡賬號,後面總結出來,分享大家。         原理:         // Luhm校驗規則:16位銀行卡號(19位通用):// 1.將未帶校驗位的 15(或18)位卡號從右依次編號 1 到 15(18),位於奇數

JNI入門教程1---Android studio 下JNI程式設計例項並生成so

參考地址: https://www.cnblogs.com/jymblog/p/5526865.html                   https://www.jianshu.com/p/a

Android平臺下JNI呼叫第三方so

 首先說一下在網上查詢資料時,對於呼叫第三方so庫,有人說有兩種方法: 1.    對於so庫的API符合JNI格式(即使用javah指令生成的標頭檔案中那種格式),可以在Java程式碼中宣告它對應的native方法,直接調  用。 &

記錄次失敗的向git提交程式碼,和解決的方法。(首次建立倉庫)

背景: 向git push程式碼(建立一個新的倉庫) 做法: 在github建立一個新的倉庫------>本地新建資料夾------->依次執行了下面的命令 git init git clone git checkout -b master

Word 藉助VBA鍵實現插入交叉引用 Onenote程式碼高亮的實現方法

最近寫論文的時候,經常需要向上或向下插入題注的交叉引用,word 自帶的介面往往需要操作多次,才能實現插入。而平時使用較多的只是交叉引用附近的題注,比如如圖1.1所示,在圖1.1中等,距離較遠的引用則可以直接複製已經存在的交叉引用項,複製的項只要保留原格式複製,仍然是存在超連結的。所以可以藉助 VBA 寫一個

android studio中使用第三方so(終結版)

    安卓開發中,經常會用到第三方C++庫,然後不知道是我對系統不熟悉的原因,還是安卓支援C++開發本來就比較弱,反正其中踩了很多坑。     android studio 版本 3.0.1,  在PC上安裝android studio3.1.2,就是配置不成功,後面再筆

Android-版本6.0許可權申請AndPermission第三方開源

AndPermission AndroidStudio使用方法,gradle一句話遠端依賴compile 'com.yanzhenjie:permission:1.0.5'11 Or Maven: <dependency> <groupId>

Android NDK編譯本地檔案以及引用第三方so檔案

引用第三方的so檔案很簡單,在工程目錄的libs資料夾下新建資料夾armeabi,以及armeabi-v7a,然後將要引用的so檔案分別複製到這兩個 資料夾下就行了。但是有時候我們會使用第三方開源演算法,或者本地的底層程式碼,那麼在呼叫這些程式碼的介面時就需要將這些程式碼編