您好,登錄后才能下訂單哦!
這篇文章給大家介紹Android Jni代碼的示例分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
在Android 模擬器中可以對Android手機操作系統進行適當的修改,增加各種功能,以滿足用戶的需求。那么今天我們會為大家帶來Android Jni的相關使用方法,以方便大家對這一系統的解讀。Android的應用程序(Dalvik VM)中使用JNI(Java Native Interface)調用C/C++開發的共享庫。
開發環境
(eclipse + Android ADT)
WindowsXP SP3
JDK 1.6.0.12
VMWARE+Ubuntu Linux 8.04
Android Jni使用方法步驟(1) Eclipse中新建Android工程
工程名 JNItest
Package名com.ura.test
Activity名 JNItest
應用程序名 JNItest
Android Jni使用方法步驟(2) 編輯main.xml
< ?xml version="1.0" encoding="utf-8"?>
< LinearLayout xmlns:android=
"http://schemas.Android.com/apk/res/Android"Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
>
< TextView
Android:id="@+id/JNITest"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="@string/JNITest"
/>
< /LinearLayout>
Android Jni使用方法步驟(3)編輯java文件
package com.ura.test; import Android.app.Activity; import Android.os.Bundle; import Android.widget.TextView; public class JNITest extends Activity { /** Called when the activity is first created. */ static { System.loadLibrary("JNITest"); } public native String GetTest(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String str =GetTest(); TextView JNITest = (TextView)findViewById(R.id.JNITest); JNITest.setText(str); } }
Android Jni使用方法步驟(4)生成head文件
編譯上面工程聲稱class文件,然后用javah工具生成c/c++頭文件。
javah -classpath bin -d jni com.ura.test.JNItest
生成的頭文件如下
/* DO NOT EDIT THIS FILE - it is machine generated */ #include < jni.h> /* Header for class com_ura_test_JNITest */ #ifndef _Included_com_ura_test_JNITest #define _Included_com_ura_test_JNITest #ifdef __cplusplus extern "C" { #endif /* * Class: com_ura_test_JNITest * Method: GetTest * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_ura_test_JNITest_GetTest (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
Android Jni使用方法步驟(5)編寫c/c++文件如下
#include "com_ura_test_JNITest.h"
#define LOG_TAG "JNITest"
#undef LOG
#include < utils/Log.h>
JNIEXPORT jstring JNICALL Java_com_ura_test_JNITest_GetTest
(JNIEnv * env, jobject obj)
{
return (*env)->NewStringUTF(env, (char *)
"JNITest Native String");LOGD("Hello LIB!\n");
}
Android Jni使用方法步驟(6)編寫Android.mk文件
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ com_ura_test_JNITest.c LOCAL_C_INCLUDES := \ $(JNI_H_INCLUDE) LOCAL_SHARED_LIBRARIES := libutils LOCAL_PRELINK_MODULE := false LOCAL_MODULE := libJNITest include $(BUILD_SHARED_LIBRARY)
Android Jni使用方法步驟(7)編譯生成動態庫
新建文件夾
~/mydroid/external/libJNITest
把上面編寫好的頭文件,c/c++源文件,make文件拷貝進上面目錄中
* 需要注意的是把PRELINK_MOUDULE設置成false
否則需要重新做成img文件再燒入。
在ubuntu中執行
cd cd mydroid/build/ envsetup.sh cd ~/mydroid cd external/libJNITest/ mm
編譯成功的后會在下面目錄中生成libJNITest.so文件
~mydroid/out/target/product/generic/system/lib/
Android Jni使用方法步驟(8)在模擬器中執行程序
首先要把動態庫拷進/system/lib中。
啟動模擬器
adb shell adb remount adb push libJNITest.so /system/lib
確認拷貝成功。
cd /system/lib ls
然后不要關閉模擬器(關掉再開動態庫就沒了,因為模擬器rom是只讀)
執行java程序JNITest
會看到屏幕上打印出
JNITest Native String
關于Android Jni代碼的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。