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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android studio下的NDK开发详解

發布時間:2025/6/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android studio下的NDK开发详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


點擊右邊,選擇你解壓的NDK,點擊應用。這一步將工具包關聯到android ?studio。


在 local.properties?文件中設置ndk的路徑:


就是你解壓的NDK工具集的路徑 ?我的是?E:\Android\android-ndk-r10,注意要對應加斜杠

到這里我說JNI(有時說的NDK開發,一樣的,叫法不同)環境初步建好了,不想eclipse那樣什么cygwin啊,怎么還要ndk-build的啊,我說什么都不用,就用一個命令就行了,下面就開始我們的第一個小demo。

程序過程講解:

一:頭文件生成:

第一步:像平時一樣將一個空的android工程。

第二部:前面說了,要用native來標識一個方法,告訴程序這是一個本地方法。程序如下

public class NDK extends Activity{static {System.loadLibrary("MyJni");//導入生成的鏈接庫文件 }public native String getStringFromNative();//本地方法 public native String getString_From_c();protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.myjni);System.out.println(getStringFromNative());}public void onClick(View view) {System.out.println(getString_From_c());Toast.makeText(this, getStringFromNative(), Toast.LENGTH_LONG).show();}} 這一步可以先不加這行代碼:SloadLibrary("MyJni";//導入生成的鏈接庫文件 ,因為這里還沒有建立C文件,不能生成庫文件 然后make?project一下,目的就是編譯成對應的class文件。然后根據生成的class文件,利用javah生成對應的?.h頭文件。如果沒有編譯就執行javah命令會提示找不到這個類文件的。下面是我的工程界面; 這里說一下:我工程里面的本地方法顯示是紅色,我一開始以為不能進行JNI開發,或者有錯誤,包括我后面的C文件和頭文件里面也有很多地方是紅色的,我開始定義這些方法的時候是紅色的,但是有時又不是的,不知道是android studio對NDK支持不太好,還是怎么得,但是后面開發JNI程序沒有任何影響的。所以就沒有關了,如果那位大神知道還望告訴我一下,將非常感激。第三部:打開命令窗口,點擊view ->ToolsWindows->Terminal,如下圖: 進來后默認是指向當前的工程目錄,接下來輸入命令:cd app\src\main 回車,切換到main目錄下:如圖:至于怎么理解命令,建議你去學一下linux系統,這事linux最基本的操作。第四步:輸入javah -d jni -classpath E:\Android\sdk\platforms\android-22\android.jar;..\..\build\intermediates\classes\debug example.daosong.com.ndkdemo.NDK(注意前后有英文的;號隔開的哈) 生成頭文件(要先編譯程序的,不然會報錯)。可能有些人看到這里就茫然了,這么長怎么寫出來的喲,這怎么記得到的,我告訴大家根本不用記,我給你說怎么得來的,你們就能很快寫出來了,是不是真的喲,不信試一試的。首先:javah是生成頭文件需要的工具,這個很好記得把,相信學java是都用過的。-d jni 在工程下生成jni目錄,到時會在這個目錄下建JNI開始的C/C++源文件的。-classpath E:\Android\sdk\platforms\android-22\android.jar 這個就是你SDK文件下android.jar所在的文件位置,找到后復制即可。在學java的時候講了這個的,可以將E:\Android\sdk\platforms\android-22\android.jar配置到環境變量就可以不寫出來,因為在生成頭文件是需要這個jar包,因為我沒有配置到環境變量,所以這里就顯示寫出來。這部分很好搞定把。前面好弄,那后面部分怎了弄得,相信學過linux的很快能夠知道的。..\..\build\intermediates\classes\debug example.daosong.com.ndkdemo.NDK?首先是 ..\..\build\intermediates\classes\debug,結合到下面的圖看: ..表示返回上級目錄,..\..表示返回上兩級目錄,也就是返回到那層目錄,然后明白這個了啥..\..\build\intermediates\classes\debug,指向debug目錄,然后空格和后面隔離,然后就是后面部分example.daosong.com.ndkdemo.NDK,看上圖明白啥,是該類的全路徑,這里有.隔離開,平時寫類的全路徑都是用的.號,生成頭文件是將類對應的class文件生成二進制文件,所以要指向這里的,然后回車就能完成了頭文件的生成。意思是將該文件目錄下的NDK.class文件生成相應的頭文件。打開jni目錄下會有本地方法相應的映射方法定義。 在jni目錄下建立C源文件




網上說需要在jni下多建一個空的C文件,不讓會出錯,到底出什么錯我也不知道的,反正我多不多建都沒有什么影響的,不過多建一個沒什么影響,也就建了。


jni.c代碼如下:

#include "example_daosong_com_ndkdemo_NDK.h" //#include <android/log.h> //#define LOG_TAG "System.out" //#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) //#define LOGINFO(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__) JNIEXPORT jstring JNICALL Java_example_daosong_com_ndkdemo_NDK_getStringFromNative(JNIEnv * env, jobject obj){// LOGINFO("LOGINFO"); return (*env)->NewStringUTF(env,"NDK 測試成功"); }jstring Java_example_daosong_com_ndkdemo_NDK_getString_1From_1c(JNIEnv * env, jobject jobject){return (*(*env)).NewStringUTF(env,"NDK 來自于C文件");} 講到這里如果要運行還得配置一個地方:




現在運行控制臺就會打印相應的消息(至于為什么這么寫,代碼代表什么意思,我會在下一篇博客講解),不像eclipse還要配置android.mk這么文件嗎?android ?studio不用,你還真猜對了,不過不是說不用就代表他沒有,只不過這個配置過程不過你來做,你要做的就是配置上圖的代碼。那android.mk

在哪里的呢?看下圖




是不是是曾相識啊,對就是它。現在可以加上它了System.loadLibrary("MyJni");//導入生成的鏈接庫文件

不知不覺就是深夜1點多了,下面給出我的工程,里面有log打印相關的知識,這個將在下一篇博客詳細講解,如果有什么錯誤,歡迎大家指出。

http://download.csdn.net/detail/tuoguang/9068899

點擊右邊,選擇你解壓的NDK,點擊應用。這一步將工具包關聯到android ?studio。


在 local.properties?文件中設置ndk的路徑:


就是你解壓的NDK工具集的路徑 ?我的是?E:\Android\android-ndk-r10,注意要對應加斜杠

到這里我說JNI(有時說的NDK開發,一樣的,叫法不同)環境初步建好了,不想eclipse那樣什么cygwin啊,怎么還要ndk-build的啊,我說什么都不用,就用一個命令就行了,下面就開始我們的第一個小demo。

程序過程講解:

一:頭文件生成:

第一步:像平時一樣將一個空的android工程。

第二部:前面說了,要用native來標識一個方法,告訴程序這是一個本地方法。程序如下

public class NDK extends Activity{static {System.loadLibrary("MyJni");//導入生成的鏈接庫文件 }public native String getStringFromNative();//本地方法 public native String getString_From_c();protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.myjni);System.out.println(getStringFromNative());}public void onClick(View view) {System.out.println(getString_From_c());Toast.makeText(this, getStringFromNative(), Toast.LENGTH_LONG).show();}} 這一步可以先不加這行代碼:SloadLibrary("MyJni";//導入生成的鏈接庫文件 ,因為這里還沒有建立C文件,不能生成庫文件 然后make?project一下,目的就是編譯成對應的class文件。然后根據生成的class文件,利用javah生成對應的?.h頭文件。如果沒有編譯就執行javah命令會提示找不到這個類文件的。下面是我的工程界面; 這里說一下:我工程里面的本地方法顯示是紅色,我一開始以為不能進行JNI開發,或者有錯誤,包括我后面的C文件和頭文件里面也有很多地方是紅色的,我開始定義這些方法的時候是紅色的,但是有時又不是的,不知道是android studio對NDK支持不太好,還是怎么得,但是后面開發JNI程序沒有任何影響的。所以就沒有關了,如果那位大神知道還望告訴我一下,將非常感激。第三部:打開命令窗口,點擊view ->ToolsWindows->Terminal,如下圖: 進來后默認是指向當前的工程目錄,接下來輸入命令:cd app\src\main 回車,切換到main目錄下:如圖:至于怎么理解命令,建議你去學一下linux系統,這事linux最基本的操作。第四步:輸入javah -d jni -classpath E:\Android\sdk\platforms\android-22\android.jar;..\..\build\intermediates\classes\debug example.daosong.com.ndkdemo.NDK(注意前后有英文的;號隔開的哈) 生成頭文件(要先編譯程序的,不然會報錯)。可能有些人看到這里就茫然了,這么長怎么寫出來的喲,這怎么記得到的,我告訴大家根本不用記,我給你說怎么得來的,你們就能很快寫出來了,是不是真的喲,不信試一試的。首先:javah是生成頭文件需要的工具,這個很好記得把,相信學java是都用過的。-d jni 在工程下生成jni目錄,到時會在這個目錄下建JNI開始的C/C++源文件的。-classpath E:\Android\sdk\platforms\android-22\android.jar 這個就是你SDK文件下android.jar所在的文件位置,找到后復制即可。在學java的時候講了這個的,可以將E:\Android\sdk\platforms\android-22\android.jar配置到環境變量就可以不寫出來,因為在生成頭文件是需要這個jar包,因為我沒有配置到環境變量,所以這里就顯示寫出來。這部分很好搞定把。前面好弄,那后面部分怎了弄得,相信學過linux的很快能夠知道的。..\..\build\intermediates\classes\debug example.daosong.com.ndkdemo.NDK?首先是 ..\..\build\intermediates\classes\debug,結合到下面的圖看: ..表示返回上級目錄,..\..表示返回上兩級目錄,也就是返回到那層目錄,然后明白這個了啥..\..\build\intermediates\classes\debug,指向debug目錄,然后空格和后面隔離,然后就是后面部分example.daosong.com.ndkdemo.NDK,看上圖明白啥,是該類的全路徑,這里有.隔離開,平時寫類的全路徑都是用的.號,生成頭文件是將類對應的class文件生成二進制文件,所以要指向這里的,然后回車就能完成了頭文件的生成。意思是將該文件目錄下的NDK.class文件生成相應的頭文件。打開jni目錄下會有本地方法相應的映射方法定義。 在jni目錄下建立C源文件




網上說需要在jni下多建一個空的C文件,不讓會出錯,到底出什么錯我也不知道的,反正我多不多建都沒有什么影響的,不過多建一個沒什么影響,也就建了。


jni.c代碼如下:

#include "example_daosong_com_ndkdemo_NDK.h" //#include <android/log.h> //#define LOG_TAG "System.out" //#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) //#define LOGINFO(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__) JNIEXPORT jstring JNICALL Java_example_daosong_com_ndkdemo_NDK_getStringFromNative(JNIEnv * env, jobject obj){// LOGINFO("LOGINFO"); return (*env)->NewStringUTF(env,"NDK 測試成功"); }jstring Java_example_daosong_com_ndkdemo_NDK_getString_1From_1c(JNIEnv * env, jobject jobject){return (*(*env)).NewStringUTF(env,"NDK 來自于C文件");} 講到這里如果要運行還得配置一個地方:




現在運行控制臺就會打印相應的消息(至于為什么這么寫,代碼代表什么意思,我會在下一篇博客講解),不像eclipse還要配置android.mk這么文件嗎?android ?studio不用,你還真猜對了,不過不是說不用就代表他沒有,只不過這個配置過程不過你來做,你要做的就是配置上圖的代碼。那android.mk

在哪里的呢?看下圖




是不是是曾相識啊,對就是它。現在可以加上它了System.loadLibrary("MyJni");//導入生成的鏈接庫文件

不知不覺就是深夜1點多了,下面給出我的工程,里面有log打印相關的知識,這個將在下一篇博客詳細講解,如果有什么錯誤,歡迎大家指出。

http://download.csdn.net/detail/tuoguang/9068899

總結

以上是生活随笔為你收集整理的android studio下的NDK开发详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色婷婷在线影院 | 成人av在线网站 | 尤物在线视频观看 | 影音先锋亚洲天堂 | 亚洲第一中文字幕 | 国产91精品一区 | 色片网站在线观看 | 国产成人无码av | www.777奇米| 青青草原av在线 | 亚洲经典在线观看 | 99国产精品一区二区三区 | 日韩夫妻性生活 | 久热免费在线视频 | 午夜激情影院 | 欧美三级免费 | 国产综合视频在线 | 中文字幕在线免费看线人 | 欧美在线一区二区 | 日韩无码精品一区二区三区 | 国产成人啪一区二区 | 40一50一60老女人毛片 | 黑人和白人做爰 | 亚洲欧美日韩国产精品 | 日韩一区二区三区视频在线 | 成人第四色| www.黄色小说.com | 国产毛片91 | 国产在线97| 国产热99| 古装做爰无遮挡三级视频 | 天天操天天干天天舔 | 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 欧美黄色小说 | 国产精品www. | 国产精品高潮呻吟久久av野狼 | 天堂av资源 | 国产一区91精品张津瑜 | 日本一区二区人妻 | 中文日韩在线 | 亚洲国产欧美日韩在线 | 亚洲成在线 | 超碰在线中文 | 第一色网站 | 亚洲综合欧美 | 美女洗澡隐私免费网站 | 久久成人免费视频 | 东京干手机福利视频 | 国产乱码精品一区二区三区忘忧草 | 天天操天天插天天射 | 夜夜噜噜噜 | 红桃视频一区二区三区免费 | 性户外野战hd | 超碰超碰 | 欧美xxxx黑人又粗又长密月 | 狠狠干快播 | 亚洲国产精品免费在线观看 | 中文字幕久久网 | 91偷拍网站| 四季av一区二区凹凸精品 | 97在线观视频免费观看 | 欧美爱爱网站 | 性高潮久久久久久 | 黄色污污网站 | 久久久久久九九九九 | 色人阁在线视频 | 国产三区av | 精品国产大片大片大片 | 久草中文在线观看 | 波多野结衣在线视频免费观看 | 黄色三级三级三级三级 | 后进极品美女白嫩翘臀 | 可乐操亚洲 | jzjzz成人免费视频 | 欧美亚洲综合另类 | 欧美在线免费 | 亚洲天堂中文在线 | 成年人黄视频 | 国产精品亚洲AV色欲三区不卡 | 黄色网在线 | 能在线观看的av网站 | 天堂网视频在线观看 | 国产一区二区三区四区五区六区 | 精品国产无码在线观看 | 曰本黄色片| 水蜜桃色314在线观看 | 色综合福利 | 在线亚洲色图 | 免费久久精品 | 性色在线观看 | 人人入人人 | 亚洲社区在线观看 | 天天舔夜夜操 | 精品国产免费无码久久久 | 久久久久久蜜桃 | 好吊色视频一区二区三区 | 国产精选一区二区 | 青青青视频在线播放 | 综合网在线观看 |