1. 程式人生 > >Android JNI HelloWorld實現

Android JNI HelloWorld實現

  1. 建立一個JNIDemo的Android工程
  2. 在專案下建立一個資料夾jni。(注意必須是jni目錄)
  3. 在jni目錄下建立兩個檔案:Android.mk 和 first_jni.c(.c檔案的名字可以任意)
  4. 編寫Android.mk檔案:(參見Demo當中的Androd.mk檔案)
    • LOCAL_MODULE := firstjni (決定編譯出來的so檔案的名字)
    • LOCAL_SRC_FILES := first_jni.c (指定需要編譯的檔案)
  5. 在src當中建立java檔案,此為與so庫對應的介面。(如當前Demo當中的FirstJNI.java)

注意:

  • 必須包含一個static的靜態程式碼塊。用於載入so庫。
  • 通過natvie宣告so當中定義的介面
  1. 在.c檔案當中實現介面java中定義的方法

    注意:

    • .c檔案當中需要包含jni.h標頭檔案,否則一些JNIEXPORT 無法識別
    • .c檔案中的方法名:JNIEXPORT jstring JNICALL Java_com_example_jnidemo_FirstJNI_sayHello(JNIEnv env, jobject thiz) 翻譯為:JNIEXPORT 返回值型別 JNICALL Java_包名_類名_方法名(JNIEnv env, jobject thiz)
  2. 程式碼編寫完成後,需要編譯.c檔案為so庫。在專案的根目錄下.(jni,src等所在的目錄),執行ndk-build編譯

其他:

編寫完介面java檔案之後,可以通過javah工具生成一個對應的.h檔案,用於JNI實現。

實現方法:在bin/classes 目錄下執行javah -jni com.example.jnidemo.FirstJNI 即可在當前目錄下生成一個.h檔案

ndk環境搭建請Google之。

例程:

相關推薦

Android JNI HelloWorld實現

建立一個JNIDemo的Android工程在專案下建立一個資料夾jni。(注意必須是jni目錄)在jni目錄下建立兩個檔案:Android.mk 和 first_jni.c(.c檔案的名字可以任意)編寫Android.mk檔案:(參見Demo當中的Androd.mk檔案)LOCAL_MODULE := fir

UVC系列5-編寫Android jni程式碼實現控制PTZ

在Android kernel層完成定製之後,需要寫app實現對攝像頭的控制,主要通過jni程式碼實現。 在jni程式碼中主要定義這幾個函式: jintArrayJava_com_chuck_android_uvccamera_MainActivity1_startC

Android JNI實現檔案的read、write與seek操作

轉自:http://blog.csdn.net/conowen/article/details/7525837 /*******************************************************************************

Android的NDK開發(5)————Android JNI實現檔案的read、write與seek操作

/********************************************************************************************  * author:conowen@大鐘                      

Android Studio 3.0 JNI實現

當前環境:  android studio 3.0.0  android-ndk版本: 1、建立android專案 (JNIDemo) 2、建立jni資料夾 右鍵 src->New->Folder->JNI Folder 如圖: 結

Android JNI開發 通過C++實現眼瞼標註

C++程式碼: #include <jni.h> #include <string> #include <opencv2/opencv.hpp> #include <android/log.h> #include <iostrea

android jni 用c++使用opengles和egl實現離屏渲染

最近在做視訊有關的東西,用開源的ffmpeg解碼視訊,在通過opengl渲染出來,因為有使用到egl就試了試離屏渲染 EGLConfig eglConf; EGLSurface eglSurface; EGLContext eglCtx; EGLDisplay eglDi

unity 呼叫C++庫(android+jni+window dll平臺實現

方便不知道如何再unity呼叫各平臺動態庫的同學參考,實測可用: window案例 動態庫名 tracker_model.dll 位置 unity工程 Assets\Plugins目錄下 c# 關鍵呼叫 程式碼  using UnityEngine; using Syst

Android JNI程式設計(一)——JNI概念以及C語言Dev-C++開發環境搭建、編寫HelloWorld

一:JNI是什麼呢? JNI:JNI是Java Native Interface的縮寫,它提供了若干的API實現了Java和其他語言的通訊(主要是C&C++) ,簡單來說就是Java調C

[Android NDK]Android JNI開發例子 ---3 在JNI實現openGL功能

這個例子使用native部分來實現opengl es而不是java部分。 Java部分與例子2相似。 MainActivity.java public class MainActivity extends Activity { GLSurfaceView m

Android JNI和NDK學習(03)--動態方式實現JNI

前面總結了靜態實現JNI的方法,本文介紹如何動態實現JNI:JNI在載入時,會呼叫JNI_OnLoad,而解除安裝時會呼叫JNI_

Android JNI和NDK學習(09)--JNI實例二 傳遞類對象

get state 回調 obj utf 說明 called [] code 1 應用層代碼 NdkParam.java是JNI函數的調用類,它的代碼如下: package com.skywang.ndk; import android.app.Activity;

AndroidAndroid聊天機器人實現

小米 div bottom 曾經 圖靈 .9.png sdn http 歡迎界面 昨天看到一個Android視頻教程講圖靈機器人。那個API接口用起來還是挺方便的,就準備自己動手做一個了。另外自己還使用了高德地圖的API接口用於定位(曾經用過高德的接口,比X度方便) 大

Android jni/ndk編程三:native訪問java

efi pan exp exc save protect uil arm 註冊方法 一.訪問靜態字段 Java層的field和method,不管它是public,還是package、private和protected,從 JNI都可以訪問到,Java面向語言的封裝性不見了。

Android Jni層 創建 linux socket 出錯問題解決

res html true bsp 失敗 ica ins moni name 問題: 想在Jni層創建 udp socket 與服務端通信,可是沒有成功。最後發現居然是創建socket失敗(代碼例如以下) // create socket g_sd = soc

android 2048遊戲實現

2048小遊戲 post gettext grid total put slide ram swa android 的2048小遊戲完整實現:GridLayout布局(android 4.0及以上)。 曾經做過一個2048的算法題,學了幾天android,認為能夠實現個

android登錄實現,存儲數據到/data/data/包名/info.txt

邏輯 保存到文件 技術分享 stream xtu d+ exception style fin 1.一個簡單登錄界面布局代碼如下: @1采用線性布局加相對布局方式 @2線性布局采用垂直排列 <?xml version="1.0" encoding="utf-8"?&

Android ListView動畫實現方法

rri pan 自己 data- src def popu 動畫 onclick 在Android中listview是最經常使用的控件之中的一個,可是有時候我們會認為千篇一律的listview看起來過於單調,於是就產生了listView動畫,listview載入了動畫會

Android ScrollView滾動實現大眾點評、網易雲音樂評論懸停效果

ins schema bar 音樂 layout mage for bin andro 今天聽著網易雲音樂,寫著代碼,真是爽翻了。 http://blog.csdn.net/linshijun33/article/details/47910833 網

Android界面實現】使用PagerTabStrip實現有滑動標簽的Viewpager

n) range over 遊戲娛樂 and ring linear manager ray 在ViewPager這樣的能夠滑動的控件上,總是有非常多的文章能夠做。上次的文章。我們實現了一個自己定義的ViewPager的指示器。這篇文章,我們主要是想利用Andr