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



在原有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 JNICALL
Java_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());

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值