# NDKLearn **Repository Path**: ChiHun/ndklearn ## Basic Information - **Project Name**: NDKLearn - **Description**: 这个项目是为了学习Android NDK,列举了cmake、jni的一些知识 - **Primary Language**: Java - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NDK入门指南 自Android发布以来,大部分人都用java开发应用程序,但是java代码运行在虚拟机上,需要一层转换,性能不如原生c\c++代码直接运行。同时c\c++诞生比java早,开发人员众多,也累积了很多优秀的可以跨平台的库,可以帮助我们更好的开发Android应用,因此学习ndk的知识是很有必要的。 ## [NDK简介](docs/ndk.md) Android NDK 是一个工具集,可让您使用 C 和 C++ 等语言以原生代码实现应用的各个部分。对于特定类型的应用,这可以帮助您重复使用以这些语言编写的代码库。 如果我们需要应用编译和调试原生代码,我们需要以下组件: Android 原生开发套件 (NDK):这套工具使您能在 Android 应用中使用 C 和 C++ 代码。 CMake:一款外部构建工具,可与 Gradle 搭配使用来构建原生库。如果您只计划使用 ndk-build,则不需要此组件。 LLDB:Android Studio 用于调试原生代码的调试程序。 ## [cmake简介](doc/cmake.md) CMake是旨在构建,测试和打包软件的开源,跨平台工具系列。CMake用于使用简单平台和独立于编译器的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机makefile和工作区。 ## [jni简介](doc/jni.md) JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少要保证本地代码能工作在任何Java 虚拟机环境。 ## 附录 - [NDK官方文档](https://developer.android.google.cn/ndk/guides) - [向您的项目添加 C 和 C++ 代码](https://developer.android.google.cn/studio/projects/add-native-code) - [jni官方文档](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/) - [Android JNI](https://developer.android.google.cn/training/articles/perf-jni) - [cmake官方文档](https://cmake.org/cmake/help/latest/index.html#index-0-guide:CMake%20Tutorial) - [cmake交叉编译Android环境](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-android) - [示例代码](https://developer.android.google.cn/ndk/samples)