HelloJNI——创建NDK工程(NDK r10d)

这篇博客介绍了如何使用Android NDK r10d在Eclipse Kepler环境下创建一个包含本地C++支持的Android项目。步骤包括新建Android项目、添加本地支持、构建项目、在Activity中添加功能、定义原生方法、加载本地库、编写C++代码,最终实现从C++返回'Hello From CPP'字符串并在运行时显示。

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

平台

安装配置不再赘述

  • Android NDK r10d
  • Eclipse Kelper
  • Android SDK

step1 Create a New Android project

创建一个新的android application project

step2 Add Native Support

工程右键,android tools–>add native support
add native support
工程中就自动生成jni文件夹并生成和工程名相同的对应cpp文件以及makefile文件
jni文件夹及内容

step3 Build Project

一般工程都是build automatically
检查CDT Build Console中,可以看到build过程

18:40:32 **** Build of configuration Default for project TestJNI ****
"F:\\android-ndk-r10d\\ndk-build.cmd" all 
Android NDK: WARNING: APP_PLATFORM android-21 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml    
[armeabi] Compile++ thumb: TestJNI <= TestJNI.cpp
[armeabi] StaticLibrary  : libstdc++.a
[armeabi] SharedLibrary  : libTestJNI.so
[armeabi] Install        : libTestJNI.so => libs/armeabi/libTestJNI.so
18:40:41 Build Finished (took 8s.417ms)

step4 Open up the Activity class

根据以下需求在activity中添加

step5 Add a function which we will implement natively in C++

即在android activity里建立和c++文件交互的功能函数
比如定义原生方法,从JNI里的C++文件获取String

public native String  stringFromJNICPP();
……
public void onCreate(Bundle savedInstanceState){
……
        TextView myTextField = (TextView)findViewById(R.id.myTextField);
        myTextField.setText(stringFromJNICPP());  
}

step6 Load the native library

在acitivity里需要加载生成的动态连接库

static {
        System.loadLibrary("TestJNI");//前面自己定义的libs里生成的so文件名
}

step7 Add the native C++ code

开始写c++文件里的功能
原始的c++文件中只有一句

#include <jni.h>

在后面加上自己要写的内容
比如返回一个“Hello From CPP”String

#include <jni.h>
#include <string.h>
#include <android/log.h>
extern "C" {
     JNIEXPORT jstring JNICALL Java_com_example_testjni_TestJNI_stringFromJNICPP(JNIEnv * env, jobject obj);
 };//com_example_testjni_TestJNI为自己的包名里对应的activity名
 JNIEXPORT jstring JNICALL Java_com_example_testjni_TestJNI_stringFromJNICPP(JNIEnv * env, jobject obj)
 {
     return env->NewStringUTF("Hello From CPP");
 }

step8 build&run

在project里选择Build Project,并且开启一个虚拟机run以下建立的ndk工程
既可以在activity里显示从c++文件传送过来的string数据

ndk run

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值