部署ndk环境(废弃)

UE5.6打包Pico VR应用:JDK 21与NDK r27c环境配置全攻略 在移动应用开发中,Android环境配置是构建流程的基石,其核心在于Java开发工具包(JDK)与原生开发工具包(NDK)的版本协同。JDK为Gradle构建系统提供运行时,而NDK负责将C++代码编译为设备可执行的本地库,两者的版本匹配直接决定了编译的成败与应用的稳定性。对于追求高性能的VR应用开发,稳定的工具链能确保渲染、物理等核心模块在Android平台上正确编译与优化。本文聚焦于UE5.6引擎打包Pico VR应用这一具体场景,深入解析为何官方指定JDK 21与NDK r27c这一组合,并提供了从系 阅读详情

1.从网上获取android-ndk-r20,首先肯定是要有NDK的包,去http://developers.google.cn谷歌的中国官方网站上面去下.然后配置好环境变量

在配置ndk系统环境变量,添加一个变量名“NDK_ROOT”,值为NDK的路径。

在path中新建%NDK_ROOT%

2.在File---Project Structure中配置好ndk的路径

3.在项目名所在的目录下创建一个jni的文件夹,在这个目录里,添加c/c++文件

4.在创建好的jni目录下创建一个Android.mk文件,(就是jni所在路径的makefile)

5.在Android.mk中写如下代码

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)

#libtestjni.so  //生成so的名字
LOCAL_MODULE := testjni   //生成模块的规则,生成的so的名字testjni
LOCAL_SRC_FILES := test.cpp   //生成模块的规则,so依赖的cpp文件可以有多个
LOCAL_LDLIBS := -llog    //生成模块的规则,当前so依赖的so

include $(BUILD_SHARED_LIBRARY)   //生成尾缀是so的文件

6 修改 项目名app/build.gradle
在这个文件中的 android{}作用域中添加如下代码

sourceSets {
        main.jniLibs {
            //表示生产的so文件所在路径在什么位置
            source {
                srcDirs = ['../libs']
            }
        }
    }

    externalNativeBuild {
        ndkBuild {
            //表示构件androidJNI的Android.mk的所在路径
            path '../jni/Android.mk'
        }
    }

7.在jni路径下创建一个test.cpp,并随便填充点代码,使用Android studio 中的Terminal命令行进入到jni目录下输入ndk-build.cmd,如果能生产so文件说明cpp编译环境成功。

test.cpp代码

void testJni_Hello()
{
    return;
}

8.在目录下面创建一个HelloJNI.java的文件夹,创建相关的函数

使用JNI函数的方式

//调用jni函数的方法
HelloJNI.getInstance().hello_jni();

HlloeJNI.java

package com.ldw.hello;

/**
 * author: ldw
 * created on: 2019/10/11 3:06
 * description:
 */
//专门调用jni C++接口的类
public class HelloJNI {

    private static HelloJNI instance = null;
    //设置一个单例
    public static HelloJNI getInstance() {
        if (instance == null) {
            instance = new HelloJNI();
        }

        return instance;
    }

    //提供一个调用JNI接口的成员方法
    public native void hello_jni();

    //加载cpp给提供的 动态库
    static {
        System.loadLibrary("testjni"); //libtestjni.so
    }
}

9.在命令窗口下输入命令javah -jni com.ldw.hello.HelloJNI

执行命令以后java目录下生成com_ldw_hello_HelloJNI.h文件

这样java中的方法hello_jni()对应到c语言中的方法是Java_com_ldw_hello_HelloJNI_hello_1jni

com_ldw_hello_HelloJNI.h文件内容如下,这个文件都是函数的声明,需要在实现函数test.cpp中实现

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_ldw_hello_HelloJNI */

#ifndef _Included_com_ldw_hello_HelloJNI
#define _Included_com_ldw_hello_HelloJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_ldw_hello_HelloJNI
 * Method:    hello_jni
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_ldw_hello_HelloJNI_hello_1jni
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

10.在test.cpp中实现java中hello_jni()的方法

 

Android NDK R26b最新交叉编译工具链实战:从配置到运行Hello World 本文详细介绍了Android NDK R26b中交叉编译工具链的重大变革,指导开发者如何从旧脚本迁移到新的直接调用范式。通过从环境配置、编译命令对比到部署运行的完整实战演示,帮助开发者快速掌握新工具链的使用,并高效集成到CMake、Makefile等构建系统中。 阅读详情

相关推荐

Android 配置NCNN环境

NCNN简介 ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。 Android环境配置 以编译运行官方SqueeZenet Demo为例,使用NCNN 所需要的AndroidStu

ezconn的博客 1976

Android VNDK使用及原理深入探究

在 Android.bp 文件中,cc_library、cc_library_static、cc_library_shared 和 cc_library_headers 模块定义支持三个与 VNDK 相关的属性:vendor_available、vndk.enabled 和 vndk.support_system_process。VNDK-SP 库安装在 /system/lib[64]/vndk-sp-${VER} 中,可以被供应商进程和系统进程(通过安装在供应商分区中的 SP-HAL 库)使用。

chinaherolts2008的博客 1140

Unity安卓打包失败根源:JDK/SDK/NDK三重环境链深度解析

Android SDK和JDK是安卓应用开发的基础技术栈,前者提供aapt、adb、d8等原生构建工具,后者负责Java字节码编译与APK签名;二者通过NDK延伸至C++层,共同支撑Unity的IL2CPP后端。其核心原理在于版本强约束与路径严格校验——JDK字节码版本不匹配会触发major version错误,SDK组件缺失将导致aapt2或zipalign命令未找到,NDK路径指向子目录而非根目录则无法读取source.properties。这种精密依赖构成工程落地的关键技术门槛,广泛应用于Unity游

weixin_33968104的博客 335

吐槽之Android Studio设置默认NDK路径(bug乎?)

Android Studio的项目设置有针对特定项目的,也有默认的设置。 在打开的项目中进行设置,一般都是针对打开的这个项目的特定设置。想要对所有项目生效,需要打开: File——Other Setting进行设置。 于是我选择了“Default Project Structure”,设置默认的东东。于是发现,NDK路径居然不能设置。点击了没有反应。擦。要不要这么怪异:

Blog for 明月依希 3万+

Unity安卓打包环境配置革新:5分钟免环境变量构建APK指南

环境变量是操作系统用于指定程序运行环境的关键配置,其原理是通过预设路径让应用程序快速定位依赖库与工具链。在软件开发领域,尤其是跨平台构建场景中,环境配置的复杂性常成为效率瓶颈。传统Unity安卓打包需手动设置JAVA_HOME、ANDROID_HOME等全局变量,存在配置繁琐、环境冲突、协作困难等痛点。通过项目级环境内嵌与路径指向技术,开发者可将JDK、Android SDK/NDK等工具链集成至项目目录或Unity私有路径,实现环境隔离与标准化。这种技术方案大幅降低了Unity移动开发门槛,特别适合快速原

weixin_33804582的博客 474

安卓NDK开发实战:从JNI原理到性能优化与避坑指南

在移动开发领域,性能优化与底层硬件交互是高级开发的核心诉求。通过理解JNI(Java Native Interface)这一跨语言通信的桥梁,开发者能够突破Java虚拟机的限制,直接调用C/C++代码,实现性能敏感型计算和复用庞大的成熟生态库。其技术价值在于为应用提供了与系统底层、硬件及现有C/C++生态对话的能力,从而在图像处理、音视频编解码等场景中发挥关键作用。例如,在`ndk编译opencv3`这类任务中,正是通过NDK将计算机视觉库集成到安卓应用,解决了密集计算和算法复用的需求。同时,在`安卓缓存r

weixin_34296641的博客 374

android studio sdk.dir,Android Studio中的ndk.dir错误

我试图使用opencv库,所以我在Android Studio中导入了它的一个项目,当我尝试运行它时,出现了此错误:错误:任务’:openCVSamplefacedetection:compileDebugNdk’的执行失败。未配置NDK。从http://developer.android.com/tools/sdk/ndk/下载NDK,然后在local.properties中添加ndk.dir=...

weixin_35734209的博客 1746

Qt for Android原生UI原理与NDK构建实践

Qt for Android并非Java层UI框架的简单封装,而是一种基于Android NDK的原生C++ UI构建范式,其核心在于绕过Dalvik/ART虚拟机,直接通过OpenGL ES渲染、InputManager事件桥接和AssetManager资源加载实现跨平台UI一致性。该方案依托NDK工具链(如r5版本)、qmake交叉编译配置及动态库运行时加载机制,支撑工业控制、车载系统等对Java侵入性敏感的嵌入式场景。关键技术点涵盖ABI适配(armeabi)、API Level兼容(android-

weixin_29194693的博客 254

Android NDK开发,使用ndk-build编译

目录 一,开发环境 二,配置NDK环境变量: 三,在自己项目创建本地方法: 四,手动创建本地方法fromJNIString()对应的.h头文件 五,在jni目录下创建c或者c++文件; 六,配置build.gradle(Model:App) 七,编写Android.mk文件 八,修改默认编译工具 九,最后在MainActivity中加载我们生成的动态库: ...

ezconn的博客 3万+

Halcon频域滤波实战:5分钟搞定傅里叶变换与功率谱分析(附完整代码)

本文提供Halcon频域滤波的实战指南,重点讲解如何利用傅里叶变换与功率谱分析快速解决图像处理难题。通过核心算子fft_image和power_real,演示了从空间域转换到频域、分析功率谱以定位周期性噪声,并构造滤波器进行精准去除的完整流程,附有可直接运行的代码示例。

docker8compose的博客 215

MPU6050芯片 寄存器详解与配置指南(详解)

分频值越小,数据刷新越快(如分频值 = 0 时,刷新率 = 8kHz/1=8kHz)。功能:配置采样频率分频系数,控制 ADC 转换速度和数据刷新率。数据刷新率 = 陀螺仪输出时钟频率 /(1 + 分频值)

m0_74696257的博客 1421

android-ndk静态编译,用ndk-build编译NDK程序

1. 配置Android NDK编译环境1.1 配置NDK首先下载NDK软件包,并解压:$ cd ~$ wget https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip$ unzip android-ndk-r19c-linux-x86_64.zip$ ls android-ndk-r19c设置NDK的环...

weixin_42515295的博客 571

从Chimera到ChimeraX:科研绘图升级指南,让你的论文配图更专业

本文详细介绍了从UCSF Chimera升级到ChimeraX的科研绘图指南,帮助研究者提升论文配图质量。ChimeraX在渲染引擎、大分子处理能力和动画功能上具有显著优势,特别适合生命科学和结构生物学领域。文章涵盖材质设置、专业配色、工作流程和期刊适配等核心技巧,助力产出出版级分子可视化图像。

weixin_33670786的博客 934

NDK版本升级实战:解决Yolov7端侧部署中的cmd.exe编译错误

本文针对在Windows环境下使用Android NDK部署Yolov7模型时遇到的cmd.exe编译错误,提供了深度解析与实战解决方案。文章指出链接器失败的核心原因常与NDK版本过旧有关,并详细指导了从诊断错误、升级NDK版本到处理工具链兼容性等关键步骤,帮助开发者彻底解决环境配置问题,确保端侧AI模型顺利编译与部署。

weixin_26897585的博客 346

绕过ROS2!在RDK X5上直接用Python调用海康相机C++ SDK的避坑指南

本文详细介绍了在RDK X5上绕过ROS2,直接使用Python调用海康相机C++ SDK的轻量化方案。通过Cython构建Python绑定,提取海康相机SDK核心组件,实现高效图像采集。文章涵盖环境准备、Cython接口设计、编译系统配置及性能优化技巧,特别适合ARM64平台开发者。

weixin_33712987的博客 250

YOLOv11 改进 - C2PSA | C2PSA融合Mask Attention掩码注意力,可学习掩码矩阵破解低分辨率特征提取难题 | 2025 预印

本文提出了用于低分辨率图像分割的MaskAttn - UNet框架,并将其核心的掩码注意力机制集成到YOLOv11中。传统U - Net类模型难以捕捉全局关联,Transformer类模型计算量大,而掩码注意力机制通过可学习的掩码,让模型选择性关注重要区域,融合了卷积的局部效率和注意力的全局视野。其工作流程包括特征适配、掩码生成、定向注意力计算和特征融合。我们将掩码注意力机制代码集成到YOLOv11中。

魔改工程师的博客 403

Unreal Engine 5.3安卓环境配置:NDK r25c与SDK 33的精准匹配指南

Android NDK和SDK是Unreal Engine移动开发的核心依赖组件,其版本兼容性直接决定C++项目能否成功编译与真机部署。UE 5.3并非兼容任意Android工具链,而是严格要求NDK版本为r25c(对应路径标识25.1.8937393)、SDK Platform为Android 13(API 33)、Build-Tools为33.0.2,并需JDK 17完整环境支持。这类强耦合关系源于UE构建系统对底层工具链的硬编码校验逻辑——如source.properties格式、sdkmanager

weixin_34245082的博客 394

如何解除“无法完成操作 因为文件包含病毒或潜在垃圾软件”

当运行软件遇到“无法完成操作 因为文件包含病毒或潜在垃圾软件”时,如何解决?控制面板-系统和安全-Windows Defender防火墙-自定义设置,将专用网络及公用网络关闭。点击后,选择“病毒和威胁防护”-管理配置。进入安全中心后,选择“病毒和威胁防护”将需要排斥的选项输入后,保存配置即可。2:打开windows安全中心。

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 6万+

windows下eclipse_adt_sdk_ndk_opencv环境搭建

本文讲解windows下eclipse+adt+sdk+ndk+opencv环境搭建,并成功运行图片处理功能。 全部工具下载 http://pan.baidu.com/s/1skr6rDF      1、安装java开发环境jdk-8u65-windows-x64.exe 在系统变量中添加: JAVA_HOME        D:\A_Program Files\

agtma的专栏 1304

【XSRP软件无线电】基于软件无线电平台的QPSK频带通信系统设计(含有完整工程资料获取链接)

软件无线电(Software Defined Radio, SDR)是一种无线通信系统,它通过软件来定义和实现无线电的功能,而不是依赖于传统的硬件电路。SDR平台的核心思想是将传统无线电系统中的大部分硬件功能,如调制解调、信号处理、频率选择等,通过软件来实现。这种设计理念使得SDR具有高度的灵活性和可重配置性,能够适应不同的通信标准和频段,快速适应新的通信技术。

嵌入式技术开发 3283

1、vectorCast单元测试常用操作

进入软件主页面,点击file,选择set working directory,随便选择一个保存该项目的目录即可。

weixin_59334478的博客 2156

mac os jenkins环境部署&常用插件安装

目录 1、安装依赖 安装JDK 安装SDK 安装NDK 安装 gradle 安装git 2、通过brew方式安装jenkins 1、安装依赖 安装JDK jenkins是基于java语言实现的,需要预先安装JDK8+版本(https://www.oracle.com/java/technologies/javase-downloads.html) 安装完成后配置环境变量: 执行“open -e ~/.bash_profile ”,加如下环境变量: JAVA_HOME=/Li.

suliufeng的专栏 1006

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Unity Android构建报错NDK r19要求的深层原因与兼容方案

NDK(Native Development Kit)是Android原生开发的核心工具链,其版本演进直接影响C++运行时兼容性与ABI稳定性。从r19c到r21+,Clang全面替代GCC、W^X内存策略强制启用、软浮点符号(如__aeabi_idivmod)被移除、libgcc依赖废弃——这些底层变更导致Unity il2cpp生成的so库在新NDK下链接失败或运行时崩溃。技术价值在于保障跨版本二进制兼容与插件生态稳定;典型应用场景包括Unity Android打包、第三方Native插件集成、AR/V

weixin_30423977的博客 599

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android NDK开发避坑指南:解决‘module audiostream depends on undefined modules: cutils log c m‘错误

基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。架构理解:掌握实时语音应用的完整技术链路(ASR→LLM→TTS)技能提升:学会申请、配置与调用火山引擎AI服务定制能力:通过代码修改自定义角色性格与音色,实现“从使用到创造”从0到1构建生产级别应用,脱离Demo,点击打开。

2600_94960060的博客 344

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【ARM汇编】0x00_基于AndroidStudio构建ARM32-v7a以及ARM64-v8a环境

系统映像要求: 适用于 Android 5.0(API 级别 21)及更高版本的 arm64-v8a 系统镜像|默认情况下,构建系统会以 thumb 模式生成 ARM 目标二进制文件,其中每条指令都是 16 位宽,并与。默认情况下,NDK 构建系统会为所有非弃用 ABI 生成代码。也可以指定多个值,方法是将它们放在同一行上,中间用空格分隔。如截图所示,为hello_arm增加可执行权限,运行打印。下表介绍了 Android SDK 工具的常用环境变量。默认情况下,模拟器会将配置文件存储在。

BigDark的博客 5094

Unity2020 Android构建三件套配置指南:JDK11、SDK29、NDK r21e

Android应用构建依赖Java开发环境(JDK)、Android SDK和原生开发工具集(NDK)三大基础组件,其版本兼容性直接决定编译能否成功。JDK需匹配Gradle构建系统——Unity2020基于Gradle 6.1.1,仅支持JDK 8u202+或JDK 11.0.2+,高版本如JDK 17因强封装机制引发模块加载失败;SDK须精简安装API Level 29及Build-Tools 29.0.3,避免全量安装导致路径冲突;NDK则需严格选用r21e,因其是首个完整支持ARM64-v8a AB

weixin_33851604的博客 479
上一篇: 下载并安装genymotion
下一篇: 240.Android Studio3.5 写 NDK 程序(1)
augfun
博客等级 码龄10年 311粉丝 662原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值