Android studio编译JNI遇到的坑

1.加载build.gradle文件里面通过

externalNativeBuild {

cmake {

path file('src/main/cpp/CMakeLists.txt')

version '3.18.1'

}

}

加载CMakeList.txt文件

报错

1.加载demo项目,grader编译使用的SDK不是合适当前APP版本,需要修改成29的版本,或者本地as下载对应的31的sdk,minSDK版本最小适应26

2.移植过来的demo,JNI无法加载,显示搜不到对应的JNI方法,SDK插件版本与NDK版本不一致,导致搜索不到对应的JNI方法

3.打开Project Structure 默认是没有NDK的,手动安装NDK确保编译正常

4.报错

[CXX1405] error when building with cmake using D:\gongzuo\demo\FASTDDSServer-master\app\src\main\cpp\CMakeLists.txt: Build command failed.

Error while executing process C:\Users\user\AppData\Local\Android\Sdk\cmake\3.18.1\bin\cmake.exe with arguments {-HD:\gongzuo\demo\FASTDDSServer-master\app\src\main\cpp -DCMAKE_SYSTEM_NAME=Android -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_SYSTEM_VERSION=26 -DANDROID_PLATFORM=android-26 -DANDROID_ABI=arm64-v8a -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -DANDROID_NDK=C:\Users\user\AppData\Local\Android\Sdk\ndk\21.4.7075529 -DCMAKE_ANDROID_NDK=C:\Users\user\AppData\Local\Android\Sdk\ndk\21.4.7075529 -DCMAKE_TOOLCHAIN_FILE=C:\Users\user\AppData\Local\Android\Sdk\ndk\21.4.7075529\build\cmake\android.toolchain.cmake -DCMAKE_MAKE_PROGRAM=C:\Users\user\AppData\Local\Android\Sdk\cmake\3.18.1\bin\ninja.exe -DCMAKE_CXX_FLAGS=-std=c++11 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\gongzuo\demo\FASTDDSServer-master\app\build\intermediates\cxx\Debug\4t4fd482\obj\arm64-v8a -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\gongzuo\demo\FASTDDSServer-master\app\build\intermediates\cxx\Debug\4t4fd482\obj\arm64-v8a -DCMAKE_BUILD_TYPE=Debug -BD:\gongzuo\demo\FASTDDSServer-master\app.cxx\Debug\4t4fd482\arm64-v8a -GNinja}

存在CXX1405 这样的保存,且NDK可以使用但是无法生成os库,原因是因为DLL文件损坏导致,需要到网上去下载DLL库放置到C:\Windows\System32目录下,再执行 cmake成功

C:\Users\user\AppData\Local\Android\Sdk\cmake\3.18.1\bin>cmake.exe

Usage

cmake [options]

cmake [options]

cmake [options] -S -B

Specify a source directory to (re-)generate a build system for it in the

current working directory. Specify an existing build directory to

re-generate its build system.

Run 'cmake --help' for more information.

2.Cannot resolve corresponding JNI function Java_com_example_fastddsserver_MainActivity_ddsSayHellow. 无法解析对应的JNI函数

解决方案

1.去除勾选的Adroid NDK Support插件

2.检查NDK和SDK的版本

3.检查是否有阻止使用C++的插件

4.将Adroid NDK Support插件勾选回来,支持NDK

5.重启Android Studio

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio是一款由Google推出的集成开发环境,专门用于开发Android应用的工具。而JNI(Java Native Interface)是Android开发中用于实现Java和本地代码(如C、C++)之间相互调用的技术。 首先,Android Studio在2021年继续是Android应用开发的主要开发环境之一。它提供了丰富的功能,如代码编辑器、调试器、布局设计工具等,使开发者可以方便地创建、调试和部署Android应用。2021年的版本可能会有更新的特性和改进,以进一步提高开发效率和开发者体验。 而在Android开发中,JNI是一个重要的技术,它允许开发者将本地代码与Java代码进行交互。通过JNI,开发者可以在Java代码中调用本地代码的功能,从而实现一些高性能、底层的操作,比如图像处理、音视频编解码等。同时,本地代码也可以调用Java代码的功能,实现双向的数据传输。 对于开发者来说,学习和使用JNI需要一定的C或C++编程经验。首先,需要编写本地代码,通过JNI提供的接口与Java代码进行交互;然后,在Java代码中进行JNI调用,使用本地代码的功能。在Android Studio中,可以通过JNI支持来创建、编译和调试本地代码,以及在Java代码中进行JNI调用。 总而言之,Android StudioJNIAndroid应用开发中的两个重要组成部分。Android Studio提供了开发Android应用所需的工具和环境,而JNI则提供了Java和本地代码之间的桥梁,使开发者可以更灵活和高效地开发Android应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值