日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > NDK淺嘗(1)

NDK淺嘗(1)

來源:程序員人生   發(fā)布時間:2016-03-29 09:16:36 閱讀次數(shù):2546次

First JNI Project

這篇博客主要針對Android NDK開發(fā)做入門級論述,所觸及到的主要有以下幾點(diǎn):

  • Android NDK開發(fā)簡介
  • JNI簡介
  • 工具介紹
  • 構(gòu)建HelloJNI項目

1.Android NDK開發(fā)簡介
Android NDK 是在SDK前面又加上了“原生”2字,即Native Development Kit,因此又被Google稱為“NDK”。盡人皆知,Android程序運(yùn)行在Dalvik虛擬機(jī)中,NDK允許用戶使用類似C / C++之類的原生代碼語言履行部份程序。NDK包括了:

  1. 從C / C++生成原生代碼庫所需要的工具和build files
  2. 將1致的原生庫嵌入可以在Android裝備上部署的利用程序包文件
  3. 將1致的原生庫嵌入可以在Android裝備上部署的利用程序包文件(application packages files ,即.apk文件)中。
  4. 支持所有未來Android平臺的1些列原生系統(tǒng)頭文件和庫

2.JNI簡介
JNI是Java Native Interface的縮寫,它提供了若干的API實現(xiàn)了Java和其他語言的通訊(主要是C&C++)。從Java1.1開始,JNI標(biāo)準(zhǔn)成為java平臺的1部份,它允許Java代碼和其他語言寫的代碼進(jìn)行交互。JNI1開始是為了本地已編譯語言,特別是C和C++而設(shè)計的,但是它其實不妨礙你使用其他編程語言,只要調(diào)用約定受支持就能夠了。使用java與本地已編譯的代碼交互,通常會喪失平臺可移植性。但是,有些情況下這樣做是可以接受的,乃至是必須的。例如,使用1些舊的庫,與硬件、操作系統(tǒng)進(jìn)行交互,或為了提高程序的性能。JNI標(biāo)準(zhǔn)最少要保證本地代碼能工作在任何Java 虛擬機(jī)環(huán)境下。更多相干細(xì)節(jié)參見百度百科


3.工具介紹

  1. NDK
  2. SDK
  3. Android Studio 1.4
    稍后將會用專頁同享各項軟件的下載鏈接及安裝。

4.構(gòu)建HelloJNI項目

等不到我開發(fā)環(huán)境構(gòu)建的兄弟們可以先根據(jù)其他博客自己搭建環(huán)境,相對而言環(huán)境相干的教程是比較多的,本篇博客的主要目的在于引導(dǎo)大家在最新環(huán)境上入手JNI開發(fā):
第1步: 新建Android項目
新建的Android項目路徑以下圖所示:
這里寫圖片描述
第2步:
添加JNI文件莢
右鍵->new->Folder->JNI Folder,添加后文件目錄如圖所示:
這里寫圖片描述
第3步:
在jni文件夾上右鍵new ->file,命名為Android.mk,同上再新建1個hello-jni.cpp文件。Android.mk文件內(nèi)容以下:

#1個Android.mk 文件首先必須定義好LOCAL_PATH變量。它用于在開發(fā)樹中查找源文件。在這個例子中,宏函數(shù)’my-dir’, 由編譯系統(tǒng)提供,用于返回當(dāng)前路徑(即包括Android.mk file文件的目錄) #CLEAR_VARS由編譯系統(tǒng)提供,指定讓GNU MAKEFILE為你清除許多LOCAL_XXX變量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...), #除LOCAL_PATH 。這是必要的,由于所有的編譯控制文件都在同1個GNU MAKE履行環(huán)境中,所有的變量都是全局的。 #編譯的目標(biāo)對象,LOCAL_MODULE變量必須定義,以標(biāo)識你在Android.mk文件中描寫的每一個模塊。名稱必須是唯1的,而且不包括任何空格。 #編譯系統(tǒng)會自動產(chǎn)生適合的前綴和后綴,換句話說,1個被命名為hello-jni的同享庫模塊,將會生成libhello-jni.so文件。 #如果你把庫命名為‘libhello-jni’,編譯系統(tǒng)將不會添加任何的lib前綴,也會生成 libhello-jni.so,這是為了支持來源于Android平臺的源代碼的Android.mk文件,如果你確切需要這么做的話。 #LOCAL_SRC_FILES變量必須包括將要編譯打包進(jìn)模塊中的C或C++源代碼文件。注意,你不用在這里列出頭文件和包括文件,由于編譯系統(tǒng)將會自動為你找出依賴型的文件;僅僅列出直接傳遞給編譯器的源代碼文件就好。 #默許的C++源碼文件的擴(kuò)大名是’.cpp’. 指定1個不同的擴(kuò)大名也是可能的,只要定義LOCAL_DEFAULT_CPP_EXTENSION變量,不要忘記開始的小圓點(diǎn)(也就是’.cxx’,而不是’cxx’) #BUILD_SHARED_LIBRARY表示編譯生成同享庫,是編譯系統(tǒng)提供的變量,指向1個GNU Makefile腳本,負(fù)責(zé)搜集自從上次調(diào)用include $(CLEAR_VARS)以來,定義在LOCAL_XXX變量中的所有信息,并且決定編譯甚么,如何正確地去做。還有 BUILD_STATIC_LIBRARY變量表示生成靜態(tài)庫:lib$(LOCAL_MODULE).a, BUILD_EXECUTABLE 表示生成可履行文件。 # LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.cpp include $(BUILD_SHARED_LIBRARY)

hello-jni.cpp文件內(nèi)容以下所示:

#include #include //extern "C" 標(biāo)記該函數(shù)為C,由于JNI linker不能遵照從C++的命名規(guī)則,如果不加這1句,JNI linker會把它當(dāng)作c++函數(shù),在真機(jī)或摹擬器運(yùn)行時報Unsatisfied Linker的毛病 extern "C" JNIEXPORT jstring JNICALL Java_com_tt_hellojni_MainActivity_NDKTestFromJNI( JNIEnv* env, jobject thiz ) { return env->NewStringUTF( "Hello from JNI !"); }

完成后,項目目錄以下:
這里寫圖片描述
接著打開MainActivity.java文件,修改其內(nèi)容以下:

import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText(NDKTestFromJNI()); setContentView(tv); } public native String NDKTestFromJNI();// native聲明,表示這個方法來自Native層。實現(xiàn)進(jìn)程已在native層實現(xiàn)了 static { System.loadLibrary("hello-jni");// 加載庫,前面的lib和后綴名不用寫 } }

第4步: 打開terminal,順次按圖中輸入命令操作
這里寫圖片描述
此時,我們就能夠看到生成的.so文件了哈,以下圖所示:
這里寫圖片描述
第5步: 履行項目,運(yùn)行在真機(jī)上,界面上會顯示

Hello from JNI !



生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲成人1区 | 免费看的黄色网 | 一区二区三区久久久 | 免费成人黄色网 | 国产精品视频久久久 | 亚洲精品一区av在线播放 | 日韩一区在线播放 | 久久综合一区二区 | 国产精品三级在线观看 | 久久福利 | 国内精品久久久久久中文字幕 | 中文字幕亚洲一区 | 久久九九九九 | 久久中文网 | 久久久综合精品 | 日韩精品无码一区二区三区 | 免费一二二区视频 | 国产精品视频播放 | 欧美午夜在线观看 | 一区二区三区不卡视频在线观看 | 久久免费精品 | 男男做性免费视频网 | 中文字幕精品久久一区二区三区 | 黄a视频 | 国产精品视频不卡 | 欧美日韩免费中文字幕 | 国产成人免费视频网站视频社区 | 欧美日韩国产色综合一二三四 | 欧美久操网 | 欧美一区二区三区在线视频 | 在线亚洲自拍 | 精品成人一区二区三区 | 日韩三级av | 欧美日韩不卡在线 | 国产精品三级在线观看 | 国产不卡av在线 | 亚洲欧美一区二区三区在线 | 日韩特黄特色大片免费视频 | 亚洲国产一 | 日韩一级片免费在线观看 | 久久国产精品二国产精品 |