專案名:HelloFromC
一、在開始jni程式設計之前對我們使用的環境進行如下配置:(在windows環境下)
1、下載android-ndk-r7b,解壓放在C:\android-ndk-r7b目錄下。(方便輸入命令,也可以自定目錄)
2、下載cygwin。
3、配置NDK的
爲了方便直接在命令列裏面使用ndk-build
需要給cygwin的環境變數裏面新增ndk的目錄
目錄/etc/profile/
4、執行cygwin。(可輸入如下命令:make
輸入make
顯示出來
二、為eclipse增加c和c++的開發外掛 CDT外掛
Help中的install
選擇
等待展開,選擇Programing
選擇c/c++
一路next下去。
同意licenses
安裝成功會提示是不是確認重啟eclipse,重啟就完成安裝。
三、JNI簡單案例:
Java程式碼呼叫一個C方法列印HelloFromC
MainActivity:
package com.csdn.hello;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
}
main.xml:
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
</LinearLayout>
cmd 進入eclipse中安卓工程HelloFromC的目錄:
D:\WorkSpace\HelloFromC\bin\classes
輸入: javah com.csdn.hello,MainActivity
生成該檔案對應的標頭檔案:com_csdn_hello_MainActivity.h
在HelloFromC根目錄下建立名為jni的資料夾;
將其複製到該目錄下;
com_csdn_hello_MainActivity.h:
#include <jni.h>
#ifndef _Included_com_itheima_hello2_MainActivity
#define _Included_com_itheima_hello2_MainActivity
#ifdef __cplusplus
extern “C” {
#endif
JNIEXPORT jstring JNICALL Java_com_csdn_hello_MainActivity_helloFromC
#ifdef __cplusplus
}
#endif
#endif
jni目錄下加入Android.mk檔案:
並編寫Hello.c檔案:
#include “com_csdn_hello_MainActivity.h”
JNIEXPORT jstring JNICALL Java_com_csdn_hello_MainActivity_helloFromC
開啟cygwin
輸入 cd..
cd ..
切換到linux根目錄下
然後進入到應用程式目錄
cd cydrive/d/WorkSpace/HelloFromc
ndk-build 進行編譯,生成動態庫:
在D:\WorkSpace\HelloFromC2\obj\local\armeabi下會自動生成
libHello.so檔案
最後在如上的MainActivity中的static程式碼塊中載入動態庫,即Android.mk中LOCAL_MODULE
然後部署應用程式,點選按鈕即可利用土司列印出結果 HelloFromC
本文來自新浪部落格