android c语言开发环境,[Android开发]初尝AndroidStudio2.2+cmake+ndk开发(1)——配置开发环境...

前期准备:

1、AndroidStudio版本 升级到2.2或者以上

2、下载ndk和cmake

可以在AS打开SDK manager里勾选NDK和CMake。另外建议也勾了LLDB,这是用于C++代码debug用的

另外ndk下载慢的话,也可以到这里 下载离线包,在新建完项目后手动配置过去

a05aa98faaf3

一、前期东西好后,可以开始新建项目(注意勾选Include C++ Support。这样AS会自动添加对C++的支持,否则在后面要手动改gradle脚本才能支持)。后面正常配置到finish就行。

a05aa98faaf3

要是前期准备下载ndk离线包的,可以在这里指定好ndk的路径

a05aa98faaf3

构建好的项目后,目录如下:

a05aa98faaf3

cpp目录跟以前的jni目录对应,用于存放C++的代码

CMakeLists.txt文件和以前的Android.mk和Application.mk对应,都是用于指定编译配置的

再看app级别的build.gradle:

a05aa98faaf3

新建好项目后,AS会自动生成了个JNI调用的例子

a05aa98faaf3

a05aa98faaf3

a05aa98faaf3

点击Make project或者直接运行app:

a05aa98faaf3

然后就会

1.Gradle调用外部的编译脚本CMakeLists.txt

2.CMake执行编译脚本CMakeLists.txt中的命令,将C++源文件(native-lib.cpp)编译成共享对象库(libnative-lib.so),Gradle再将这个so库打包到APK中。

生成的so库在如下目录里面

a05aa98faaf3

点击AS的菜单Build->Analyze apk,选择之前生成的akp,可以看见so包含在apk里面了

a05aa98faaf3

二、配置的大概就如上,开始编写自己的java调用native的方法

a05aa98faaf3

因为AS发现java方法没有C++实现,就报红,此时可以如下:

a05aa98faaf3

AS会自动在native-lib.cpp里面生成好方法的模板,自己在里面实现具体逻辑就行。然后在MainActivity里面调用就行。

a05aa98faaf3

插曲:修改后代码如下,这时候直接运行会报java.lang.UnsatisfiedLinkError: Native method not found错误。

a05aa98faaf3

注意系统自动生成方法的时候没有extern"C",需要自己加上,这里去掉注释就好。这是因为C和C++的符号表不相同造成的。jni是按照C的生成规则去找函数的, 所以在函数声明的时候要加上extern C使编译器把函数按照C的规则编译 这样才能被Java调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值