千家信息网

Android Jni代码的示例分析

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章给大家介绍Android Jni代码的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在Android 模拟器中可以对Android手机操作系统进行适当的修改,增加
千家信息网最后更新 2025年11月08日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安全错误 数据库的锁怎样保障安全 中石油邮箱 服务器 福州尚坤网络技术有限公司 什么是正在访问不安全服务器 三国杀服务器登录错误代码56 查询数据库的字符 关于网络技术在国家的地位 国外代理服务器免费 浏览器 宁德软件开发招聘信息 数据库中建两个表的联系 数据库数据表的结构图 服务器排行榜性价比高戴尔小企业 北京多云互联网络科技有限公司 软件开发 建筑工程 valves在数据库的意思 山西开源软件开发性价比高 中国电信3g网络技术体制 软件开发人员键盘推荐 数据库如何设置字母加数字sql 服务器能提供什么服务 白城软件开发工具 北京市网络安全园区 大菠萝2无法连接服务器 无线网络安全类型是不安全 瑞昌市工信局网络安全发言稿 网络安全等保工作方案 网络安全手抄报写什么意思 方舟百里服务器 网络安全知识都有哪些内容 山西潮流软件开发推广 怎么查看数据库表名代表啥意思
0