NDK开发学习记录

Opencl开发过程记录 下载Eclipse 给Eclips安装插件ADT 配置SDK 手动下载NDK并添加到Eclipse设置中 新建Eclipse项目 解决依赖问题(未作具体记录) 无法解决问题 更改使用Android Studio 配置SDK 配置NKD过程中发生问题 SDK Manager中忆境添加NDK和CMAKE工具 在Project Structure中无法添加NDK(灰色,无法点击) 尝试网络上的方法 SKD和NDK下载地址:https://www.androiddevtools.cn/index.html 参 阅读详情
1、jni调用的本地方法,必须在java中用native关键字声明


2、在应用程序的开始是用静态调用该库,不需要‘lib’前缀和’.so‘后缀
       static {
             System.loadLibrary("FileLoader");
      }


3、ndk可以做:
      1、生成jni兼容的共享库,可以运行在android1.5以上的平台,在arm cpu
      2、复制生成的共享库到你的工程的合适的位置,因此,最终将自动的添加到你的apk中
      3、以后将有可能集成gdb调试本地代码


   总的来说,ndk提供了:
      1、一些交叉编译工具,能够生成在linux,os x windows上运行在arm新闻的binaries
      2、一系列的有android平台提供的稳定的本地api,及相应的头文件位于:docs/STABLE-APIS.html
      3、一个编译系统,允许开发者仅仅写非常短的编译文件,这些文件描绘了那些资源需要被编译,和怎样编译,这些在 toolchain/platform/CPU/ABI指定了,

4、ndk开发练习:
      1、把本地代码放到$PROJECT/jni/...下
      2、写$PROJECT/jni/Android.mk来描述ndk系统编译的资源
      3、(可选的)下一个$PROJECT/jni/Application.mk来描绘编译系统更多的细节,具体看docs/APPLICATION-MK.html
      4 、进入项目目录$PROJECT/,运行ndk-build,即可生成共享文件,以lib(something).so的


5、放置c或c++源码
      $PROJECT/jni/sample.cpp


6、写一个Android.mk编译脚本
     语法描述在 docs/ANDROID-MK.html中
     在一个脚本中,ndk将你的代码组装成模块‘module’,每个模块可能是
             一个静态的模块, a static library 
             一个共享模块, a shared library
     你可以在一个单一的Android.mk中定义几个模块,或者写几个Android.mk文件,每个文件定义了一个单一的模块

     如果想在$PROJECT/jni/下,想有子目录,在子目录中写Android.mk,那么必须在jni/Android.mk顶级中声明子目录
     include $(CALL ALL-subdir-makefiles)
     这将包括所有的Android.mk文件和子文件到当前的编译路径目录


7、(可选的)写一Application.mk文件
     Android.mk文件描述了编译模块,而这个Application.mk描述应用本身
     docs/APPLICATION-MK.html

     包括:
            1、确切的需要的模块列表
            2、生成的cpu体系结构
            3、可选的信息,像,是否是发布编译或是调试编译,指定c或c++编译器标致,和其他应用到模块中
            这个文件是可选的,默认情况下,ndk会提供一个,仅仅编译 *all* 从Android.mk中所有的模块,和所有的makefile和目标cpu ABI
            有两种方法使用Application.mk
            1、放在$PROJECT/jni/Application.mk,这将被ndk-build自动加载
            2、放在$NDK/apps/<name>/Application.mk,$NDK是ndk安装目录,然后,运行 make APP=<name>从NDK目录

             强烈建议使用第一种



8、调用NDK编译系统
        1、使用ndk-build编译
         cd $PROJECT
         ndk-build ->应该把ndk的安装目录添加进入环境变量PATH


         ndk-build clean  -->清楚生成的二进制文件

         ndk-build -B V=1  -->强制从编译
         默认情况下,这个命令期望找到$PROJECT/jni/Application.mk和$PROJECT/jni/Android.mk
         看docs/NDK-BUILD.html看详细的编译
9、指定输出目录
         默认情况下,ndk-build把生成的文件放在$PROJECT/obj/下,你可以选择一个路径通过指定NDK_OUT环境变量指向不同的目录,这个变量有两个影响:
         1、这确保将所有的正常情况在$PROJECT/obj/下的文件存储在$NDK-OUT下
         2、告诉ndk-gdb去查询$NDK_OUT,而不是obj下


10、调试支持
        可以在Android2.2以上的设备上调试  docs/NDK-GDB.html

         1、确保你的应用是可以调试的,(eg.set android:debuggable="true"in your AndroidManifest.xml)
         2、编译你的应用用ndk-build,然后安装到你的设备或模拟器中
         3、启动你的应用
         4、运行 ‘ndk-gdb’ 在你的应用目录 $PROJECT/下

         参照gdb提示






























新手小白如何学习编程 学习目标推荐第一门语言优势网站 / APP 开发(前端)JavaScript浏览器原生支持,能快速做出可视化效果后端 / 服务器 / 数据分析Python语法简洁像英语,库多、应用广(入门友好)游戏开发先用电竞入门,再转专业引擎硬件 / 嵌入式(比如单片机)C 语言贴近硬件,行业标准办公自动化(Excel / 文档处理)Python快速解决重复工作(比如批量改文件)👉新手首选推荐。 阅读详情

相关推荐

Android BluetoothSocket

BluetoothSocket是Android中用于在蓝牙设备之间进行数据传输的一种Socket。它提供了一种类似于TCP/IP协议的数据传输方式,可以在两个设备之间建立一个虚拟的通信管道,使得两个设备之间可以进行数据的传输和接收。BluetoothSocket可以用于客户端和服务端之间的通信,通过BluetoothSocket可以实现数据的双向传输。

liuning1985622的博客 1477

android ndk 命令行,Android开发实践:常用NDK命令行参数

Android提供了NDK工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个.mk文件即可将你的c/c++代码编译为Android的java工程/Android手机可以识别、加载和运行的库或者应用程序。默认情况下,使用NDK编译c/c++代码,需要将该代码放置到任一个Android应用工程的jni目录下,然后编写相应的Android.mk...

weixin_42355666的博客 424

Clion+platformIO开发ESP32时找不到lib文件中引入第三方库的头文件(头文件下有波浪线),实际编译是成功的解决方法

Clion+platformIO开发ESP引入第三方库文件编译器无法找到.h文件但编译成功

zs5218的博客 1852

ndk编译jni错误LOCAL_MAKEFILE is not defined,分析解决

我们用ndk编译jni的时候,通常会写一个Android.mk脚本文件。但是有些情况,我们脚本文件名字不叫Android.mk,比如我的分别改成AndroidSo.mk,AndroidA.mk这时候就会报错:LOCAL_MAKEFILE is not defined。

shenweihong的博客 359

攻克Windows平台3DGS复现:从环境配置到可视化实战全记录

本文详细记录了在Windows平台成功复现3D Gaussian Splatting(3DGS)的完整流程,涵盖从环境配置、依赖安装、数据准备到模型训练与可视化的全步骤。重点解决了Windows下CUDA版本匹配、Visual Studio编译及SIBR_viewers可视化工具部署等核心难题,为开发者提供了一份详实的避坑指南与实战手册。

weixin_28839699的博客 252

CamoFox MCP:让AI助手隐身操作浏览器的反检测自动化实战

浏览器自动化是提升工作效率和实现数据采集的关键技术,其核心原理在于通过程序脚本模拟人类在网页上的交互行为。传统方案如Selenium或Playwright虽功能强大,但需要开发者编写复杂脚本并处理反爬机制。随着AI Agent技术的发展,自然语言驱动的自动化成为新趋势,它能将任务规划与逻辑判断交由AI处理,大幅降低使用门槛。Model Context Protocol(MCP)作为连接AI与外部工具的标准协议,在此场景下价值凸显,它使得AI助手能直接调用丰富的浏览器操作工具。CamoFox MCP创新性地将

weixin_42551967的博客 727

linux+ndk编译so+指令,Windows命令ndk-build编译.so文件

1. 下载一个NDK包,然后设置ndk-build所在的目录到环境变量。2. 在源代码目录新建一个jni目录(试了几次Android.mk如果不在jni目录时需要写完整路径)。3.Application.mk#APP_ABI := all#APP_ABI := arm64-v8a armeabi-v7a armeabi x86 x86_64APP_ABI := arm64-v8a armeabi...

weixin_39820910的博客 422

FA 新增资产API Demo

DECLARE l_trans_rec fa_api_types.trans_rec_type; l_dist_trans_rec fa_api_types.trans_rec_type; l_asset_hdr_rec fa_api_types.asset_hdr_rec_type; l_asset_desc_rec fa_a

chosen1brain的专栏 2142

android ndk 路径配置文件,Crashlytics NDK多androidNdkOut路径支持

来自Crashlytics的Matt!更新从version 1.23.0开始,当将Gradle 2.2.0的Android插件与externalNativeBuild DSL结合使用时,Fabric插件支持自动检测本机二进制文件的路径.如果使用此方法,则只需从crashlytics块中删除androidNdkOut和androidNdkLibsOut属性.目前,我们不支持为您的本机库定义多个目录....

weixin_39542477的博客 154

从Blender舞步到夜空画卷:基于Pix飞控的无人机编队灯光秀全链路开发实践

本文详细介绍了基于Pixhawk飞控的无人机编队灯光秀全链路开发实践。从Blender三维动画设计、QGroundControl地面站二次开发与MAVLink通信桥接,到PX4飞控的OFFBOARD模式路径控制与LED灯光驱动实现,最后通过Gazebo仿真验证并完成真机组装与首飞。文章为无人机爱好者提供了一套完整的、从创意设计到夜空执行的开源解决方案,重点阐述了多机同步与灯光控制的核心技术挑战与应对策略。

zeta9的博客 585

【Godot】构建可维护的游戏工程 —— 项目代码组织结构

本文系统梳理了Godot引擎项目组织原则与架构模式,提出场景中心化、命名规范一致性和资源隔离三大核心原则。推荐按功能模块划分目录结构(如scenes/、entities/、systems/),采用snake_case命名避免跨平台问题,并通过.gdignore优化资源管理。文章详细解析了自包含场景设计、信号驱动解耦等架构技巧,以及团队协作中的版本控制策略,强调通过模块化设计平衡一致性与实用性。最终目标构建清晰可维护的项目结构,使资源定位和功能扩展更加高效。(148字)

qq_40205510的博客 1176

ndk-build配置、Android Studio jni的配置以及jni常见问题的解决

ndk-build配置、Android Studio jni的配置以及jni常见问题的解决

Andy_Lin的博客 9727

焊缝缺陷智能检测:基于 YOLO 的工业质检系统实战

从焊缝缺陷数据集的构建到模型训练,从桌面检测界面到缺陷统计输出,本文覆盖了一套工业焊缝质检系统的完整路线。这个场景的核心难点在数据层面——气孔和裂纹这类小目标的标注质量直接决定了模型的最终表现。建议先在开源数据集上跑通全链路,确认 mAP 达到可接受的水平后,再通过补充特定类型的小目标数据和提升输入分辨率来做精度优化。工业场景中,漏检一个气孔的成本和误报一个假阳性的成本不一样——根据对两类成本的承受力,调整置信度阈值来找到业务上的最佳平衡点。

m0_71589036的博客 202

NDK开发(一):初识NDK,从CMakeLists开始

在Android开发进阶之路上,ndk开发是一项重要、必不可少的技能,是众多公司检验Android高级开发人员的考核点之一,在此我也记录下ndk学习历程 。 在这里就不介绍如何搭建ndk环境及新建带有ndk开发环境的项目,或在老项目中配置ndk的开发环境,大家可以自行google。以下我们进入正文: 新建ndk开发环境的工程后,我们发现多了一个C++路径,以后开发中所有的C+...

qq_27246079的博客 1005

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JNI 和NDK开发

温故而知新之读书笔记

小学生的博客 289

android 蓝牙通讯demo

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

安卓开发学习之ndk实现增量更新踩坑记录

背景这里主要是根据亚特兰蒂斯的博文https://blog.youkuaiyun.com/myatlantis/article/details/52874227#t1进行操作的,但即便是一步一步走,还是遇到了一些坑,特记录如下坑和解决方法1、安卓高版本文件uri权限问题安卓高版本里访问文件uri必须用FileProvider,用法请参见这篇文章:安卓开发学习之利用FileProvider获取文件URI2、通过...

四国棋客 172

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android测试ndk,Android之NDK开发一第一个测试

前两天研究了一下NDK开发,然而没有成功。今天兴趣盎然,再试试,不知道会不会成功,我将记录我在学习过程中遇到的一些困难,以及成功后的效果。我当前的状态是以及学习了一段时间Android开发,用的环境是Android Studio(2.1.1),所以jdk与Android studio 的配置就不描述了,从NDK开始。第一步:安装NDK选择NDK点击应用,开始下载。解压,卡这儿半小时了,怎么办?停止...

weixin_34871733的博客 264

NDK 学习笔记--01(C语言基础篇 基本数据类型)

从这篇文章开始,我将记录关于NDK 开发的一些 学习笔记,从基础开始,然后也会记录一些学习新的,感兴趣的可以一块学习 int i =100; double d =200; float f = 200 ; long l = 100; short s = 100; char c = 'p'; 基本数据类型 没什么好说的。 这里罗列了一部分 ...

天行健,君子以自强不息。 188

Android NDK开发入门实例

Android NDK开发入门实例 写这个,目的就是记录一下我自己的NDK是怎么入门的。便于以后查看,而不会忘了又用搜索引擎一顿乱搜。然后希望能够帮助刚学的人入门。先转一段别人说的话: “NDK全称:Native Development Kit。 1、NDK是一系列工具的集合。 * NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成...

wangxiaohigh 425

android studio ndk 配置开发

Android Studio 下简单的ndk开发学习记录;

u014422484的博客 114

使用Android studio进行NDK开发

第一次学习使用ndk,记录下1. 编写native代码(1)在需要调用native方法的类中,声明native方法public class JniKit { public native static String helloWorld(); static { Log.e("JniKit", "JniKit 第一次加载库"); System.loadLib

github_39998545的博客 1429

NDK实践(一)在linux环境下编译ffmpe

系列文章目录: NDK实践(一)在linux环境下编译ffmpe NDK实践(二)将编译的ffmpeg静态库集成到Android工程 最近开始接触学习ndk开发,本着边学习边实践的原则,计划完成视频编辑库ffmpeg的集成和集成过程的学习笔记,下面开始集成的第一步:在linux环境下编译ffmpe源码 首先我们先做一些准备: ...

qq_27246079的博客 666

Android NDK安装与使用

http://www.crystax.net/android/ndk.php

青峰专栏 890

Android Studio运行第一个NDK程序

最近不是特别的忙,有空就研究了一下NDK开发。学习的过程中还是踩了挺多坑的。这里笔迹仅作记录学习历程。当然运行的第一个NDK程序,建议参考这遍文章,写的还是很详细的。链接http://blog.youkuaiyun.com/yanbober/article/details/45309049 我这里只记录一些坑要注意的地方: 编译头文件路径注意要写自己的文件路径jni文件要放在main目录下widow环境下执行报

qq_24641847的专栏 486

qt6.6.0开发Android应用记录1

笔者尝试使用qt6.6.0的版本进行第一次Androd开发,记录一下学习步骤。上述的配置和运行,最终在安卓模拟器上运行成功,后续需要使用usb调试在真机上运行。

weixin_43889994的博客 4252

EKF磁场校准在android平台下的开发(一)——android开发的调研(含教学资料+安装教程)

因为一些原因,要把c++语言程序放到android平台下运行(毕设做的磁场校准程序在手机上实时进行数据采集和运算)。

weixin_39926594的博客 547
上一篇: linux进程存储管理--进程内存结构
下一篇: Android.mk学习记录
清风乐逍遥
博客等级 码龄14年 42粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值