日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用android studio 生成 JNI需要的动态库so文件

發(fā)布時間:2023/12/31 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用android studio 生成 JNI需要的动态库so文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

JNI:? Java Native Interface,? 提供了java語言和其他語言(例如c和c++)進行相互調(diào)用的方式。

本文是用java調(diào)用c生成的so模式。其中,編譯so文件過程如下:

1)打開android studio, 新建一個空的

點擊next, name中輸入"test",點擊finish。

創(chuàng)建完后,切換到project模式,顯示如下:

2、編寫帶有native聲明的java類

在test->app->src->main->java->com.sf.test目錄,右鍵新建java類,名稱為"Test"

雙擊Test,添加如下內(nèi)容:

package com.sf.test;

public class Test {

public native void displayHelloWorld();

static {
System.loadLibrary("Test");
}
}

native方法 displayHelloWorld() 為我們在java中調(diào)用的函數(shù),需要在c語言中重寫來實現(xiàn)。

System.loadLibrary 后面跟的是動態(tài)庫的名字。

3、利用javac編譯成java類

右鍵com.sf.test.選擇”open in terminal“,可以看見android studio底部出現(xiàn)終端調(diào)試助手,并且已經(jīng)切換到相關(guān)目錄下。

執(zhí)行命令, javac? Test.java

生成相應(yīng)的class類(Test.class)

4、利用javac生成相應(yīng)的h頭文件

?在main目錄下新建jni文件夾,保存相關(guān)c和h文件,以及編譯使用的文件。

命令為:

?javac Test.java -h? ../../../../jni???? (將生成的h文件保存到j(luò)ni目錄下)

此時可以查看到main/jni/目錄下多了一個文件:?com_sf_test_Test.h,頭文件中內(nèi)容為自動生成:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_sf_test_Test */

#ifndef _Included_com_sf_test_Test
#define _Included_com_sf_test_Test
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_sf_test_Test
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_sf_test_Test_displayHelloWorld
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

其中JNIEXPORT void JNICALL Java_com_sf_test_Test_displayHelloWorld
(JNIEnv *, jobject);
為從java轉(zhuǎn)換到c后的調(diào)用函數(shù),對應(yīng)Test.java中的 displayHelloWorld。

5、編寫c語言的本地實現(xiàn)
在jni目錄下添加test.c文件,其中內(nèi)容為:
#include "jni.h"
#include "com_sf_test_Test.h"

JNIEXPORT void JNICALL Java_com_sf_test_Test_displayHelloWorld
(JNIEnv *jv, jobject jo)
{
printf("Hello world\n");
return ;
}

兩個頭文件必須包含,下面函數(shù)的名稱參數(shù)跟com_sf_test_Test.h中的必須一致。
6、編寫ndk相關(guān)內(nèi)容
jni目錄下添加Android.mk和Application.mk文件
其中 Android.mk內(nèi)容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := MyTest
LOCAL_SRC_FILES := test.c
include $(BUILD_SHARED_LIBRARY) Application.mk內(nèi)如如下:
APP_ABI := all
7、利用ndk進行編譯
在jni目錄下,輸入命令 ndk-build,可以生成相關(guān)的so文件
[armeabi] Install??????? : libMyTest.so => libs/armeabi/libMyTest.so
生成的文件保存子main/libs目錄下

目前存在的問題,只生成了armeabi架構(gòu)適用的so文件。其他平臺如x86等適用的沒有生成。

備注:
生成so文件可以通過兩種編譯方式:
1)cmake
2)ndk-build


轉(zhuǎn)載于:https://www.cnblogs.com/rohens-hbg/p/10676681.html

總結(jié)

以上是生活随笔為你收集整理的利用android studio 生成 JNI需要的动态库so文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色哟哟在线播放 | 久久久人妻无码一区二区 | 亚洲一区二区三区黄色 | 国产在线观看www | 成 年人 黄 色 片 | 免费午夜网站 | 久久久久久久久久久久久久久久久久久 | 高清国产视频 | 蜜臀av一区二区三区有限公司 | 日韩欧美综合久久 | 国产做受网站 | 一本大道一区二区 | jizz视频 | 深夜精品福利 | 国产精品久久久久久久午夜 | 少妇又白又嫩又色又粗 | 一二三不卡视频 | 少妇高潮灌满白浆毛片免费看 | 天天碰天天 | 天堂在线一区 | 精品播放| 久久国产柳州莫菁门 | www.色欧美 | 欧美视频一区二区在线 | 日韩av资源在线观看 | 成人午夜sm精品久久久久久久 | 亚洲精品69| 无码gogo大胆啪啪艺术 | 少妇一夜三次一区二区 | 在线观看中文字幕2021 | 国产精品久久久久久中文字 | 亚洲三级视频 | 欧美色精品 | 日本特级黄色大片 | 日韩电影一区二区三区四区 | 久久久老熟女一区二区三区91 | 老女人做爰全过程免费的视频 | 日日涩 | 在线视频啪 | 在线免费观看 | 97在线精品视频 | 日韩久久一区二区三区 | xx色综合 | 色综合99| 国产成年人视频网站 | 色婷婷aⅴ | 最新黄色av网站 | 亚洲资源网 | 国语播放老妇呻吟对白 | 午夜色婷婷 | 超碰一级片 | 日韩在线播放视频 | 麻豆成人91精品二区三区 | 免费观看的毛片 | 豆花视频成人 | 国产精品视频久久 | 夜夜爽夜夜叫夜夜高潮漏水 | 日韩午夜在线视频 | 毛片123| 国产午夜毛片 | 成人在线免费播放视频 | 小草av | 日本高清视频在线播放 | 日本高清不卡在线观看 | 精品视频在线观看免费 | 国产麻豆视频 | 欧美国产日韩一区二区三区 | 中文字幕精品无码亚 | 曰本三级日本三级日本三级 | 亚洲爱爱片| 久久久社区 | 伊人啪啪 | 白丝动漫美女 | 黄色网址在线看 | 日韩欧美黄 | 茄子视频色 | 中文字幕1 | 一区黄色 | 狠狠丁香 | 欧美极品少妇xxxxⅹ裸体艺术 | 噜噜噜久久久 | 日本少妇喂奶漫画 | xnxx国产| 黄网站色视频免费观看 | 豆花av在线 | 欧美日韩激情在线一区二区三区 | 亚洲精品久久久久av无码 | 一级aaa毛片 | 国产午夜无码视频在线观看 | 蜜桃久久久久久久 | 新红楼梦2005锦江版高清在线观看 | 在线观看中文字幕一区二区 | 麻豆一区产品精品蜜桃的特点 | a在线观看免费 | 天天摸天天舔 | 亚洲精品性 | 日韩免费一区 | 美女伊人网 | 狼人精品一区二区三区在线 |