`
yanghaoli
  • 浏览: 288508 次
社区版块
存档分类
最新评论

Android NDK开发二:Android NDK 101

 
阅读更多

Android NDK包含一下主要组件:

 ARM, x86, and MIPS cross-compilers

  Build system

  Java Native Interface headers

  C library

  Math library

  POSIX threads

  Minimal C++ library

  ZLib compression library

  Dynamic linker library

  Android logging library

Android pixel buffer library

Android native application APIs

OpenGL ES 3D graphics library

OpenSL ES native audio library

OpenMAX AL minimal support

 

 

Android NDK的结构:

ndk-build: This shell script is the starting point of the Android NDK build

system. 

ndk-gdb: This shell script allows debugging native components using the GNU Debugger. 

ndk-stack: This shell script helps facilitate analyzing the stack traces that are produced when native components crash. 

build: This directory contains the modules of the entire Android NDK build system. 

platforms: This directory contains header files and libraries for each supported Android target version. These files are used automatically by the Android NDK build system based on the specified target version.

samples: This directory contains sample applications to demonstrate the capabilities provided by the Android NDK. These sample projects are very useful for learning how to use the features provided by the Android NDK.

sources: This directory contains shared modules that developers can import into their existing Android NDK projects.

toolchains: This directory contains cross-compilers for different target machine architectures that the Android NDK currently supports. Android NDK currently supports ARM, x86, and MIPS machine architectures. The Android NDK build system uses the cross-compiler based on the selected machine architecture.

 

从命令行编译Hello-JNI:
1、cd到Hello-JNI的目录运行:ndk-build

2、Android SDK build system 基于 Apache ANT,所以要生成Apache ANT build files:

android update project -p . --target 1

3、安装:ant debug install

4、启动Hello-JNI:

$ adb shell

# am start -a android.intent.action.MAIN -n com.example.hellojni/

com.example.hellojni.HelloJni

 

Android NDK涉及到的tools:

1、adb shell

ADB shell is a real Linux shell embedded in ADB client. Although not all standard commands

are available, classical commands, such as ls, cd, pwd, cat, chmod, ps, and so on are

executable. A few specific commands are also provided such as:

logcat To :display device log messages

dumpsys :To dump system state 

dmesg: To dump kernel messages 

 

2、am

Activity Manager. Command am allows to start Android activities,

services or sending intents (that is, inter-activity messages) from command line.

 

3、ant

a Java-based build automation utility。

Compile, package, and install the final HelloJni APK (an Android application package). All these steps can be performed in one command, thanks to Ant build automation tool. Among other things, Ant runs javac to compile Java code, AAPT to package the application with its resources, and finally ADB to deploy it on the development device. 

4、ndk-build

Build libhello-jni native library with ndk-build, which is a wrapper Bash script around Make. Command ndk-build sets up the compilation toolchain for native C/C++ code and calls automatically GCC version featured with the NDK.

5、AAPT(Android asset packaging tool)

 

 

Android NDK Project的目录结构:

1、jni:

包含native的源码和Android.mk

 

2、 libs:

这个目录在build的时候由 Android NDK build system创建。为不同machine architecture包含不同的独立的子目录例如 ARM的是armeabi

 

 3、obj:

包含了编译后产生的object files

 

Android.mk:

 Android.mk 是一个 GNU Makefile 为 Android NDK build system描述了 the NDK project  Android NDK build system.

LOCAL_PATH := $(call my-dir)//指定native source code的目录,my-dir是当前目录
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni //文件名,将产生一个名为libhello-jni.so的库文件

LOCAL_SRC_FILES := hello-jni.c //指定所有的源码文件
include $(BUILD_SHARED_LIBRARY)//BUILD_SHARED_LIBRARY指定了 build-shared-library.mk的位置,为了生成动态链接库,静态库可用                                    include $(BUILD_STATIC_LIBRARY)

 

 

 

 

tips:

1、设置Android NDK 的location Eclipse-》Preference-》Android-》NDK-》NDK location

1
2
分享到:
评论

相关推荐

    Android ndk string处理:ndk-string-test

    Android ndk string处理:ndk-string-test

    Android NDK 开发教程二

    ### Android NDK 开发教程概览 #### 一、引言 随着移动互联网技术的不断发展,Android 应用开发已成为软件行业中不可或缺的一部分。为了满足不同层次的开发需求,Google 提供了多种工具和技术栈,其中 Android NDK ...

    androidndk开发实战

    《Android NDK开发实战》是针对移动应用开发者的一份宝贵资源,主要涵盖了如何在Android平台上进行原生代码开发。NDK(Native Development Kit)是Google为Android提供的一个工具集,它允许开发者使用C和C++编写性能...

    ECLIPSE下的androidndk开发

    本教程将指导你如何在Eclipse环境中集成Android NDK进行开发。 **1. 为什么要用NDK?** 使用Android NDK的主要原因是性能优化。原生代码可以直接与硬件交互,因此执行速度通常比Java更快。此外,NDK还可以用于利用...

    非常强大的eclipse中android ndk开发环境的配置说明

    ### 非常强大的Eclipse中Android NDK开发环境的配置说明 #### 一、概述 本文档将详细介绍如何在Eclipse中配置Android NDK开发环境,并实现C/C++代码的自动编译以及通过Eclipse使用Ant生成JNI所需的头文件。配置流程...

    Android C++高级编程:使用NDK(完整版带书签).pdf

    《Android C++高级编程:使用NDK》是一本深度探讨Android平台上C++开发技术的权威著作,完整版带有书签,方便读者随时查阅和学习。本书主要针对Android开发者,特别是那些希望利用C++来提升应用性能、降低内存占用...

    Android NDK 开发教程三

    ### Android NDK 开发教程之 Hello JNI 示例详解 #### 一、引言 在移动应用开发领域,Android NDK (Native Development Kit) 提供了一种使用 C 或 C++ 编写原生代码的方式,这对于提高应用程序性能至关重要。本文...

    android ndk开发实例代码

    这个"android ndk开发实例代码"提供了一个入门级的示例,帮助开发者理解NDK和JNI(Java Native Interface)的结合使用。 JNI是Java平台的标准部分,它为Java代码提供了调用本地(非Java)代码的能力。在Android开发...

    Android NDK开发轻松入门.pdf

    ### Android NDK 开发轻松入门知识点详解 #### 一、Android NDK 概述 **Android NDK**(Native Development Kit)是 Android SDK 的一个重要组成部分,它为开发者提供了使用 C 或 C++ 编写应用程序的功能,使...

    android-ndk(android-ndk-r25b-linux.zip)

    Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++库开发工具集。这个“android-ndk-r25b-linux.zip”文件是NDK的一个特定版本,即r25b,专为Linux操作系统设计。在Android...

    Android NDK 开发的官方文档(android ndk dev guide)

    **Android NDK 开发详解** Android NDK(Native Development Kit)是Google提供的一款工具集,允许开发者在Android应用中使用C和C++代码,从而利用原生编程语言的高性能和低级硬件控制能力。NDK的主要用途包括处理...

    android-ndk(android-ndk-r25b-windows.zip)

    Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++开发工具集。这个压缩包“android-ndk-r25b-windows.zip”包含了NDK的第25个版本,专为Windows操作系统设计。NDK的主要功能...

    Android NDK开发流程

    #### 二、安装Cygwin及配置Android NDK环境 1. **安装Cygwin**: - Cygwin是一款为Windows系统提供的Unix-like环境模拟器,通过它可以在Windows上运行许多原本只能在Linux或Unix环境下运行的命令行工具。 - 下载...

    Android C++高级编程:使用NDK(高清完整带书签)电子书

    《移动开发经典丛书·Android C++高级编程:使用NDK》中我们将学习如何用AndroidNDK通过原生代码语言去实现自己的Android应用中对性能要求较高的部分。  《移动开发经典丛书·Android C++高级编程:使用NDK》介绍了...

    Android C++高级编程:使用NDK_中文-高清带目录

    NDK(Native Development Kit)是Google提供的一种工具集,允许开发者在Android平台上使用C和C++编写原生代码,从而实现高性能、低级别的硬件交互以及系统级的功能开发。 本书详细讲解了Android NDK的使用方法和...

    android-ndk(android-ndk-r23b-windows.zip)

    Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C/C++开发工具集。这个"android-ndk-r23b-windows.zip"压缩包包含了NDK的第23个版本,专为Windows操作系统设计。NDK是Android应用...

    Android NDK 开发入门例子

    **Android NDK 开发入门详解** Android NDK(Native Development Kit)是Google提供的一款用于在Android平台上进行原生代码开发的工具集。它允许开发者使用C++和其他本地语言编写部分应用,以实现高性能计算或者...

    《Android NDK 开发教程 - v1.0》PDF

    《Android NDK 开发教程 - v1.0》是一本专为Android开发者设计的深入学习NDK技术的指导书籍。NDK(Native Development Kit)是Google提供的一种工具集,允许开发者使用C和C++等原生代码来开发部分或全部Android应用...

    android-ndk(android-ndk-r23b-linux.zip)

    Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++库开发工具集。这个“android-ndk-r23b-linux.zip”文件是NDK的一个特定版本,即r23b,专为Linux操作系统设计。在Android...

Global site tag (gtag.js) - Google Analytics