android studio c++ 自动补全

这两天弄起来了Android ndk,可这东西的配置实在是个问题。对于Eclipse可以通过makefile进行编译,也比较成熟。但是对Android studio来说就蛋疼了,官方是想通过gradle来实现自动编译,确实这种方式也比较省事,但是无耐对于NDK的支持studio现在还是个实验性的功能,网上的教程大部分都是1.3版本的配置方案,而且很初级。官方教程只找到了studio 2.2预览版的。所以只能自己摸索了。

先说一下gradle中的配置

在defaultConfig中添加一个ndk{}

ndk{}可添加的属性如下:

moduleName "xxx"        编译后so库的名字

ldLibs "xxx" "xxx" ....     连接的库,可以有多个

abiFilters "xxx" "xxx"     so库运行的cpu架构,有armeabi armeabi-v7a arm64-v8a x86 x86_64 mips mips64这些,常用的是armeabi和armeabi-v7a

stl "xxx"                        C++ runtime support library,共有九种

cFlags "xxx" "xxx" ...     编译选项

C++ runtime support library的选择如下

android studio c++ 自动补全

默认是libstdc++,这个库之提供了最小的对c++的支持,比如new delete 这些操作,可以看Features那一栏。

_static结尾的是静态连接,_shared结尾的属于动态链接

studio中在新建c/c++ source file的时候会有一个选择文件后缀的选项,它默认的就是.c后缀是c语言文件,.cpp后缀的是c++文件。如果在.c文件中写c++的语法会提示错误,而且编译也报错。所以遵守就好了。

c++ stl库的自动补全

studio的编辑器的默认搜索路径是 ndk路径/platforms/android-xx/arch-xx/usr/include 这里边都是c的语言的东西,所以我们include c++标准库的头文件会提示找不到,但是编译可以过。

在写c++的代码时,首先在gradle的中配置用的c++支持库,比如

stl "gnustl_shared"

然后添加编译选项

cFlags "-IE://android-ndk-r12b/sources/cxx-stl/gnu-libstdc++/4.9/include"

这个E://android-ndk-r12b是我ndk安装路径,在sources/cxx-stl文件夹下是各个c++支持库的文件夹,用哪个就输哪个的路径

然后重新构建一下项目,这时studio就可以识别c++标准库的头文件了。

最后引用关于使用Android Studio 开发NDK项目生成.h文件方法的方法

在Android studio环境下开发生成.h文件的正确姿势

1, 从Android Studio的Terminal里进入到, <Project>/src/main/java 目录下
2, 执行javah XXX.XX.XXX 即可,   XXX.XX.XXX是要生成.h文件的完整路径名,包名+文件名
3, 然后就会在当前目录下生成相应的.h文件。

*无需切换到build/intermediates/classes/debug/文件夹下,也无需配置-classpath环境变量

上一篇:AndroidNDK开发中使用CMake编译JNI


下一篇:Android Studio NDK编程-环境搭建及Hello!