google 最新ndk android-ndk-r14b-windows-x86_64分享

交叉编译-5:使用NDK和CMake在Linux上编译Android动态库 之前接触过使用CMake编译IOS的项目,开始编译Android库时候,不是很熟悉Android.mk的编译方式,所以继续沿用CMake编译Android的库。使用gcc编译出来的库在Android stutio上使用时候App有些是可以直接用,但有些动态库会有一些奇奇怪怪的错误。所以换了最新版本的NDK,并采用clang编译,这下编译出来的库在Android stutio上使用是没... 阅读详情

  因为一些特殊原因,谷歌的官方对于ndk的简介国内无法访问,别担心,我已经把内容拷贝下来了,如果您能科学上网,可以访问谷歌的官方网站
谷歌官网文档
下载android-ndk-r14b-windows-x86_64.zip资源包请到我的网盘下载
链接:http://pan.baidu.com/s/1o8JXgjK 密码:rjjm
简介
  本节简要说明 NDK 的工作方式。Android NDK 是一组允许您将 C 或 C++(“原生代码”)嵌入到 Android 应用中的工具。 能够在 Android 应用中使用原生代码对于想执行以下一项或多项操作的开发者特别有用:

1.在平台之间移植其应用。
2.重复使用现有库,或者提供其自己的库供重复使用。
3.在某些情况下提高性能,特别是像游戏这种计算密集型应用。

工作方式
  本节介绍在为 Android 构建原生应用时使用的主要组件,并且描述构建和封装的过程。

主要组件在构建应用时,您应该已经了解以下组件:

1.ndk-build:ndk-build 脚本用于在 NDK 中心启动构建脚本。这些脚本:
自动探测您的开发系统和应用项目文件以确定要构建的内容。
2.生成二进制文件。
将二进制文件复制到应用的项目路径。
如需了解详细信息,请参阅 ndk-build。
Java:Android 构建过程从 Java 来源生成 .dex (Dalvik EXecutable) 文件,这些文件是 Android OS 在 Dalvik 虚拟机(“DVM”)中运行的文件。 即使您的应用根本未包含任何 Java 源代码,构建过程仍会生成原生组件在其中运行的 .dex 可执行文件。
开发 Java 组件时,使用 native 关键字指示以原生代码形式实现的方法。 例如,以下函数声明向编译器告知实现在原生库中:
public native int add(int x, int y);
原生共享库:NDK 从原生源代码构建这些库或 .so 文件。
注:如果两个库使用相同的签名实现各自的方法,就会发生关联错误。 在 C 语言中,“签名”只表示方法名称。在 C++ 中,“签名”不仅表示方法名称,还表示其参数名称和类型。

原生静态库:NDK 也可构建静态库或 .a 文件,您可以关联到其他库。
Java 原生接口 (JNI):JNI 是 Java 和 C++ 组件用以互相沟通的接口。 本指南假设您具备 JNI 知识;如需了解相关信息,请查阅 Java 原生接口规范。
应用二进制界面 (ABI):ABI 可以非常精确地定义应用的机器代码在运行时如何与系统交互。 NDK 根据这些定义构建 .so 文件。 不同的 ABI 对应不同的架构:NDK 包含对 ARMEABI(默认)、MIPS 和 x86 的 ABI 支持。 如需了解详细信息,请参阅 ABI 管理。
清单:如果您要编写没有 Java 组件的应用,必须在清单中声明 NativeActivity 类。原生 Activity 和应用在“使用 native_activity.h 接口”下提供了如何执行此操作的详细信息。
下面两个项目仅在使用 ndk-build 脚本构建时以及使用 ndk-gdb 脚本调试时才需要。

Android.mk:必须在 jni 文件夹内创建 Android.mk 配置文件。 ndk-build 脚本将查看此文件,其中定义了模块及其名称、要编译的源文件、版本标志以及要链接的库。
Application.mk:此文件枚举并描述您的应用需要的模块。 这些信息包括:
用于针对特定平台进行编译的 ABI。
工具链。
要包含的标准库(静态和动态 STLport 或默认系统)。
流程
为 Android 开发原生应用的一般流程如下:

设计应用,确定要在 Java 中实现的部分,以及要以原生代码形式实现的部分。
注:虽然可以完全避免 Java,但您可能发现,Android Java 框架对于包括控制显示和 UI 在内的任务很有用。

像创建任何其他 Android 项目一样创建一个 Android 应用项目。
如果要编写纯原生应用,请在 AndroidManifest.xml 中声明 NativeActivity 类。 如需了解详细信息,请参阅原生 Activity 和应用。
在“JNI”目录中创建一个描述原生库的 Android.mk 文件,包括名称、标志、链接库和要编译的源文件。
或者,也可以创建一个配置目标 ABI、 工具链、发行/调试模式和 STL 的 Application.mk 文件。对于其中任何您未指明的项目,将分别使用以下默认值:
ABI:armeabi
工具链:GCC 4.8
模式:发行
STL:系统
将原生来源置于项目的 jni 目录下。
使用 ndk-build 编译原生(.so、.a)库。
构建 Java 组件,生成可执行 .dex 文件。
将所有内容封装到一个 APK 文件中,包含 .so、.dex 以及应用运行所需的其他文件。
原生 Activity 和应用
Android SDK 提供帮助程序类 NativeActivity,可用于写入完全原生的 Activity。NativeActivity 可处理 Android 框架与原生代码之间的通信,因此您不必为其创建子类或调用其方法, 只需在 AndroidManifest.xml 文件中声明要设为原生的应用,然后开始创建原生应用。

使用 NativeActivity 的 Android 应用仍会在其自己的虚拟机中运行,与其他应用以沙盒分隔。 因此,您仍可通过 JNI 访问 Android 框架 API。 但在某些情况下 – 例如对于传感器、输入事件和资产– NDK 提供可以使用的原生界面,而无需通过 JNI 调用。 如需了解有关此类支持的详细信息,请参阅 Android NDK 原生 API。

无论是否要开发原生 Activity,我们都建议使用传统 Android 构建工具创建项目。 这样有助于确保 Android 应用的构建和封装都使用正确的结构。

Android NDK 为实现原生 Activity 提供两个选项:

native_activity.h 标头定义 NativeActivity 类的原生版本。 其中包含创建原生 Activity 所需的的回调接口和数据结构。 由于应用的主线程处理回调,因此不得阻止回调的实现。 否则可能收到 ANR(应用未响应)错误,因为主线程在回调返回之前会无响应。
android_native_app_glue.h 文件定义基于 native_activity.h 接口构建的静态帮助程序库。它将派生另一个线程,用于处理事件循环中的回调或输入事件。 将这些事件移至单独的线程可防止任何回调阻止您的主线程。
<ndk_root>/sources/android/native_app_glue/android_native_app_glue.c
来源也可用,允许您修改实现。

如需了解有关如何使用此静态库的详细信息,请检查原生 Activity 示例应用及其文档。 /sources/android/native_app_glue/android_native_app_glue.h 文件中的注释也提供其他阅读材料。

使用 native_activity.h 接口
要使用 native_activity.h 接口实现原生 Activity,请执行以下操作:

在项目的根目录中创建一个 jni/ 目录。此目录用于存储所有原生代码。
在 AndroidManifest.xml 文件中声明原生 Activity。
因为您的应用没有 Java 代码,所以将 android:hasCode 设为 false。

<application android:label="@string/app_name" android:hasCode="false">

必须将 Activity 标记的 android:name 属性设置为 NativeActivity。

<activity android:name="android.app.NativeActivity"
            android:label="@string/app_name">

注:可以为 NativeActivity 创建子类。如果创建子类,请使用子类的名称,而不是 NativeActivity。

meta-data 标记的 android:value 属性指定共享库的名称,其中包含应用的入口点(例如 C/C++ main),省略 lib 前缀和 .so 后缀。

 <meta-data android:name="android.app.lib_name"
            android:value="native-activity" />
            <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
          </activity>
        </application>
      </manifest>

  创建用于原生 Activity 的文件,并实现 ANativeActivity_onCreate 变量中指定的函数。应用在原生 Activity 启动时会调用此函数。 此函数类似于 C/C++ 中的 main,用于接收 ANativeActivity 结构的指针,其中包含您需要写入的各个回调实现的函数指针。在 ANativeActivity->callbacks 中设置回调实现的适用回调函数指针。
将 ANativeActivity->instance 字段设置为要使用的特定数据的任何实例的地址。
实现您希望 Activity 在启动时执行的任何其他操作。
实现您在 ANativeActivity->callbacks 中设置的其余回调。如需了解何时调用回调的详细信息,请参阅管理 Activity 生命周期。
开发应用的其余部分。
在项目的 jni/ 目录中创建 Android.mk file,向构建系统描述您的原生模块。 如需了解详细信息,请参阅 Android.mk。
在创建 Android.mk 文件后,使用 ndk-build 命令编译原生代码。

$ cd <path>/<to>/<project>
$ <ndk>/ndk-build

像平常一样构建和安装 Android 项目。如果原生代码在 jni/ 目录中,构建脚本会自动将从它构建的 .so 文件封装到 APK 中。

Urho3D移动端开发实战:从环境搭建到性能优化的完整指南 游戏引擎作为游戏与应用开发的核心框架,其底层原理基于对图形渲染、物理模拟、资源管理等模块的高效整合。通过模块化设计与原生代码执行,引擎能够实现对硬件资源的精细控制,从而在性能与包体大小间取得平衡,这一特性在资源受限的移动平台上尤为关键。其技术价值在于为开发者提供了从底层硬件交互到高层游戏逻辑的完整工具链,使得开发高性能的3D应用、AR原型或图形密集型工具成为可能。本文聚焦于Urho3D这一轻量级C++引擎,深入探讨其在Android与iOS平台上的环境配置、核心模块适配及性能优化策略,为移动端开发提供一套可 阅读详情

相关推荐

Windows下APK反编译与重打包完整指南:从解包到签名

APK反编译是安卓逆向工程的基础技术,本质是将已发布的DEX字节码和二进制资源还原为可读的Java代码与XML结构,从而实现无源码条件下的应用分析与诊断。其核心原理依赖于dex2jar/Smali解析、resources.arsc解码及安卓签名机制(V1/V2/V3)的合规重建。该技术具备明确的技术价值:支持安全审计、兼容性验证、教学实验与混淆失效排查等正当场景。典型应用包括修改AndroidManifest配置、注入调试日志、替换资源文件或绕过SSL Pinning等。本文聚焦Windows平台,系统整合

weixin_29159441的博客 168

NDK各个版本下载

NDK下载链接

dream_xang的博客 5790

【我的Android进阶之旅】Android开发之NDK相关版本下载链接

发布时间表 NDK 大约每季度发布一次。指定一年发布一次作为一个长期支持 (LTS) 版本,它将接收反向移植,直到下一个LTS 已发布。每个版本首先作为测试版发布,然后发布候选人在被运送到稳定之前。多个测试版和候选版本如果第一个测试版不符合我们的促销标准,则有可能,但每一个总会有至少一个。 一、 支持下载的版本 当前 LTS 版本 [[r23 Changelog|Changelog-r23]] android { ndkVersion "23.1.7779620" } Platfo

字节卷动 5297

Android Studio NDK环境搭建

新建脚本build_android.sh。准备好:android-ndk-r14b。

QQ960054653的博客 756

QT5实战入门:DS小龙哥能跑起来的上位机开发教程

Qt5是跨平台C++图形界面开发的核心框架,其核心原理在于信号槽机制、事件驱动模型与模块化编译系统。技术价值体现在一次编码、多端部署的工程效率,以及对嵌入式上位机、工业调试工具等实时交互场景的天然适配。典型应用场景包括STM32/ESP32串口调试助手、Android扫码控制终端、汽车电子BMS上位机等。本教程聚焦‘QT5无法拖拽文件’和‘QT5配置Android环境’两大高频痛点,提供经产线验证的脚本化环境搭建、状态机驱动的串口健壮通信、UAC兼容的Windows拖拽实现等真实工程方案,真正实现从零到可交

weixin_33766805的博客 431

android-ndk-r14b.7z

Android NDK R14B是一款专业的安卓NDK开发工具,这是一套NDK开发工具集,包含了丰富的开发和编译器,方便用户对安卓应用和游戏进行开发,全称Native Development Kit,通过Android NDK可以使开发者直接接触android的底部资源,使开发更加直观、简单、方便,有需要的朋友们欢迎前来下载使用。

Windows平台Qt6 Android开发环境配置全攻略:从原理到实战避坑指南

交叉编译是连接不同硬件架构与操作系统的重要技术,它允许开发者在一种系统环境下生成能在另一种目标平台上运行的代码。其核心原理在于使用特定的工具链,将源代码编译为目标平台的机器指令。在移动开发领域,这项技术价值尤为突出,它使得利用成熟的桌面开发框架为移动设备构建应用成为可能,极大地提升了代码复用率和开发效率。Qt作为跨平台C++框架,通过集成Android NDK工具链,实现了C++代码到Android原生库的编译转换。本文聚焦于Windows环境下Qt6与Android NDK、SDK及JDK的版本匹配与配置

weixin_34391445的博客 530

android-sdk_r14-linux

android sdk 4 android-sdk_r14-linux.tgz 只是个tool,sdk还要自己下载 手机开发平台 Google Android SDK 3.1 R11 Android eclipse插件安装: https://dl-ssl.google.com/Android/eclipse/ Android netBean插件安装: http://kenai.com/downloads/nbandroid/updates.xml

RenderDoc 全平台编译指南:Windows / Linux / macOS / Android 从源码构建实战

RenderDoc 是一款独立的图形调试工具,支持 OpenGL、Vulkan、D3D11、D3D12、GLES 与 Metal 等多套 API 的捕获与回放。本文以仓库中的 [Compiling.md](https://link.gitcode.com/i/8ba8db429700b7019ac569311ee8f183) 与 [Dependencies.md](https://link.git

gitblog_01121的博客 450

android-ndk-r14b-linux-x86-64

linux系统版本的ndk

【免费】最新区块链钱包和私钥的助记词碰撞器,bybit使用python开发

【免费】最新助记词钱包碰撞器,全链全网络,一周左右就有,稳定高效。

weixin_48529185的博客 1万+

Unity安卓打包失败原因与JDK SDK版本匹配指南

Android APK构建是移动开发的基础流程,其核心依赖Java开发环境(JDK)与Android SDK工具链的协同工作。JDK提供Java编译与运行时支持,SDK则包含构建、调试与打包所需的platform-tools、build-tools等组件。二者版本不匹配将直接导致Gradle构建中断、APK签名失败或设备连接异常。技术价值在于保障跨团队、跨环境的构建一致性与可重复性,广泛应用于Unity游戏出包、AR/VR应用发布及CI/CD自动化流水线。本文聚焦Unity引擎下安卓打包场景,详解JDK发行

weixin_34198762的博客 255

科研党必备:用Python+Excel批量下载文献的保姆级教程(附常见错误解决)

本文提供了一套利用Python和Excel实现外文文献批量下载的自动化解决方案。教程详细介绍了如何从数据库导出并清洗DOI信息,编写健壮的Python脚本进行批量下载,并包含错误处理与进阶优化技巧,旨在帮助科研人员将重复性劳动自动化,大幅提升文献收集效率。

weixin_29050513的博客 306

macOS 交叉构建 mac-android 仓颉 SDK:从环境准备到打包验证的完整指南

本篇技术指南以 [docs/macos_android.md](https://link.gitcode.com/i/7ff6187f44726e5263bea735c61a87a6) 为核心,系统讲解如何在 macOS 14 Sonoma 上搭建仓颉(Cangjie)SDK 构建环境,交叉构建出同时包含 macOS 原生(darwin)与 Android(linux-android)两端组件的

gitblog_00917的博客 139

UOS系统手动添加1920x1080分辨率:xrandr命令详解与持久化配置

本文详细介绍了在UOS系统中使用xrandr命令手动添加1920x1080分辨率的方法。针对系统设置中缺失该选项的常见问题,文章提供了从识别显示设备、使用cvt生成模式、添加并切换分辨率,到通过修改.profile文件实现持久化配置的完整步骤。同时涵盖了虚拟机环境、设备名识别及排错等进阶内容,帮助用户彻底解决UOS分辨率配置难题。

weixin_29300931的博客 498

mtk-drm初始化

mtk-drm初始化走读

zhexingsunba的博客 4931

xLua跨平台升级:ABI兼容性与原生库编译实战指南

xLua作为Unity中关键的Lua-C#桥接方案,其本质是一组深度绑定Unity运行时(Mono/IL2CPP)、目标平台ABI及编译工具链的原生链接库。理解C源码宏开关(如XLUA_UNITY、XLUA_NO_EXCEPTION)、编译器ABI兼容性(NDK/Xcode/MSVC版本约束)以及Unity插件元数据配置(Strip Engine Code、CPU架构、平台限定),是解决iOS启动失败、Android符号缺失、WebGL白屏等典型问题的技术根基。本文聚焦xLua在Windows/macOS/

weixin_33826609的博客 339

CH340驱动安装全攻略:从Windows到MacOS的避坑指南(2025最新版)

本文提供2025年最新版CH340驱动安装全攻略,涵盖Windows、MacOS和Linux三大操作系统。详细解析了驱动安装的核心原理、标准流程,并针对Windows设备管理器报错、MacOS系统安全限制等常见“坑点”提供了深度排错与解决方案,旨在帮助开发者快速稳定地完成USB转串口通信配置。

earth的博客 426

Android 15 SO 16K对齐强制要求与实战修复指南

动态链接库(.so)是Android Native层的核心组件,其内存加载依赖ELF格式的段对齐机制。Android 15起,系统内核强制要求所有.so文件的p_align字段不低于16KB(0x4000),本质是为适配ARM64大页映射与ASLR安全增强。该约束并非兼容性提示,而是由内核mmap路径直接拦截的硬性准入规则。技术价值在于提升TLB命中率、强化地址随机化,并为后续Memory Tagging Extension(MTE)铺路。典型应用场景涵盖图像处理、音视频编解码、游戏引擎及跨平台框架的Nat

weixin_27014595的博客 252

Caffeine:为每个元素动态设置过期时间

Caffeine利用expireAfter方法实现为每个元素动态设置过期时间

大数据开发、JAVA开发、人工智能AI 1万+

【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中)

你是否在全网苦寻【图像去噪(ImageDenoising)】的相关资料?你的目标是否是看懂【图像去噪(ImageDenoising)】的相关论文,复现代码,跑出结果,并试图创新?你是否需要发表【图像去噪(ImageDenoising)】的相关论文毕业?你是否需要做【图像去噪(ImageDenoising)】的相关项目,开发软件,研究算法,获得专利或者软著?只要是与【图像去噪(ImageDenoising)】有关的问题,那么请继续往下看。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 2万+

CloudStream 安装完整指南:免费搭建自己的流媒体播放与下载中心

CloudStream 安装流程本身很短,短到多数人的时间都花在了"装完却播不出东西"上。它是一款免费的 Android 流媒体播放与下载应用,界面干净、无广告、无数据统计,支持手机、平板和 Android TV;但**应用本体不内置任何视频源**,内容全靠扩展插件接入——先想清楚这一点,CloudStream 安装之后才能真正跑起来。 ## 装之前先核对这三项要求 | 项目 | 最低要求 |

gitblog_01180的博客 176

uni-app - 解决 H5 微信公众号授权登录后,无法回退到 “上一页“ 的问题(微信登录后如何返回到触发它的那一页?无法通过 uni.navigateBack() 返回到前一页的问题?)详细教程

uniappH5微信登录重定向后无法返回到原来进入前的页面了,uni-appH5微信浏览器中授权微信登录后,无法正常回退问题,uniappH5微信登录后怎么返回上一页,uniapp公众号登陆后使用uni.navigateBack()回不去上一页,uniapp微信登录成功后返回页面后一直自动刷新页面,uniapph5授权成功后如何返回上一页,uniappH5微信登录后怎么返回到触发它的那一页去,公众号h5在授权后如何跳转回到刚进入时的页面,微信公众号H5网页返回上一页疑问,解决微信H5静默授

🏆 前端领域优质创作者 7715

SensorsCalibration 内嵌 Ceres Solver 的完整安装与 CMake 集成指南

Ceres Solver 是 Google 开源、用于建模和求解大规模非线性最小二乘与无约束优化问题的 C++ 库,是自动驾驶多传感器标定中相机外参(PnP)、单应矩阵求解、激光雷达与相机联合优化的核心依赖。本文以 SensorsCalibration 仓库内嵌的 Ceres 官方安装文档([installation.rst](https://link.gitcode.com/i/398b7468

gitblog_00494的博客 188

android 蓝牙通讯demo

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

PojavLauncher iOS 启动器完整教程:6 步在 iPhone、iPad 上运行 Minecraft Java 版

PojavLauncher 是一款开源的 iOS 版 Minecraft Java 版启动器,基于 Boardwalk 项目移植,支持 iPhone 与 iPad 设备。它能在 iOS 上运行从早期 Beta 到最新快照的绝大多数 Java 版游戏,并兼容 Forge、Fabric、OptiFine 等主流模组加载器,适合想在手机上完整体验 Java 版 MC 的玩家。 [![PojavLaun

gitblog_00062的博客 718

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Cole‘s AI Skills定制指南:如何把piv-validate、piv-commit改造为遵循你自己的约定?

Cole's AI Skills 是一套面向编程 Agent(coding agent)的 34 个技能包,围绕 PIV 循环(prime → plan → implement → validate → review → commit)组织。其中 `piv-validate` 和 `piv-commit` 天生就是"模板":前者留有占位校验命令,后者默认遵循 Conventional Commit

gitblog_00073的博客 74

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: Android 悬浮窗显示毫秒级时间
下一篇: makefile中“=”和“:=”的区别
原来是阿亮
博客等级 码龄11年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值