91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android Studio開發之JNI的示例分析

發布時間:2021-08-11 10:21:32 來源:億速云 閱讀:128 作者:小新 欄目:移動開發

這篇文章主要介紹了Android Studio開發之JNI的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

前言

Android上層應用使用java開發,不過java并不適合密集型運算,比如圖片處理等,遇到密集型運算,一般使用c/c++完成。

Java虛擬機支持調用c/c++代碼,即JNI(Java Native Interface),它提供了若干的API實現了Java和其他語言的通信。為方便android平臺上使用JNI技術,提供了NDK開發包,可以將NDK理解為對JNI的進一步封裝,方便開發使用罷了。

JNI開發方式有多種,可以在Android 源碼中開發,也可以利用其它工具,但都比較煩瑣或者要下載很多東西,Android Studio也支持JNI開發,使用起來也比較方便,本文主要講述下如何使用Android Studio進行JNI開發。

NDK設置

NDK需要下載,一共有兩種方式,建議從Android Studio中下載。

從Android Studio中打開SDK Manager,進入如下界面并且勾選NDK選項。

Android Studio開發之JNI的示例分析

點擊應用,安裝完后重啟Android Studio即可。

也可以從官網下載,然后在Android Studio中設置,這種方式不再講述。

JNI開發

本章中以高斯模糊圖像處理為示例,學習如何進行JNI開發。

1、新建一個Android工程,注意Android Studio對包名的處理,它的默認處理非常地別扭,如果不喜歡這種包名命名方式,可以點擊 Edit 進行更改。

Android Studio開發之JNI的示例分析

2、將工程以Project視圖顯示,方便查找具體文件。

Android Studio開發之JNI的示例分析

3、在項目gradle.properties文件中加上以下代碼,表示我們要使用NDK進行開發。

android.useDeprecatedNdk=true

4、查看項目local.properties中是否有加入ndk和sdk的路徑,如果沒有需要補充。

 ndk.dir=D\:\\android-sdk\\ndk-bundle
 sdk.dir=D\:\\android-sdk

5、在app文件夾下的build.gradle的defaultConfig里加入如下代碼

 ndk {
  moduleName "ImageBlur"  //生成的so文件名字,調用C程序的代碼中會用到該名字
  abiFilters "armeabi", "armeabi-v7a", "x86" //輸出指定三種平臺下的so庫
  ldLibs "log", "jnigraphics", "android" //jni中需要用到的其它庫
 }

6、定義native方法

Android Studio開發之JNI的示例分析

7、生成h文件,打開Android Studio提供的命令行工具Terminal,輸入以下指令。

cd app/src/main/java
javah -jni 包名+類名

本例中報錯,“無法確定Bitmap的簽名”,根據網上搜索結果,需要指出 android.jar 文件的位置才行,于是按如下方法生成 h 文件。

復制代碼 代碼如下:


javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar;. com.test.JniTest

8、建立 JNI 文件夾,復制生成的 h 文件到 JNI 文件夾中來。 選擇File->New->Folder->JNI Folder

Android Studio開發之JNI的示例分析

注意:在彈出創建 JNI 文件夾的對話框中勾選 Change Folder Location,并在下面輸入文件夾名,如下圖所示。

Android Studio開發之JNI的示例分析

一般來說JNI相關文件放在 src/main/jni 之中。

9、新建c文件,實現對應接口,在java代碼中完成 JNI 接口調用。

Android Studio開發之JNI的示例分析

結語

在gradle構建的過程中有可能出現這樣或那樣的異常,查看gradle構建日志,即可知道具體異常,而查看gradle構建日志按鈕比較隱蔽。

Android Studio開發之JNI的示例分析

比如說,使用c文件或c++文件,往往會有一些不同,使用c++文件可能編譯報錯,此時則需要打開gradle console查看具體原因。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Android Studio開發之JNI的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西乌珠穆沁旗| 内江市| 乌什县| 沈丘县| 文山县| 安远县| 阜平县| 应用必备| 从江县| 丽水市| 宕昌县| 嘉定区| 保德县| 莆田市| 吉安县| 垫江县| 融水| 林芝县| 健康| 阿城市| 崇礼县| 大洼县| 全椒县| 东台市| 鄂托克旗| 淮安市| 丹东市| 综艺| 昭觉县| 巨野县| 高安市| 斗六市| 凭祥市| 孝义市| 宁远县| 宁城县| 贞丰县| 绍兴县| 吴川市| 皮山县| 杭锦旗|