android jni总结,Android JNI总结.doc

本文详细介绍了Android中JNI(Java Native Interface)的多种实现方式,包括创建Java应用、生成头文件、编写C/C++代码以及配置Android.mk文件进行编译。通过示例展示了如何在Java代码中调用本地方法,并在C/C++层面实现相应功能,从而实现Java与本地代码的交互。
摘要由CSDN通过智能技术生成

Android JNI总结

JNI总结

JNI有多重实现方式,一下会详细讲解多种方式:

1 应用级

用eclipse构建一个应用程序,JNITest1。

Xml代码

< ?xml version="1.0" encoding="utf-8"?>

< LinearLayout xmlns:android=

"http://schemas.A/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>

JAVA代码:

package com.jni.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. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

String str=GetTest();

TextView tv=(TextView)findViewById(R.id.JNITest);

tv.setText(str);

}

static{

System.loadLibrary("JNITest1");//libJNITest1.so

}

public native String GetTest();

}

在java文件生成class文件后,进入工程根目录,使用如下命令:

javah -classpath bin -d jni com.jni.test.JNITest

会在根目录下生成jni目录:

com_jni_test_JNITest.h如下:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include

#ifndef __com_jni_test_JNITest__

#define __com_jni_test_JNITest__

#ifdef __cplusplus

extern "C"

{

#endif

JNIEXPORT jstring JNICALL Java_com_jni_test_JNITest_GetTest (JNIEnv *env, jobject);

#ifdef __cplusplus

}

#endif

#endif /* __com_jni_test_JNITest__ */

在external目录下,建立目录TestJNI/libJNITest1,将com_jni_test_JNITest.h复制到该目录下,建立a.c如下:

#include "com_jni_test_JNITest.h"

#define LOG_TAG "JNITest"

#undef LOG

#include

JNIEXPORT jstring JNICALL Java_com_jni_test_JNITest_GetTest

(JNIEnv *env, jobject fggg)//一定要补上

{

return (*env)->NewStringUTF(env,(char *)"JNITest1 native String");

LOGD("Hello LIB!\n");

}

编写Android.mk文件,内容如下:

LOCAL_PATH:=$(call my-dir)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值