看到一个android jni的小demo,记录下来给大家分享一下!
在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/libls  

然后不要关闭模拟器(关掉再开动态库就没了,因为模拟器rom是只读)

执行java程序JNITest

会看到屏幕上打印出

JNITest Native String

Android Jni的具体使用方法就为大家介绍到这里。

【转:】http://developer.51cto.com/art/201001/181355.htm

更多相关文章

  1. Android(安卓)4.03 编译系统------envsetup.sh
  2. Android(安卓)创建服务器 NanoHttpd
  3. Android(安卓)平台基础开发简介
  4. [Android] 基于 Linux 命令行构建 Android(安卓)应用(一):关于 Andr
  5. 开发可统计单词个数的Android驱动程序(1)
  6. Android(安卓)4层框架
  7. Android中资源文件的Shape使用总结
  8. Android手机操作系统中的常用术语
  9. android屏幕监视工具 android screen monitor使用

随机推荐

  1. 推荐一系列优秀的Android开发源码
  2. ExpandableListView用法实例
  3. Android日常知识收集与总结之Android的Di
  4. Android UnitTest
  5. android Studio JDK环境变量配置
  6. Ubuntu为安装的软件添加启动图标
  7. build android adb on debian sid amd64
  8. Android中圆形和条形ProgressBar设置颜色
  9. Android 登录界面调用输入法时让界面自动
  10. Windows环境下 android-ndk-r10c 环境搭