android調用so封裝jni,GitHub - Michelle0716/AndroidJniDemo1: 安卓對c進行so文件打包,并以jni的形式進行調用...

AndroidJniDemo1

安卓對c進行so文件打包,并以jni的形式進行調用

項目中的部分

app : 編譯so文件

jniDemo: 添加運行so文件

開發環境:

android studio 3.0.1

(As3.0以上創建項目,選擇支持c/c++,項目會自動生成需要的配置,不需要在編寫cMakeList文件,創建后,直接運行,即可調用cpp里面c文件的內容)

配置ndk

谷歌官方下載 https://developer.android.google.cn/ndk/downloads/

android studio的sdk manager里下載

(直接在file——project structure——sdk——ndk 點擊download,有可能存在文件缺失,建議官方下載,在ndk里面配置)

打包so

把Native方法提取出來,在一個類里面專門處理,如jniUtil.java

運行app,點擊工具欄 build-make"app",在app/build/intermediates/cmake/debug下可以看到生成的so文件,把他們拷貝出來,給JniDemo使用。

注意:

jniUtil里面的包名要和cpp里面c文件的方法名的包名一致,一般我們現在jniUtil里面寫好方法后,點擊alt+enter生成c方法,這樣不易出錯

調用jni

在jniDemo里面新建文件夾jnilibs,把so文件的幾個文件放在里面,在gradle配置

配置gradle

sourceSets.main{

jni.srcDirs = []

jniLibs.srcDir "src/main/jniLibs"

}

創建方法類(包名類名要和so里面的一致)

在java中創建與上面jniUtil.java相同的包,并把jniUtil.java拷到次目錄。

##備注

3.配置動態連接庫的名稱,在mode的gradle->defaultConfig下增加以下代碼

ndk {

moduleName "JNITest" //輸出的SO文件名稱

abiFilters "armeabi", "armeabi-v7a", "x86"//指定cpu的類型

}

4.加載動態連接庫,在編寫native方法類中新增:

static

{

System.loadLibrary("native-lib");//名字注意,需要跟你的build.gradle ndk節點下面的名字一樣

}

gradle設置so庫名

defaultConfig {

applicationId "com.ndk.****"

minSdkVersion 19

targetSdkVersion 26

versionCode 1

versionName "1.0"

ndk {

moduleName "LJPriject" //輸出的SO文件名稱

abiFilters "armeabi-v7a","x86"//指定cpu的類型

}

}

so庫名Library

System.loadLibrary導入,如果build.gradle ndk沒有配置,那么要和CMakeLists里面一樣,Sets the name of the library后面的名字,否則出現導入庫失敗,查找不到該庫

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372537.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372537.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372537.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ADF任務流:頁面片段的托管bean范圍

介紹 當我們使用ADF任務流并需要實現一些特定于流的業務邏輯或存儲一些與該流相關的信息時,我們通常使用pageFlowScope托管bean。 而且,當我們需要為流的活動(頁面或頁面片段)提供服務時,我們將較短的作用域用于此類托…

Linux平臺下:塊設備、裸設備、ASMlib、Udev相關關系

對磁盤設備(裸分區)的訪問方式分為兩種:1.字符方式訪問(裸設備);2.塊方式訪問 Solaris平臺 : 在Solaris平臺下,系統同時提供對磁盤設備的字符、塊方式訪問。每個磁盤有兩個設備文件名: 一個在/d…

Error0---local variable S is accessed from within inner class; needs to be declared final

local variable S is accessed from within inner class; needs to be declared final在內部類當中不能引用本地變量s,需要被聲明為常量轉載于:https://www.cnblogs.com/Cherrylalala/p/6636642.html

android版本如何修改時間,如何修改Android系統默認時間

相信很多人看到過Android手機或平板顯示XXXX-01-01這個奇怪的日期,沒錯,這就是Android設備的默認日期。當Android設備沒有聯網,無法獲取當前真實時間的時候,就會使用系統默認時間。大部分時候,系統默認時間是Epoch時間…

Java Web應用程序的反跨站點腳本(XSS)過濾器

這是為Java Web應用程序編寫的一個好簡單的反跨站點腳本(XSS)過濾器。 它的主要作用是從請求參數中刪除所有可疑字符串,然后將其返回給應用程序。 這是我以前關于該主題的帖子的改進。 您應該將其配置為鏈(web.xml)中的…

生成建表腳本up_CreateTable

已經很久沒用使用這個腳本了,今天用到,并做修改,增加了生成擴展屬性功能。 Go if object_ID([up_CreateTable]) is not nullDrop Procedure [up_CreateTable] Go /* 生成建表腳本(V4.0) Andy 2017-3-28 */ Create Proc up_CreateTable (obje…

android程序員周記,程序員實習周記100篇

程序員實習周記100篇有效防止雷同!簡單修改即可使用!姓名:XXX學號:20190920008專業:M]指導老師:實習時間:20XX-XX-XX—20XX-XX-XX2019年XX月XX日t8in6Ay8Cw7c HuktN6ttTE12V7A eZu9g e7W1Y Dxqx…

Python之裝飾器

裝飾器功能有兩點:1.首先自動執行裝飾器后面跟的這個函數,并將裝飾器修飾的那個函數名作為參數帶入裝飾器后面函數;2.將裝飾器后面函數的返回值,賦值給裝飾器所修飾的那個函數。舉個例子說明: 1 def outer(func):2 …

在獨立Java應用程序中使用Tomcat JDBC連接池

這是從我們的客人文章W4G伙伴克拉倫斯豪的作者臨春3從A按。 您可能會在文章結尾找到本書的折扣券代碼,僅適用于Java Code Geeks的讀者! 請享用! 在需要數據訪問權限的獨立Java應用程序中使用JDBC連接池時,大多數開發人員將使用com…

Python之路【目錄】 2

http://www.cnblogs.com/wupeiqi/articles/4938499.html轉載于:https://www.cnblogs.com/cp-miao/p/5750211.html

vs2019 缺android sdk,VS2019由于缺少NuGet Microsoft.NET.Sdk.Functions程序包而無法加載項目,但也無法添加此程序包(示例代碼)...

我在解決方案中擁有的一個項目未在VSE2019中加載。它將引發此錯誤:C:MyProgramsrcMyProgram.Functions.csproj : error : The project file cannot be opened by the project system, because it is missing some critical imports or the referenced SDK cannot be…

數據庫事物操作

事務 什么是事務?轉賬:1. 給wc賬戶減1000元2. 給wcxf賬戶加1000元 當給wc賬戶減1000元后,拋出了異常!這會怎么樣呢?我相信從此之后,wc再也不敢轉賬了。 使用事務就可以處理這一問題:把多個對數據庫的操作綁…

通過OpenShift超越云技術

您是否厭倦了為您的應用程序請求新的開發機器? 您是否為應用程序設置新的測試環境感到煩惱? 您是否只想專注于和平開發應用程序而不會一直“沉迷于堆棧”? 我們聽到你的聲音。 我們也去過那里。 不用擔心,OpenShift就在這里&#…

android+4.4+穩定性,新系統新UI!臺電A10h四核安卓4.4.2性能測試

國內著名商標,數碼用戶首選品牌的臺電科技在12月20日全國首發了安卓4.4.2系統,并且運行臺電全新tUI同時,支持從安卓4.2系統OTA一鍵升級至安卓4.4.2系統!作為國內首款升級到目前全球最新的Android4.4.2系統之后,整體性能…

網絡知識點小結

VMware虛擬機三種聯網方法及原理一、Brigde——橋接:默認使用VMnet0 1、原理: Bridge 橋"就是一個主機,這個機器擁有兩塊網卡,分別處于兩個局域網中,同時在"橋"上,運行著程序,讓…

在JUnit中超越核心Hamcrest

在通過JUnit和Hamcrest改進對assertEquals的文章中,我介紹了將Hamcrest與JUnit一起使用 。 然后,我查看了JUnit的內置Hamcrest Core Matcher支持 。 在本文中,我將介紹如何將Hamcrest的非核心匹配器與JUnit一起應用。 這些非核心匹配器默認情…

4pics1word android,4 Pics 1 Word

4 Pics 1 Word是一款非常有意思的看圖猜詞游戲,這款游戲中會給我們四張圖片,玩家需要通過圖片給出的信息來猜出是哪個詞,看西西的介紹你可能以為這是一款千篇一律的看圖猜詞游戲,不過這里猜的不是中文而是英語單詞。4 Pics 1 Word…

頁面內錨點定位及跳轉方法總結

接著上一篇&#xff0c;其實是一個功能&#xff0c;本來感覺挺簡單的一個問題&#xff0c;沒想到遇到兩個坎兒&#xff0c;無語。。。 上一篇是關于scroll事件綁定的問題&#xff0c;這一篇的問題是&#xff1a;點擊錨點跳轉到相應DIV的問題。 最簡單的方法是錨點用<a>標…

基于android的水稻葉片特征測量系統,基于Android的水稻葉片特征參數測量系統

基于Android的水稻葉片特征參數測量系統路艷1&#xff0c;肖志勇2&#xff0c;3&#xff0c;楊紅云2&#xff0c;3*&#xff0c;周瓊1&#xff0c;孫玉婷1【摘要】摘要&#xff1a;【目的】提供基于Android的水稻葉片特征參數測量系統&#xff0c;為農學研究提供精準數據。【方…

JAVA學習繪圖顏色及其筆畫屬性設置字體顯示文字

package com.graphics;import java.awt.*; import java.awt.geom.Rectangle2D; import java.util.Date;import javax.swing.*;/*** * author biexiansheng**/ public class DrawString extends JFrame{private Shape rect;//矩形對象private Font font;//字體對象private Date …