AndroidJNI入門第一篇——HelloWord
- public class Printf_Jni {
- static {
- System.loadLibrary(“com_nedu_jni_helloword_printf-jni”);
- }
- public native void printHello();
- }
第二步:使用javah命令生成.h標頭檔案,如圖:
這個要回到src目錄下,不知道什麼原因,如果在上面的javac路徑下會報錯,如圖:
使用javah命令生成的標頭檔案如下:
- /* DO NOT EDIT THIS FILE – it is machine generated */
- #include <jni.h>
- /* Header for class com_nedu_jni_helloword_Printf_Jni */
- #ifndef _Included_com_nedu_jni_helloword_Printf_Jni
- #define _Included_com_nedu_jni_helloword_Printf_Jni
- #ifdef __cplusplus
- extern “C” {
- #endif
- /*
- * Class: com_nedu_jni_helloword_Printf_Jni
- * Method: printHello
- * Signature: ()V
- */
- JNIEXPORT void JNICALL Java_com_nedu_jni_helloword_Printf_1Jni_printHello
- (JNIEnv *, jobject);
- #ifdef __cplusplus
- }
- #endif
- #endif
第三步:編寫c檔案,程式碼如下:
- #include<stdio.h>
- #include <stdlib.h>
- #include “com_nedu_jni_helloword_Printf_Jni.h”
- JNIEXPORT void JNICALL Java_com_nedu_jni_helloword_Printf_1Jni_printHello
- (JNIEnv *e, jobject j)
- {
- printf(“Hello world!”);
- }
第四步,書寫Android.mk檔案,編譯c檔案
Android.mk檔案如下:
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE := com_nedu_jni_helloword_printf-jni
- LOCAL_SRC_FILES :=Printf_Jni.c
- include $(BUILD_SHARED_LIBRARY)
- System.loadLibrary(“com_nedu_jni_helloword_printf-jni”);
- Printf_Jni print=new Printf_Jni();
- print.printHello();
/**。
* @author 張興業
* 郵箱:xy-zhang@163.com
* qq:363302850
*/
通過下面的程式碼載入so檔案通過下面的程式碼載入so檔案
呼叫如下:
LOCAL_MODULE := com_nedu_jni_helloword_printf-jniLOCAL_MODULE := com_nedu_jni_helloword_printf-jniLOCAL_MODULE 表示so檔名
LOCAL_SRC_FILES 需要編譯的檔案
按照這篇文章(Get Your Eclipse-Integrated NDK On!)的介紹就可以在Eclipse編譯了。
第五步:使用so檔案:
通過下面的程式碼載入so檔案
2、javac編譯
進入java檔案所在路徑,呼叫javac命令,如圖:
android支援使用NDK開發C程式,關於配置NDK環境問題應該不用再贅述了,這個網上有很多,這裡通過一篇例項來講述簡單的JNI開發,大家可以參考這篇文章(Get Your Eclipse-Integrated NDK On!)搭建Eclipse編譯C語言為so檔案的開發環境。
native方法實現步驟如下:
1、在Java中宣告native()方法,然後編譯(javac);
2、用javah產生一個.h檔案;
3、編寫包含.h檔案的c檔案
4、編譯c檔案
5、使用編譯成功的so檔案。
第一步:
1、宣告native方法
本文轉自xyz_lmn51CTO部落格,原文連結:http://blog.51cto.com/xyzlmn/817227,如需轉載請自行聯絡原作者
相關文章
- gRPC 之 GoLang 入門 HelloWord(三)RPCGolang
- AndroidJNI入門第三篇——jni標頭檔案分析Android
- 【GoLang 那點事】實踐 gRPC 之 GoLang 入門 HelloWord(三)GolangRPC
- Java執行緒入門第一篇Java執行緒
- AndroidJNI相關Android
- AndroidJNI和NDKAndroid
- AndroidJNI遇到的問題Android
- 彙編入門第一篇,小白也能看懂
- spring心得1--spring入門介紹@bean的載入初講@第一個spring專案helloWordSpringBean
- Hibernate基礎-HelloWord
- DZ外掛製作簡易入門教程(自學手記)第一篇
- Flink入門-第一篇:Flink基礎概念以及競品對比
- 【linux】helloword原理分析及實戰Linux
- 入門入門入門 MySQL命名行MySql
- 小白的第一個HelloWord智慧合約
- 第一篇:開始進入 django 之旅Django
- 如何入CTF的“門”?——所謂入門就是入門
- 何入CTF的“門”?——所謂入門就是入門
- Opengl ES 3.0 on iOS--- HelloWord(繪製彩色矩形)iOS
- scala 從入門到入門+
- makefile從入門到入門
- ACM入門之新手入門ACM
- Springboot快速上手- 第二篇 helloWord走起Spring Boot
- 【小入門】react極簡入門React
- gRPC(二)入門:Protobuf入門RPC
- 機器學習能為你的業務做什麼?有些事情你肯定猜不到!(機器學習入門系列第一篇)機器學習
- 《Flutter 入門經典》之“Flutter 入門 ”Flutter
- 新手入門,webpack入門詳細教程Web
- Android入門教程 | RecyclerView使用入門AndroidView
- linux新手入門――shell入門(轉)Linux
- VSCode外掛開發全攻略(二)HelloWordVSCode
- 麒麟作業系統 (kylinos) 從入門到精通 - 系統設定 - 第一篇 系統準備作業系統
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- SqlSugar ORM 入門到精通【一】入門篇SqlSugarORM
- Storm入門指南第二章 入門ORM
- VUE入門Vue
- MyBatis 入門MyBatis
- CSS 入門CSS