Android Studio2.3上JNI开发
来源:互联网 发布:淘宝开店认证链接网址 编辑:程序博客网 时间:2024/05/24 01:43
转自:http://blog.csdn.net/yichang666/article/details/70228096
Android Studio2.2以后取代了原先的jni文件夹和mk文件,取代的是cpp文件夹,采用新的cmake编译方式,大大的简化了以前复杂的jni开发流程。
1)先说下官方提供的最简单的JNi开发,ndk的配置肯定是需要,但是还需要添加另外两个配置,可以直接在Setting-System Setting-Android SDK直接下载cmake和LLDB(NDK调试工具)
2)新建工程,跟一般项目不一样,在configure your new project时需要勾上Include C++ support
3)中间步骤就是一直选择next就可以,但是在Customize C++ Support选项卡中,可以进行对以下属性进行配置:
- C++ Standard:点击下拉框,可以选择标准 C++,或者选择默认 CMake 设置的 Toolchain Default 选项。
- Exceptions Support:如果你想使用有关 C++ 异常处理的支持,就勾选它。勾选之后,Android Studio 会在 module 层的 build.gradle 文件中的cppFlags 中添加-fexcetions 标志。
- Runtime Type Information Support:如果你想支持 RTTI,那么就勾选它。勾选之后,Android Studio 会在 module 层的 build.gradle 文件中的cppFlags 中添加-frtti 标志
4)生成的项目列表如下
c++文件放在cpp文件夹,比如这里为native-lib.cpp文件,CMakeLists.txt文件在app目录下,在gradle中对于cmakelists文件路径进行了配置,对整个项目进行Make Project,就可以自动生成.so文件,如下图所示:
在图左侧中生成了一个cmake的文件夹,由于没有在gradle中配置CPU类型,这里生成不同类型的.so文件。在Java文件中通过System.loadLibrary导入了so文件,并且书写了native方法来调用c++代码。
先了解cmakeLists文件的配置,方便于了解so文件的生成,
cmake_minimum_required(VERSION 3.4.1) #cmake的版本声明add_library(native-lib SHARED src/main/cpp/native-lib.cpp) #编译目标cpp文件生成so文件 add_library(lib_jni SHARED #动态库 IMPORTED)set_target_properties(lib_jni PROPERTIES IMPORTED_LOCATION
set(SOURECEDIR ${CMAKE_SOURCE_DIR}/..)#给变量设定指定值
${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/lib_jni.so) #添加第三方提供的so文件
target_include_directories(native-lib PRIVATE ${jni-dir}/include) #配置所需头文件的路径target_link_libraries(lib_jni
native-lib) #设置所有需要链接库的名称(包括静态库和动态库)
native-lib.cpp文件中的代码比较简单,这里简单说明下
#include <jni.h> //导入头文件 #include <string> extern "C" //jni中方法都是用c方式定义的,这里采用的c++文件,加入这段,表示这部分代码按C语言编译 JNIEXPORT jstring JNICALL //固定编写格式 其中jstring为返回类型,代表的是java里的string类型 Java_hiar_myapplication_MainActivity_stringFromJNI( //Java_包名_类名_方法名 JNIEnv *env, jobject /* this */) { //除了java方法传递过来的参数,还需要包含这两个参数 std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); //输出字符串 }
阅读全文
0 0
- Android Studio2.3上JNI开发
- Android Studio2.3上JNI开发
- android studio2.2初探ndk jni开发
- Android Studio2.1上C++开发(一)——第一个JNI程序
- 基于CMake 在Android studio2.2+ 中开发JNI
- android studio2.3.2增加jni
- android studio2.1.2中的jni调用
- Android Studio 上JNI开发
- Android studio2.3安装
- Android Studio2.3NDK的简单配置及快速开发
- Mac上安装Android Studio2.2.2
- Android Studio2.2中JNI的简单使用
- Android studio2.2 NDK,JNI的简单使用
- Android Studio2.2中JNI的简单使用
- Android Studio2.1.2搭建NDK开发环境
- Android Studio2.2下NDK开发初试
- Android Studio2.2 CMAKE高效NDK开发
- android studio2.2.2 鼠标放在方法上自动提示
- jQuery ajax
- 多Web服务器之间共享Session的解决方案
- 面向对象的第二个特征----继承III(子父类中成员的特点与覆盖)
- 第四周项目一建立单链表
- 第4周项目2- 建设“单链表”算法库
- Android Studio2.3上JNI开发
- UPDATE SET a.id = (select) 关联多张表更新多条记录
- 如何配置STM32的端口寄存器
- threadLocal
- 一篇很全面的freemarker教程
- Undefined symbols for architecture i386:和"_OBJC_CLASS_$_xx", referenced from:问题解决方法
- Android WebView常见问题及解决方案汇总
- 用sourcetree 将本地项目导入github
- LVS+OSPF