亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁/技術文章
文章詳情頁

基于Android studio3.6的JNI教程之helloworld思路詳解

瀏覽:29日期:2022-09-26 15:13:05

jdk環境變量配置:

path中增加下面2個路徑,也就是android studio的路徑,android有自帶的jdk。

E:AndroidAndroid StudiojrebinE:AndroidAndroid Studiobin

新建工程:

一定要選擇Native c++類型,最后要選c++11支持。

基于Android studio3.6的JNI教程之helloworld思路詳解

SDK設置:

File->Settings

基于Android studio3.6的JNI教程之helloworld思路詳解

File->Project Structure

基于Android studio3.6的JNI教程之helloworld思路詳解

首先確定工程的目錄結構,然后嘗試運行一下工程,使用模擬器,確保工程沒問題,

基于Android studio3.6的JNI教程之helloworld思路詳解

在MainActivity的同級目錄,新建一個hello.java,然后做一個簡單的實現,

package com.example.myapplication; public class hello { public native int add(int i, int j);}

使用android studio自帶的Terminal進入該hello.java所在目錄,執行,

javac hello.java

Terminal下回到app/src/main所在目錄,執行,

javah -d jni -classpath ./java com.example.myapplication.hello

此時,會在main目錄下面生成一個和cpp,java同級的目錄jni。

在該目錄結構里面新建hello.cpp。

將com_example_myapplication_hello.h中的內容復制進hello.cpp中,并且進行方法的實現,

#include <jni.h>/* Header for class com_example_myapplication_hello */ #ifndef _Included_com_example_myapplication_hello#define _Included_com_example_myapplication_hello#ifdef __cplusplusextern 'C' {#endif/* * Class: com_example_myapplication_hello * Method: add * Signature: (II)I */ #include 'com_example_myapplication_hello.h' JNIEXPORT jint JNICALL Java_com_example_myapplication_hello_add (JNIEnv *, jobject, jint i, jint j){return i+j;} #ifdef __cplusplus}#endif#endif

將com_example_myapplication_hello.h,hello.cpp這連個文件復制到cpp所在的目錄,

然后修改CMakeLists.txt,增加,

add_library( # Sets the name of the library. hello # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). hello.cpp )

修改target_link_libraries如下,

target_link_libraries( # Specifies the target library. native-lib hello # Links the target library to the log library # included in the NDK. ${log-lib} )

修改hello.java的調用方式,

package com.example.myapplication; public class hello { static { System.loadLibrary('hello'); } public native int add(int i, int j);}

修改MainActivity.java中的onCreate函數,

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Example of a call to a native method TextView tv = findViewById(R.id.sample_text); //tv.setText(stringFromJNI()); tv.setText('hello 9+10= ' + new hello().add(9, 10)); }

然后,rebuild project,沒有錯誤后,然后run app。

最終程序整體目錄結構,以及運行效果,

基于Android studio3.6的JNI教程之helloworld思路詳解

JNI的整體流程思路:

Java先定義一個類,類中定義一個需要c++來實現的方法.通過javah生成需要c++實現的.h的c++頭文件實現.h的c++頭文件中定義的方法Cmake編譯運行

總結

到此這篇關于基于Android studio3.6的JNI教程之helloworld思路詳解的文章就介紹到這了,更多相關android studio JNI helloworld內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 外国一级黄色毛片 | 免费一级a毛片在线播放视 免费一级a毛片免费观看欧美大片 | 欧美日韩亚洲综合久久久 | 日韩综合久久 | 久久这里只有精品2 | 视频二区在线 | 国产精品亚洲欧美日韩一区在线 | 小蝌蚪亚洲精品国产 | 亚洲第一视频在线观看 | 国产成人综合日韩精品婷婷九月 | 日韩精品视频在线免费观看 | 亚洲第一视频在线播放 | 国产乱码一区二区三区四川人 | 九九热亚洲精品综合视频 | 国产97公开成人免费视频 | 日本一级毛片在线观看 | 国产一区二区精品久久91 | 1a级毛片免费观看 | 日韩区在线观看 | 欧美黄色三级 | 91蝌蚪视频在线观看 | 日韩免费无砖专区2020狼 | 日韩中文字幕精品免费一区 | 九九视频国产 | 黄p片| 亚洲高清在线观看播放 | 国产高清精品在线 | 欧美成人三级一区二区在线观看 | 国产91精品高清一区二区三区 | 免费一级毛片视频 | 中国产一级毛片 | 欧美日韩中文国产一区二区三区 | 中国欧美日韩一区二区三区 | 欧美一区二区在线免费观看 | 一区视频免费观看 | 精品在线观看一区 | 国产破处在线视频 | 久久国产精品99精品国产 | 2017天天天天做夜夜夜做 | 午夜老司机永久免费看片 | 亚洲婷婷天堂在线综合 |