Android NDK入门 2012.4.4

本文详细介绍了如何在Android应用中整合C/C++库,从创建Java源文件、生成头文件到构建.so库的完整流程,帮助开发者高效地实现跨语言调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文讲解如何在Android里使用用c ,c++编写好的库

第一步:首先编写java源文件,然后编译

package com.testndkso.test;

import android.app.Activity;

public class TestNDKsoActivity extends Activity {
    /** Called when the activity is first created. */
 public native String StringInfo();
  
 static    //加载库
 {
  System.loadLibrary("testInc");
 }
 
    @Override   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.maintest);
        TextView textView = (TextView) findViewById(R.id.textView1);     
        String tempStr = StringInfo();
        textView.setText(tempStr);
        System.out.println("tempStr=="+tempStr);
        System.out.println(StringInfo());
    }
}

第二步:转到工程所在目录,用javah生成.h文件

在Docs窗口中输入:

C:\Documents and Settings\Administrator>e:

E:\>cd E:\TestNDKso

E:\TestNDKso>javah -classpath ./bin/classes -d jni com.testndkso.test.TestNDKsoActivity

成功后我们在这个工程的目录下自动生成一个jni文件,在这个文件目录下生成了一个com.testndkso.test.TestNDKsoActivity.h的头文件,如下所示:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_testndkso_test_TestNDKsoActivity */

#ifndef _Included_com_testndkso_test_TestNDKsoActivity
#define _Included_com_testndkso_test_TestNDKsoActivity
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_testndkso_test_TestNDKsoActivity
 * Method:    StringInfo
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_testndkso_test_TestNDKsoActivity_StringInfo
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

com_testndkso_test_TestNDKsoActivity.h文件 (这里的文件名可以自己取)

第三步:在eclipse中这个工程的jni的目录下建一个.c文件,文件名为java源文件中加载那个库的名字,在我这个例子中就是testInc.c,编写.c程序:

#include <string.h>
#include <jni.h>
JNIEXPORT jstring JNICALL Java_com_testndkso_test_TestNDKsoActivity_StringInfo(JNIEnv *env, jobject thiz)
{
   return (*env)->NewStringUTF(env, "Hello from JNI !");
}

第四步:在eclipse中这个工程的jni的目录下建一个Android.mk文件文件内容为:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := testInc
LOCAL_SRC_FILES := testInc.c

include $(BUILD_SHARED_LIBRARY)

第五步:接下来我们就可以利用Android NDK生成.so库了:

在控制台执行

C:\Documents and Settings\Administrator>e:

E:\>cd E:\TestNDKso\jni

E:\TestNDKso\jni>E:\android-ndk-r7b\ndk-build

 

OK!!!!!!!!

转载于:https://www.cnblogs.com/sushuilang/archive/2012/04/04/2432277.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值