android使用JNI呼叫C,C++程式
(接著上一篇講)
裡面定義的函式基本上看名字就可以知道他們的用處,這裡就不再羅嗦。
(2)、jstring為JNI中的String型別
(3)、Java_com_example_jnitest_MainActivity_HelloJni
JNI中原生程式碼函式名的命名規則
Java_包名_呼叫該方法的類名_函式名
(4)、引數 JNIEnv *env,jobject obj
— JNIEnv引數 : 代表的是Java環境, 通過這個環境可以呼叫Java裡面的方法;
— jobject引數 : 呼叫C語言方法的物件, thiz物件表示當前的物件, 即呼叫JNI方法所在的類;
4:在jni資料夾下建立Android.mk檔案
程式碼如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_SHARED_LIBRARY)
備註:
LOCAL_PATH : 代表mk檔案所在的目錄
include $(CLEAR_VARS):編譯工具函式,可以進行一些初始化工作
LOCAL_MODULE :編譯後生成的字尾為.so的檔案的名字
LOCAL_SRC_FILES :原始檔的名字
include $(BUILD_SHARED_LIBRARY):告訴編譯器生成動態庫
5:開啟cygwin應用程式
依次切換到cygdrive->剛剛jni的目錄下
6:使用/android-ndk-r9d/ndk-build命令進行編譯(android-ndk-r9d該資料夾複製到cygwin的根目錄下)
7:編譯成功後,重新整理android程式,會在目錄下生成obj資料夾
觀察字尾名為.so的檔案, 其名字為lib+hello+.so
8:在MainActivity下進行呼叫C程式碼
static{
System.loadLibrary(“hello”);//括號中放的是字尾名為.so的檔案去掉lib和去掉.so之後的字串
}
定義native函式
public native String HelloJni(); //該函式名和C語言中的函式名中最後的一節是一樣的
最後 該方法就能在android呼叫了。
相關文章
- android實現app通過jni呼叫C/C++方法AndroidAPPC++
- java呼叫c++動態庫之jni呼叫JavaC++
- Android JNI實現Java與C/C++互相呼叫,以及so庫的生成和呼叫(JNI方式呼叫美圖秀秀so)AndroidJavaC++
- C++庫封裝JNI介面——實現java呼叫c++C++封裝Java
- android使用C/C++呼叫SO庫AndroidC++
- Android - JNI加入標準C++檔案AndroidC++
- Music Studio專案心得--JNI實現C++呼叫JAVAC++Java
- Java如何呼叫C語言程式,JNI技術JavaC語言
- Android JNI開發系列之Java與C相互呼叫AndroidJava
- 從 C/C++ 程式呼叫 Java 程式碼C++Java
- Android C++層列印呼叫棧AndroidC++
- JAVA JNI 呼叫C語言 DemoJavaC語言
- C語言 JNI 呼叫JAVA DemoC語言Java
- android binder c++層-客戶端(c++) 呼叫 服務端(c++) 例子AndroidC++客戶端服務端
- 交叉編譯c++給android呼叫編譯C++Android
- 第一個C程式HelloWold(Android之JNI)C程式Android
- JNI:Java程式碼呼叫原生程式碼Java
- 使用gdb和gdbserver除錯Android C/C++程式Server除錯AndroidC++
- C++呼叫C介面C++
- C++呼叫LuaC++
- JNI呼叫c動態連結庫函式程式碼實踐函式
- 【混合程式設計】C/C++呼叫Fortran的DLL程式設計C++
- 使用C++/CLI呼叫C#封裝類庫C++C#封裝
- windows下C++如何呼叫matlab程式WindowsC++Matlab
- 使用Delphi呼叫C++編寫的DLLC++
- C++呼叫CMD命令C++
- C的指標(Android之JNI)指標Android
- Android Studio NDK開發-JNI呼叫Java方法AndroidJava
- C#呼叫 C++的DLLC#C++
- c與c++的相互呼叫C++
- Python呼叫C/C++方式PythonC++
- Linux C/C++呼叫mongDBLinuxC++
- C/C++呼叫Windows DOS命令C++Windows
- Windows上Python使用swig呼叫C++WindowsPythonC++
- 【C/C++】c++多程式與hiredis的淺使用C++Redis
- android層java如何呼叫cocos2dx c++程式碼 步驟AndroidJavaC++
- 通過JNI對C++進行封裝C++封裝
- Java呼叫C/C++編寫的第三方dll動態連結庫(非nativeAPI)—JNIJavaC++API