千家信息网

Android Jni代码的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家介绍Android Jni代码的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在Android 模拟器中可以对Android手机操作系统进行适当的修改,增加
千家信息网最后更新 2026年11月02日Android Jni代码的示例分析

这篇文章给大家介绍Android Jni代码的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

在Android 模拟器中可以对Android手机操作系统进行适当的修改,增加各种功能,以满足用户的需求。那么今天我们会为大家带来Android Jni的相关使用方法,以方便大家对这一系统的解读。Android的应用程序(Dalvik VM)中使用JNI(Java Native Interface)调用C/C++开发的共享库。

开发环境

  1. (eclipse + Android ADT)

  2. WindowsXP SP3

  3. JDK 1.6.0.12

  4. VMWARE+Ubuntu Linux 8.04

Android Jni使用方法步骤(1) Eclipse中新建Android工程

  1. 工程名 JNItest

  2. Package名com.ura.test

  3. Activity名 JNItest

  4. 应用程序名 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文件

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++文件如下

  1. #include "com_ura_test_JNITest.h"

  2. #define LOG_TAG "JNITest"

  3. #undef LOG

  4. #include < utils/Log.h>

  5. JNIEXPORT jstring JNICALL Java_com_ura_test_JNITest_GetTest

  6. (JNIEnv * env, jobject obj)

  7. {

  8. return (*env)->NewStringUTF(env, (char *)
    "JNITest Native String");

  9. LOGD("Hello LIB!\n");

  10. }

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代码的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

文件 使用方法 方法 步骤 模拟器 程序 生成 工程 编译 代码 示例 分析 成功 内容 动态 拷贝 更多 目录 系统 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 科技企业和互联网企业 互联网科技的 广州互联网络科技有限公司 博兴的互联网电子科技公司 互联网之后的科技是什么 互联网还是高科技吗 互联网科技公司实习生 苏州五指互联网络科技有限 互联网科技产业特征 玉溪互联网科技怎么选 互联网媒体平台算高科技产业 互联网科技大奖都有哪些公司 爱医互联网络科技 电子商务与互联网科技的关系 黑云互联网科技有限公司 有人说阿里系是互联网科技企业 扫呗互联网科技有限公司 世界互联网科技成果奖 北京军民互联网科技公司 精品咖啡豆 科技互联网公司装修 互联网扶贫科技 青海省互联网新科技 互联网保险科技创业 广东工业互联网大赛深圳学泰科技 扫呗互联网科技有限公司 互联网科技职业技能培训学校 互联网的黑科技实验室 互联网科技企业文化
0