这两天弄起来了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的选择如下

默认是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环境变量

android studio c++ 自动补全的更多相关文章

  1. eclipse自动补全的设置

    eclipse自动补全的设置   如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的 ...

  2. Eclipse自动补全设置

    如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的自动补全没有VS那么好是因为ecl ...

  3. eclipse自动补全的设置(自动提示)

      如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的自动补全没有VS那么好是因为e ...

  4. 反人类的MyEclipse之-MyEclipse代码自动补全

    如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的自动补全没有VS那么好是因为ecl ...

  5. [转载]启用 VIM 中的 Python 自动补全及提示功能

    转载: http://zhongwei-leg.iteye.com/blog/941474 周围的同事不喜欢使用 VIM 写 Python 代码的原因之一就是,VIM 不能像 Visual Studi ...

  6. (转)eclipse自动补全的设置

    如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的自动补全没有VS那么好是因为ecl ...

  7. Android Studio 设置代码提示和代码自动补全快捷键--Eclipse 风格 - 转

    首先本文转自http://blog.csdn.net/csdnzouqi/article/details/50454703,是为了方便以后查看这些设置,最后在这里感谢原博主. 为了能跟上技术发展的脚步 ...

  8. Android 自动补全提示输入AutoCompleteTextView、 MultiAutoCompleteTextView

    以在搜索框搜索时,自动补全为例: 其中还涉及到一个词,Tokenizer:分词器,分解器. 上效果图: MainActivity.java: package com.joan.testautocoml ...

  9. Visual Studio Code使用typings拓展自动补全功能

    转自:http://blog.csdn.net/liyijun4114/article/details/51658087 参考来源: 官方介绍: https://code.visualstudio.c ...

随机推荐

  1. javascript 函数声明问题

    (function(){ //运行正常 test1(); function test1() { console.log('123'); }; })() (function(){ //出错,test2未 ...

  2. An erroroccurred while filtering resources

    maven报错: maven An error occurred while filtering resources Maven -> Update Project... resolved th ...

  3. [HttpClient]传递参数

    package com.jerry.httpclient; import java.io.UnsupportedEncodingException; import java.util.ArrayLis ...

  4. js手机站跳转

    var yunzhuanhua_pc_domain = "http://www.域名.com#yht"; //PC站网址var yunzhuanhua_wap_domain = & ...

  5. JDK和JRE的区别?

    很多朋友可能跟我一样,已经使用JAVA开发很久了,可是对JDK,JRE,JVM这三者的联系与区别,一直都是模模糊糊的. 今天特写此文,来整理下三者的关系. JDK : Java Development ...

  6. TWIG整合

    //数字格式化 {{ (p.oldprice * p.count)|number_format(2,'.',',') }}

  7. 运用MyEclipse插件(link方式注意点)

    Windows7 中 MyEclipse 安装位置下,有以下两个目录: MyEclipse 10 Common 注意点一 Common 下的子目录是 plugins 和 features : 而在 M ...

  8. wordpress 设置头像

    默认的wordpress头像是第三方的.. 如果想自己上传.就得装插件了 WP User Avatar 安装完成后..设置下面就会出现这个选项..然后自己就可以上传头像了 原文:http://abuj ...

  9. BZOJ 1016 最小生成树计数

    Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的 ...

  10. [BZOJ 1046] [HAOI2007] 上升序列 【DP】

    题目链接:BZOJ - 1046 题目分析 先倒着做最长下降子序列,求出 f[i],即以 i 为起点向后的最长上升子序列长度. 注意题目要求的是 xi 的字典序最小,不是数值! 如果输入的 l 大于最 ...