首页 > 系统 > Android > 正文

Android Studio 2.2 NDK开发环境搭建【转载+补充新接口】

2019-11-14 13:00:08
字体:
来源:转载
供稿:网友

本文为是转载文章,请大家多多支持原创作者

本文出自 http://blog.csdn.net/shensky711/article/details/52763192

感谢原创作者 HansChen_

----------------------------------------------------以下是转载内容----------------------------------------------------

目录(?)[+]

转载请标明出处:http://blog.csdn.net/shensky711/article/details/52763192 本文出自: 【HansChen的博客】

Android应用程序使用NDK的意义在这里就不说了,本文主要讲解如何在Android Studio 2.2下如何一步步搭建NDK开发环境。

下载NDK和工具

Android Studio2.2开始推荐开发者使用CMake去构建本地代码,在构建之前,我们需先安装下面三个依赖:

NDK: a set of tools that allows you to use C and C++ code with Android.CMake: an external build tool that works alongside Gradle to build your native library. You do not need this component if you only plan to use ndk-build.LLDB: the debugger Android Studio uses to debug native code.

这里写图片描述

我们可以使用SDK Manager进行下载,菜单位置:Tools > Android > SDK Manager,勾选后安装即可

创建或者导入native项目

创建工程

这里写图片描述在这里要注意勾选这个Include C++ Support

接下来一路next最后finish,工程就创建好了。创建好之后系统默认生成了个demo。在Android Studio2.2下,目录结构发生了变化

这里写图片描述 所有c/c++文件都应放置在src/main/cpp/目录(以前是在jni目录)

配置build.gradle

android {    ...    defaultConfig {        ...        externalNativeBuild {            cmake {                //设置编译工具链                arguments "-DANDROID_TOOLCHAIN=clang"                //需编译生成的ABI类型                abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'            }        }        ndk {            //打包进APK的ABI类型            abiFilters "armeabi", "armeabi-v7a", "x86"        }    }    externalNativeBuild {        cmake {            //配置CMakeLists.txt的路径            path 'CMakeLists.txt'        }    }    ...}123456789101112131415161718192021222324252627282930123456789101112131415161718192021222324252627282930

这里写图片描述 配置之后,我们就会发现工程终于变成这种结构了,其中cpp里面的是源文件,External Build Files是CMakeLists文件。

当然,想要正常编译,我们还需要学习CMake文件,这里推荐一篇文章:CMake 入门实战

-------------------------------------以上是转载内容,以下为SleepingBug个人补充---------------------------------------------------

简单添加新接口

在MainActivity同目录下增加JniTest类:

public class JniTest {    public static native String getString();}

在native-lib.cpp添加JniTest的getString实现函数:

//特别注意!下面函数不要直接复制我的代码来测试,大家要根据实际包名来写!

extern "C"jstringjava_com_jnidemo_acer_jnidemo_JniTest_getString( JNIEnv *env,jobject /* this */){    return env->NewStringUTF("Hello JniTest");}

修改MainActivity中onCreate里面的字符串显示:

//tv.setText(stringFromJNI());tv.setText(JniTest.getString());

运行app显示 

Hello JniTest

表明新接口添加正常可用!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表