Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android系列之Android開發教程代碼實例

Android系列之Android開發教程代碼實例

編輯:Android開發實例

在Android模擬器中可以對Android手機操作系統進行適當的修改,增加各種功能,以滿足用戶的需求。那麼今天我們會為大家帶來Android JNI的相關使用方法,以方便大家對這一系統的解讀。Android的應用程序(Dalvik VM)中使用JNI(Java Native Interface)調用C/C++開發的共享庫。

一、    開發環境

1.         Eclipse + Android SDK + ADT

2.         JDK 1.6或1.5

3.         VMWARE+Ubuntu Linux

4.         Android源代碼

 

二、    在Eclipse中新建Android工程

Ø  工程名 JNITest

Ø  Package名Test.powerise.JNITest

Ø  Activity名 JNItest   

Ø  應用程序名 JNItest  

三、    編輯res/layout/main.xml內容如下

 

注:Test_powerise_JNITest_JNITest.c前面有一個tab,$(JNI_H_INCLUDE)前面有一個tab

 

八、    編譯生成動態庫

1.         打開Ubuntu虛擬機

2.         新建文件夾    路徑:~/mydroid/external/libJNITest(mydroid的為android的源碼根文件夾)

3.         把上面編寫好的頭文件、c/c++源文件、make文件拷貝進上面目錄中

4.         執行如下命令:

 

1 cd mydroid/external/libJNITest   
2 . ../../build/envsetup.sh (注:.和../之間有一個空格)
3 mm 注:如果上面的命令不成功或沒有加最前面的點,這個命令將無效

 

編譯成功的後會在下面目錄中生成libJNITest.so文件

 

mydroid/out/target/product/generic/system/lib/ 

九、    在模擬器中執行程序

首先要把so文件拷到/system/lib目錄下

1.         啟動模擬器

2.         設置android sdk的環境變量

3.         運行cmd,執行如下命令:

 

adb remount   
adb push libJNITest.so /system/lib

 

不要關閉模擬器,運行java程序JNITest,屏幕會出現“JNITest Native String”這段字符串。代碼執行成功!

 

代碼
<?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">
<TexTestiew
android:id="@+id/JNITest"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/jni_test" />
</LinearLayout>

四、    編輯Test.poserise.JNITest下的java文件JNITest.java

  

代碼
 1 package Test.powerise.JNITest;   
2
3  import android.app.Activity;
4  import android.os.Bundle;
5  import android.widget.TexTestiew;
6
7  public class JNITest extends Activity {
8 static {
9 System.loadLibrary("JNITest");
10 }
11
12 public native String GetTest();
13
14 public void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16 setContenTestiew(R.layout.main);
17 String str = GetTest();
18 TexTestiew JNITest = (TexTestiew) findViewById(R.id.JNITest);
19 JNITest.setText(str);
20 }
21 }
22

 

五、    用javah命令生成head文件

 

1.         設置好jdk環境變量

2.         運行cmd進入工程的根目錄下

3.         運行javah -classpath bin -d jni Test.powerise.JNITest.JNITest

4.         會在根目錄下生成一個.h的頭文件

內容如下:

 

代碼
 1 /* DO NOT EDIT THIS FILE - it is machine generated */  
2 #include <jni.h>
3 /* Header for class Test_powerise_JNITest_JNITest */
4
5 #ifndef _Included_Test_powerise_JNITest_JNITest
6 #define _Included_Test_powerise_JNITest_JNITest
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 /*
11 * Class: Test_powerise_JNITest_JNITest
12 * Method: GetTest
13 * Signature: ()Ljava/lang/String;
14 */
15 JNIEXPORT jstring JNICALL Java_Test_powerise_JNITest_JNITest_GetTest
16 (JNIEnv *, jobject);
17
18 #ifdef __cplusplus
19 }
20 #endif
21 #endif
22

  六、    編寫C/C++文件如下

 

代碼
#include "Test_powerise_JNITest_JNITest.h"   
JNIEXPORT jstring JNICALL Java_Test_powerise_JNITest_JNITest_GetTest (JNIEnv * env, jobject obj)
{
return (*env)->NewStringUTF(env, (char *)"JNITest Native String");
}

 

七、    編寫Android.mk文件

 

 

 

代碼
 1 LOCAL_PATH := $(call my-dir)   
2 include $(CLEAR_VARS)
3 LOCAL_SRC_FILES:= \
4 Test_powerise_JNITest_JNITest.c
5 LOCAL_C_INCLUDES := \
6 $(JNI_H_INCLUDE)
7 LOCAL_SHARED_LIBRARIES := libutils
8 LOCAL_PRELINK_MODULE := false
9 LOCAL_MODULE := libJNITest
10 include $(BUILD_SHARED_LIBRARY)

轉自:http://www.cnblogs.com/jk1001/archive/2010/07/25/1784529.html

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved