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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android JNI的第一步——从HelloWorld开始

發布時間:2025/3/20 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android JNI的第一步——从HelloWorld开始 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一步:配置NDK運行環境

兩個工具包:

com.android.ide.eclipse.ndk_23.0.2.1259578.jar

android-ndk-r10(當然也可以是一些其他類似的工具包,如android-ndk-r8)

前者為搭建NDK環境時,必需的工具包。需要將其置于eclipse的plugins文件夾中。然后重啟eclipse即可。

前者工具包下載連接

后者為eclipse運行JNI程序所需要的工具包,將其置于一個你習慣的路徑下。放置好之后,進行環境變量的配置,如下圖:



添加NDK路徑:

在window工具欄中選擇preferences選項進入Preferences對話框,如下:


上面所說的第一個工具包就是為產生上圖中的3“NDK”的,如果不出意外,添加完第一個工具包后就會有這個選項了。然后上圖中的第4步就是去添加我們的第二個工具包。

經過上面的步驟,我們的開發環境已經搭建完成了。


第二步:創建Android工程

新建Android工程:

新建項目和普通Android工程沒什么不同。


添加本地支持:

新建好工程之后,我們就需要對其進行添加本地支持


此步操作完成之后,會自動生成Android.mk配置文件和相應的cpp文件,mk文件內容:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := William_Hello_JNI LOCAL_SRC_FILES := William_Hello_JNI.cppinclude $(BUILD_SHARED_LIBRARY) 而對于那個LOCAL_MODULE ? ?:= William_Hello_JNI中的William_Hello_JNI則是在Java代碼中需要去調用的Library,后面會有說明。

當然,這兩步的前提還是你已經添加了第一個工具包。


編寫C++代碼:

接下來,就可以試著去寫你的C++代碼了(就在剛剛生成的那個William_Hello_JNI.cpp中去編寫)。我的示例是這樣的:

#include <jni.h> #include <string.h>extern "C" {JNIEXPORT jstring JNICALL Java_com_demo_jni_MainActivity_sayhello(JNIEnv * env, jobject obj); }JNIEXPORT jstring JNICALL Java_com_demo_jni_MainActivity_sayhello(JNIEnv * env, jobject obj) {return env->NewStringUTF("Hello From cpp."); }

對于上面的C++代碼可以看到有一個方法:JNIEXPORT jstring JNICALL Java_com_demo_jni_MainActivity_sayhello(JNIEnv * env, jobject obj);

其中的組成部分說明如下:

JNIEXPORT 固定部分,表示JNI外部引入

jstring 表示返回類型

JNICALL 固定部分,顧名思義,是表示此方法提供給JNI層去調用

Java 固定部分,表示后面的部分是Java代碼的內容

com_demo_jni 是Java代碼中的程序包名

MainActivity 表示相應方法所在的類名

sayhello 就是這里與Java代碼中一一對應的方法名


編寫Java代碼:

對于Java代碼第一步要做的事件就是引入C/C++中的庫,這里的庫就是我們在添加本地支持的時候生成的Android.mk文件中的LOCAL_MODULE的值。

例如我的工程中就是:

static {System.loadLibrary("William_Hello_JNI"); } 完整主函數,如下:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);EditText showJNI = (EditText) findViewById(R.id.activity_main_jni_show);showJNI.setText(sayhello());}public native String sayhello();static {System.loadLibrary("William_Hello_JNI");} }

運行效果圖:



源碼下載:

工程源碼:http://download.csdn.net/detail/u013761665/8369031


參考

參考博文:http://blog.csdn.net/yf210yf/article/details/9264587

總結

以上是生活随笔為你收集整理的Android JNI的第一步——从HelloWorld开始的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 无码一区二区精品 | 女同激情久久av久久 | 黄色免费在线视频 | 久久亚洲a v| av之家在线| 中文在线观看免费网站 | 一本色道久久综合亚洲精品酒店 | 久久久久在线视频 | 天天色天天干天天 | 久久av网址 | 天堂久久网 | 国产精品美女毛片真酒店 | 天天操天天干天天爱 | 91福利免费 | 91在线一区二区三区 | 免费一区二区在线观看 | 丰满人妻一区二区三区免费视频棣 | 国产欧美精品aaaaaa片 | 特级西西人体 | 在线色资源 | av天堂一区| 日韩欧美中文字幕一区二区三区 | 国产亚洲女人久久久久毛片 | 懂色av懂色av粉嫩av分享吧 | 玖玖热在线视频 | 美日韩精品视频 | www.欧美.com | 我想看一级黄色片 | 成人一区三区 | 亚洲综合图色 | 日本网站在线播放 | 日韩网站视频 | 成年人视频在线观看免费 | 日韩18p| 精品无码一区二区三区在线 | 精品熟妇无码av免费久久 | 中文字幕欧美人妻精品一区蜜臀 | 日本呦呦| 中文字幕一区二区三区免费视频 | 久久国内精品视频 | 日韩精品无码一本二本三本色 | 久久人人艹 | 国产网址| 久久亚洲精精品中文字幕早川悠里 | 欧美在线视频不卡 | 欧洲日韩一区二区三区 | 午夜看片福利 | 激情久久av一区av二区av三区 | 伊人222成人综合网 亚洲日本中文 | 成人性生交大片免费看96 | 欧美一区二区在线观看 | 激情福利 | 国色综合 | 久久久久久久久久久久电影 | 乱熟女高潮一区二区在线 | av一级 | 久久久久亚洲AV成人无码国产 | 拍真实国产伦偷精品 | 日韩特黄毛片 | av在线天堂 | 亚洲美女视频在线 | 丰满大乳露双乳呻吟 | 91嫩草香蕉 | 男女av免费 | 影音先锋黄色网址 | 狠狠躁日日躁 | 一本高清dvd在线播放 | h视频在线观看网站 | 91精品视频国产 | 国产伦精品一区二区三区在线观看 | 久久精品人妻一区二区 | 男人你懂的网站 | 亚色在线视频 | 中文字幕一区二区三区人妻不卡 | 色噜噜狠狠成人中文 | 9999视频| 亚洲天堂免费观看 | 91原创视频 | 超碰首页| 先锋av资源站 | 九九热这里都是精品 | 乌克兰做爰xxxⅹ性视频 | aaaa一级片| 久久一区二区三区视频 | 亚洲视频a| 亚洲精品国产av | 中文字幕最新 | 欧美少妇毛茸茸 | 日韩女优在线 | 国产无遮挡免费观看视频网站 | 午夜在线小视频 | www视频在线观看 | 国产又好看的毛片 | 狠狠操天天干 | 欧美成人午夜精品久久久 | av之家在线 | 最近中文字幕一区二区 | 免费福利在线视频 | 四虎网站最新网址 |