Android---NDK开发随手笔记
来源:互联网 发布:在淘宝上买气排安全不 编辑:程序博客网 时间:2024/05/21 15:40
Android新手,也是用Android studio没多久,来公司实习需要用到JNI的知识,就顺便学了下NDK了,首先介绍一下在studio中安装使用NDK
使用jni有的是使用ndk-build方式,生成头文件,然后自己建立Android.mk文件,但是在AS中我们可以更简单,使用cmake。
一、下载cmake(外部构建工具)、ndk和LLDB(调试C、C++代码使用)
打开AS的sdkManager界面,勾选这三种工具,安装。
二、新建Android项目,跟普通建立项目是一样的,不过在填写名字那里,勾选 Include C++ Support 然后就跟普通的app一样,最后会有一个C++向导页面,这里解释下这几个是什么意思,我是初学者,这是网上看的,整理进来给大家,我使用的是默认的,直接finish。
- C++ Standard:使用下拉列表选择您希望使用哪种 C++ 标准。选择 Toolchain Default 会使用默认的 CMake 设置。
- Exceptions Support:如果您希望启用对 C++ 异常处理的支持,请选中此复选框。如果启用此复选框,Android Studio 会将 -fexceptions 标志添加到模块级 build.gradle文件的 cppFlags中,Gradle 会将其传递到 CMake。
- Runtime Type Information Support:如果您希望支持 RTTI,请选中此复选框。如果启用此复选框,Android Studio 会将 -frtti 标志添加到模块级 build.gradle文件的 cppFlags中,Gradle 会将其传递到 CMake。
三、到这里大家应该可以看到我们的项目里边多了一些内容,多了一个cpp文件夹,和一个cmake的目录:
还有gradle里边的一些依赖已经自动创建好了,我们自己不用操心。
自己先理解一下,cpp就是我们写的C++的文件,头文件等等之类的都放在这里。CmakeLists.txt是一个cmake构建的配置文件,我们写的C++文件都要在这里进行配置,cmake才会帮我们自动编译供Java使用。以下是详细解释:
1、在cpp 中,您可以找到属于项目的所有原生源文件、标头和预构建库。对于新项目,Android Studio 会创建一个示例 C++ 源文件 native-lib.cpp,并将其置于应用模块的 src/main/cpp/ 目录中。本示例代码提供了一个简单的 C++ 函数 stringFromJNI(),此函数可以返回字符串“Hello from C++”。
2、在External Build Files 中,您可以找到 CMake 或 ndk-build 的构建脚本。与 build.gradle 文件指示 Gradle 如何构建应用一样,CMake 和 ndk-build 需要一个构建脚本来了解如何构建您的原生库。对于新项目,Android Studio 会创建一个 CMake 构建脚本 CMakeLists.txt,并将其置于模块的根目录中。
下边我们自己写一个cpp文件,命名为hello.cpp,内容很简单:
如果我们需要在新加一些方法的话,每个方法都要在方法上步加一句:
extern "C" 意思是继承C语言的编码规范之类的
#include <jni.h>#include <string>extern "C"JNIEXPORT jstring JNICALLJava_com_yujie_italker_demo_MainActivity_helloFromJNI(JNIEnv *env, jobject obj){ return env -> NewStringUTF("nihao jim");}
然后我们在CMakeLists.txt中配置:也就是将native-lib改为我们自己写的就好,第一个小例子先这样偷懒做一下。
cmake_minimum_required(VERSION 3.4.1)
add_library( # Sets the name of the library. hello # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). src/main/cpp/hello.cpp )
find_library( # Sets the name of the path variable. log-lib # Specifies the name of the NDK library that # you want CMake to locate. log )
target_link_libraries( # Specifies the target library. hello # Links the target library to the log library # included in the NDK. ${log-lib} )然后就是在MainActivity.java里调用我们写的方法了:
- Android---NDK开发随手笔记
- Android NDK 开发笔记
- android NDK 开发笔记
- android 开发邮箱随手笔记(1)
- iOS开发随手笔记
- Unity3D开发随手笔记
- iOS开发随手笔记
- android NDK开发学习笔记
- Android NDK 开发(笔记一)
- android 开发随手记
- Android开发随手记
- Android 开发随手笔记之使用摄像头拍照
- [Android] Android Studio开发NDK笔记
- ndk配置+android jni开发笔记
- Android Studio进行NDK开发笔记
- Android学习笔记-NDK开发(一)
- Android学习笔记-NDK开发(二)
- Android 随手笔记 关于id
- 八月十五日考试总结
- Python3之实现单例模式
- Android真机调试--无线连接
- could not execute statement /com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'hibe
- IIS7/7.5如何开启URL伪静态【详解】
- Android---NDK开发随手笔记
- WebStorm运行React Native配置
- 建造模式(Builder)
- ROS Robotics Projects(4)物体检测与识别
- 【DIY】制作一个刷卡进门装置
- 一个进程监控脚本程序 .
- 《我们走在大路上》
- js字符串处理
- C# WinForm发送Email邮件