編輯:開發入門
在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
1.< ?XML version="1.0" encoding="utf-8"?>
2.< LinearLayout XMLns:android=
"http://schemas.Android.com/apk/res/android"
3.android:orIEntation="vertical"
4.android:layout_width="fill_parent"
5.android:layout_height="fill_parent"
6.>
7.< TextVIEw
8.android:id="@+id/JNITest"
9.android:layout_width="fill_parent"
10.android:layout_height="wrap_content"
11.android:text="@string/JNITest"
12./>
13.< /LinearLayout>
android Jni使用方法步驟(3)編輯Java文件
14.package com.ura.test;
15.import android.app.Activity;
16.import android.os.Bundle;
17.import android.widget.TextVIEw;
18.public class JNITest extends Activity {
19./** Called when the activity is first created. */
20.static {
21.System.loadLibrary("JNITest");
22.}
23.public native String GetTest();
24.@Override
25.public void onCreate(Bundle savedInstanceState) {
26.super.onCreate(savedInstanceState);
27.setContentVIEw(R.layout.main);
28.String str =GetTest();
29.TextView JNITest = (TextView)findVIEwById(R.id.JNITest);
30.JNITest.setText(str);
31.}
32.}
android Jni使用方法步驟(4)生成head文件
編譯上面工程聲稱class文件,然後用Javah工具生成c/c++頭文件。
33.Javah -classpath bin -d jni com.ura.test.JNItest
生成的頭文件如下
34./* DO NOT EDIT THIS FILE - it is Machine generated */
35.#include < jni.h>
36./* Header for class com_ura_test_JNITest */
37.#ifndef _Included_com_ura_test_JNITest
38.#define _Included_com_ura_test_JNITest
39.#ifdef __cplusplus
40.extern "C" {
41.#endif
42./*
43.* Class: com_ura_test_JNITest
44.* Method: GetTest
45.* Signature: ()LJava/lang/String;
46.*/
47.JNIEXPORT JString JNICALL Java_com_ura_test_JNITest_GetTest
48.(JNIEnv *, jobject);
49.#ifdef __cplusplus
50.}
51.#endif
52.#endif
android Jni使用方法步驟(5)編寫c/c++文件如下
53.#include "com_ura_test_JNITest.h"
54.#define LOG_TAG "JNITest"
55.#undef LOG
56.#include < utils/Log.h>
57.JNIEXPORT JString JNICALL Java_com_ura_test_JNITest_GetTest
58.(JNIEnv * env, jobject obj)
59.{
60.return (*env)->NewStringUTF(env, (char *)
"JNITest Native String");
61.LOGD("Hello LIB!\n");
62.}
Android Jni使用方法步驟(6)編寫android.mk文件
63.LOCAL_PATH:= $(call my-dir)
64.include $(CLEAR_VARS)
65.LOCAL_SRC_FILES:= \
66.com_ura_test_JNITest.c
67.LOCAL_C_INCLUDES := \
68.$(JNI_H_INCLUDE)
69.LOCAL_SHARED_LIBRARIES := libutils
70.LOCAL_PRELINK_MODULE := false
71.LOCAL_MODULE := libJNITest
72.include $(BUILD_SHARED_LIBRARY)
android Jni使用方法步驟(7)編譯生成動態庫
新建文件夾
73.~/mydroid/external/libJNITest
把上面編寫好的頭文件,c/c++源文件,make文件拷貝進上面目錄中
* 需要注意的是把PRELINK_MOUDULE設置成false
否則需要重新做成img文件再燒入。
在ubuntu中執行
74.cd
75.cd mydroid/build/
76.envsetup.sh
77.cd ~/mydroid
78.cd external/libJNITest/
79.mm
編譯成功的後會在下面目錄中生成libJNITest.so文件
80.~mydroid/out/target/product/generic/system/lib/
android Jni使用方法步驟(8)在模擬器中執行程序
首先要把動態庫拷進/system/lib中。
啟動模擬器
81.adb shell
82.adb remount
83.adb push libJNITest.so /system/lib
確認拷貝成功。
84.cd /system/lib
85.ls
然後不要關閉模擬器(關掉再開動態庫就沒了,因為模擬器rom是只讀)
執行Java程序JNITest
會看到屏幕上打印出
JNITest Native String
android Jni的具體使用方法就為大家介紹到這裡。
創建內容提供器和 Google Maps 應用程序您已經看到了一個完整的應用程序示例,現在簡要討論一下更加復雜的應用程序。內容提供器和 Google Maps本教程中討
所需的工具開始開發 Android 應用程序的最簡捷的方式是下載 android SDK 和 Eclipse IDE(參見 參考資料)。android 開發可
public class DraftTest extends Activity { /** Called when the activity
android Software Developer Kit我們已經大致了解了 Android 平台,現在討論如何設置 Eclipse 環境來支持 android 應用