linux下eclipse构建并编译android一个简单jni项目

本文介绍如何在Linux系统中使用Eclipse构建和编译一个Android JNI项目。首先,通过创建一个新的Android工程并编写Java源代码,包含一个本地方法getJNItest()。然后,使用System.loadLibrary()加载库。接着,通过命令行进入工程目录执行NDK构建过程,以编译生成.so文件。最后,Java代码调用本地方法,实现与C/C++代码的交互,提高文件搜索性能。

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

因为项目要在nand和sdcard上搜索某一类型的文件,用java来实现速度太慢,因此要自己来写jni的代码,于是热热手先写一个简单写了一个简单的例子

第一,java源代码的编写,在eclips下面新建android工程,创建helloJNI.java

 

package com.john.helloJNI;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class helloJNI extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        TextView JNITest = (TextView)findViewById(R.id.jniTextView);
        Log.i("hellojni", "before!/n");
        String str = getJNItest();
        Log.i("hellojni", "before!/n");
        JNITest.setText(str);
    }
   
    static{
        System.loadLibrary("JNITest");
    }
   
    public native String getJNItest();
}

 

在命令行下进入工程所在目录,运行

javah -classpath bin -d jni 

 com.john.helloJNI.helloJNI

-d的含义是生成一个jni的目录,里面存放生成的jni的.h文件 ,com.john.helloJNI.helloJNI是类,生成com_john_helloJNI_helloJNI.h

编写com_john_helloJNI_helloJNI.c

#include "com_john_helloJNI_helloJNI.h"

JNIEXPORT jstring JNICALL Java_com_john_helloJNI_helloJNI_getJNItest(JNIEnv* env, jobject obj)
{
return (*env)->NewStringUTF(env, (char *)"JNITest Native String");
}

编写android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES:= /
com_john_helloJNI_helloJNI.c

LOCAL_C_INCLUDES:= /
$(JNI_H_INCLUDE)

LOCAL_PRELINK_MODULE := false
LOCAL_MODULE := libJNITest
LOCAL_MODULE_TAGS := optional

include $(BUILD_SHARED_LIBRARY)

把这二个文件com_john_helloJNI_helloJNI.c和android.mk放在前面建立的jni目录下

其实可以手动在ndk里面编译这3个文件,但是最好还是用eclipse来编译,这样有什么错误修改源代码也更方便。
在eclipse里面右击工程项目,选择最后一个properties,选择Builders->new->Program.这个时候会出现一个选项卡菜单。

Main选项卡中
location 填写 /bin/bash (因为我用的是unbuntu)
working Directory 填写 /bin
Argument填写
--login -c "cd /home/john/android/workspace/desktop/jni && /home/john/android/android-ndk-r5/ndk-build"

这里--login是登录bash,-c是命令, cd 后面是刚才创建jni目录,&&是说明还需要继续运行后面的命令,后面就是ndk的ndk-bulid文件
所在的目录了。
如图


后面的Reflesh选项卡和BuildOption选项卡如下图




其中二个的Specify Resources都要选中前面创建的jni文件夹。

现在配置完成了,退出后就可以看到eclipse自动在编译了,如果编译成功,会在工程目录下同步生成一个文件夹libs/armeabi,里面会有
生成的so文件。

简单的jni完成了,现在开始准备动手做项目了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值