IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 往android studio原生java工程中添加jni的过程 -> 正文阅读

[C++知识库]往android studio原生java工程中添加jni的过程

**

一、配置步骤:

**
第一步是在/src/main/中建立一个文件夹cpp
第二步是在文件夹中建立两个文件一个是native-lib.cpp和CMakeLists.txt
第三步在上述两文件中添加如下内容:

//native-lib.cpp
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring
JNICALL
Java_com_example_ls_test1_Main1Activity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}
#CMakeLists.txt
cmake_minimum_required(VERSION 3.4.1)

add_library( # Sets the name of the library.
             native-lib
             # Sets the library as a shared library.
             SHARED
             # Provides a relative path to your source file(s).
             native-lib.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.
                       native-lib
                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

第四步往src目录下的build.gradle文件中补充与CMakeLists.txt和native-lib.cpp的相关信息进行关联,具体如下步骤:
在这里插入图片描述
(1)在defaultConfig子项中添加,支持C++的编译选项:

  externalNativeBuild {
      cmake {
          cppFlags "-std=c++11"
      }
  }

(2)在android子项中添加关联CMakeLists.txt信息,其中Cmake版本号可以不填写

    externalNativeBuild {
        cmake {
            path file('src/main/cpp/CMakeLists.txt')
            version '3.10.2'
        }
    }

(3)点击文件右上角中的Sync Now进行同步即可
在这里插入图片描述
**

二、编译遇到的问题

**
1、一般情况下如果我们的工程配置是我们自己的IDE生成的话一般是不会报错的
2、如果是拿了原来旧的工程或者别人生成的工程然后再添加支持JNI的话,此时有可能会报如下的错:
(1)类似如下的错误,可能是由于工程中另一个总的build.gradle中gradle的版本号有差异导致的。
此时需要修改为与你的IDE环境相匹配的版本应该就没有问题了,我这里由于重新新建一个NativeC++工程IDE默认的版本为4.0.1,因此我将原来的旧工程的3.2.1修改为4.0.1后再同步一下这个问题就没有了。

A problem occurred configuring project ':app'.
> java.lang.NullPointerException (no error message)
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
	at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:80)
	at 
	... 115 more

在这里插入图片描述
(2)如果还出现其他问题的话可能需要关注一下如下几个点应该会对配置有帮助:
1、ndk版本是否正确
2、配置的ndk路径是否正确,这里包括系统的环境变量中的路径
3、CMake的版本是否正确

三、总结

本文主要针对的是有原来原生Java 的安卓工程添加支持JNI出现的问题和解决思路进行了记录,对于如果直接新建JNI工程不在本文的范围内,希望对日常开发遇到该类的问题的开发者,能够提供一个有效的解决思路。

参考链接:https://blog.csdn.net/u010456460/article/details/108443514

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 10:40:43  更:2021-09-10 10:42:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:57:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码