Android NDK (由原java工程 更改 为NDK 工程)

来源:互联网 发布:经济数据库万得 编辑:程序博客网 时间:2024/06/05 23:45

在原有Android 项目的基础上如果想添加C++程序,可以按照如下步骤去修改,以下步骤本人亲自实验,在我自己这里测试是完全可行的。

Android Studio 版本为2.3.2 

1、首先Android Studio要有开发NDK的环境,环境配置:Android Studio 中要安装 Android SDK->SDK Tools中安装 CMake, LLDB, NDK.  主要SDK更新来自于网站:dl.google.com .所以一定要保证电脑可以翻墙。否则安装不成功(或者也可以去找离线安装的方法,我没试过)。
2、新建一个Android NDK 工程,New Project页面勾选Include C++ support  。 (这里新建一个主要是对照着容易修改)



3、打开原有Android Java工程,在Project 工具栏选择,Project Files 选项 ,


下边依次打开app->app->src->build.gradle(Module:app)  一共修改两处: (1) android{ defaultConfig{ "此处加入externalNativeBuild{}"} };(2) android{  "此处加入externalNativeBuild{}" };  对比Android NDK 文件自己修改这两处。



4、上边设置了path"CMakeLists.txt" ,需要将Android NDK工程的 CMakeLists.txt 文件拷贝进Android Java工程 的app->app->src 文件夹中,也就是与build.gradle(Module:app)同一个文件夹。

图片参照第3步下边的图片

5、上边拷入的CMakeLists.txt里面有一些库的构建,所以需要有相应的cpp源文件,从CMakeLists中的函数或者对比两个工程可知,cpp文件应该在app->app->src->main 文件夹下,直接复制cpp文件夹。进入即可。

图片参照第3步下边的图片

6、打开文件上边拷贝进去的native-lib.cpp文件发现函数名称中包含的包名不对应,Java_com_example_sunshine_sample_null_c_MainActivity_stringFromJNI  即,java与MainActivity之间的问包名,对比着修改包名为原Android Java 工程的包名。 (到此为止这个函数还没有进行函数声明,可以先注释掉,用的时候再启用)

#include <jni.h>#include <string>extern "C"JNIEXPORT jstring JNICALLJava_com_example_sunshine_sample_1null_1c_MainActivity_stringFromJNI(        JNIEnv *env,        jobject /* this */) {    std::string hello = "Hello from C++";    return env->NewStringUTF(hello.c_str());}


7、现在开始编译发现没有问题,可以在MainAcMativity中调用
System.loadLibrary("native-lib");  并且进行函数声明, 启用native-lib.cpp中的函数实现。

static {    System.loadLibrary("native-lib");}

public native String stringFromJNI();


8、现在已经可以在MainAcMativity 中调用 C++ 程序。 可以添加一个Text View控件,然后调用stringFromJNI函数进行显示。

TextView tv = (TextView) findViewById(R.id.sample_text);tv.setText(stringFromJNI());

  
1 0
原创粉丝点击