Android NDK STL

相信Android开发者都喜欢用C++编写一些高效的应用,有关Android NDK的C++开发相关知识总结如下:

从Android NDK r5开始支持了STL Port,在这个版本开始就可以使用部分STL库的功能了,比如说vector、string摆脱c下面容易出现的数组未初始化、越界,增强应用的健壮性。

很多网友包含了include <vector> 这样头,但仍然无法编译,这里你首先要检查当前文件是否为.cpp后缀,同时为了使用标准库必须加入 APP_STL := stlport_static 在Application.mk文件中。相关对应还有

system - 使用默认最小的C++运行库,这样生成的应用体积小,内存占用小,但部分功能将无法支持

stlport_static - 使用STLport作为静态库,这项是Android开发网极力推荐的

stlport_shared - STLport 作为动态库,这个可能产生兼容性和部分低版本的Android固件,目前不推荐使用。

gnustl_static  - 使用 GNU libstdc++ 作为静态库

默认情况下STLPORT是不支持C++异常处理和RTTI,所以不要出现 -fexceptions 或 -frtti ,如果真的需要可以使用gnustl_static来支持标准C++的特性,但生成的文件体积会偏大,运行效率会低一些。

支持C++异常处理,在Application.mk中加入 LOCAL_CPPFLAGS += -fexceptions这句,同理支持RTTI,则加入LOCAL_CPPFLAGS += -frtti,这里Android123再次提醒大家,第二条说的使用gnustl静态库,而不是stlport。

强制重新编译 STLPort ,在Application.mk中加入 STLPORT_FORCE_REBUILD := true 可以强制重新编译STLPort源码,由于一些原因可能自己需要修改下STLPort库,一般普通的开发者无需使用此项。

Android目前最新的NDK版本为r6,相关的学习可以查看NDK中的Samples整体和在PC上开发没有太大的不同。

时间: 2024-10-29 00:11:05

Android NDK STL的相关文章

Android NDK STL 库调与 System.load

对于Android可使用的STL库有很多,但gnustl功能无疑是最全面. 百度一下,发现很多人对ndk 使用stl库很不全面,往往gunstl static 过分着墨,因此,我这里之讲述 share库的使用. Application.mk Android.mk ndkstl.cpp 预处理一些函数和变量 然后执行代码 int testVector() { vector<string>  catlst; int i = 0; char temp[MAX_BUFFER_SIZE]; for (i

对于Android NDK编译器ARM和Thumb模式的理解

编译NDK项目时,编译器无法识别arm汇编,设置LOCAL_ARM_MODE := arm后问题解决, NDK文档上对LOCAL_ARM_MODE的说明如下: LOCAL_ARM_MODE By default, ARM target binaries are generated in 'thumb' mode, where each instruction are 16-bit wide, and linked with /thumb STL libraries. You can define

Android NDK 编译选项设置[zhuan]

http://crash.163.com/#news/!newsId=24 在Android NDK开发中,有两个重要的文件:Android.mk和Application.mk,各尽其责,指导编译器如何编译程序,并决定编译结果是什么.本文将详细说明几个常见的NDK选项的配置,帮助大家理解相应的配置选项. 一.Application.mk Application.mk实际上是轻量级Makefile,通常在$PROJECT/jni目录下,用于配置所有modules的编译变量,例子如下: APP_AB

Android NDK课程录制完成上线

最近根据公司安排,录制了Android NDK开发的内容,整体课程可以在www.iotekclass.com上看到,后续会慢慢的用blog把这些内容展示出来. 此课程大纲如下: 第一章 NDK简介 第一章 NDK简介 第一节 NDK简介 第二章 NDK的HelloWorld 第一节 Windows开发环境搭建 第二节 NDK开发的HelloWorld 第三章 JNI 第一节 JNI简介 第二节 本地代码调试信息输出习 第三节 基本数据类型的传递与返回 第四节 String字符串处理 第五节 引用

Android NDK编程浅入深出之--Android.mk

    Android.mk Android.mk是一个向Android NDK构建系统描述NDK项目的GUN Makefile片段.它是每一个NDK项目的必备组件.构建系统希望它出现在jni子目录中.下面是hello-jni项目中Android.mk文件的内容. # Copyright (C) 2009 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License

高手谈Android NDK C++ RTTI 分析

本文意在说明Android NDK 在实现C++ RTTI时的相关数据结构,并从汇编角度分析其内存布局,以帮助理解RTTI的实现原理,同时,分析在逆向过程中如何利用RTTI恢复C++类名信息.        用ndk-build编译C++代码时,默认的C++运行时库(libstdc++)是不支持RTTI的, 需要在Application.mk与Android.mk中进行配置.其它可以选择的C++运行时库有GAbi++.STLport.GNU STL.LLVM libc++, 各种库又分静态链接库

Android NDK编译选项设置

在Android NDK开发中,有两个重要的文件:Android.mk和Application.mk,各尽其责,指导编译器如何编译程序,并决定编译结果是什么.本文将详细说明几个常见的NDK选项的配置,帮助大家理解相应的配置选项. 一.Application.mk Application.mk实际上是轻量级Makefile,通常在$PROJECT/jni目录下,用于配置所有modules的编译变量,例子如下: APP_ABI := armeabi arm64-v8a x86_64 x86 arme

Android NDK 下载

Android NDK Android NDK, Revision 10 (July 2014) Platform(32-bit target) Package Size (Bytes) MD5 Checksum Windows 32-bit android-ndk32-r10-windows-x86.zip 500135685 0a3c01147abba945cc4ef5837519ec97 Windows 64-bit android-ndk32-r10-windows-x86_64.zip

哪位大兄弟有用 cMake 开发Android ndk的

一直用 Android studio 开发ndk,但是gradle支持的不是很好,只有experimental 版本支持 配置各种蛋疼.主要每次新建一个module都要修改配置半天.之前也看到过google 开发文档有提到 cmake 但是一直没用.哪位大兄弟用过,说下经验 哪位大兄弟有用 cMake 开发Android ndk的 >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007205830/哪位