第一次使用NDK,JNI遇到的问题

JNI与NDK实践
本文记录了作者在学习JNI和NDK过程中遇到的问题及解决办法,包括编译配置、C++代码编写、so库生成等方面的经验分享。

现在的公司,很闲,都没学到什么东西

大部分公司需要熟悉NDK和JNI技术,也没接触过,找了一篇文章跟着敲了一遍,还是出现很多问题

1.

由于有的代码没有照着敲,就复制的,

在Android.mk这个文件,我直接复制的这么一段代码

LOCAL_PATH := $(call my-dir) // 设置当前的编译目录(Android.mk所在的目录)

include $(CLEAR_VARS) // 清除LOCAL_XX变量(LOCAL_PATH除外)

LOCAL_MODULE := JNI_ANDROID_TEST // 指定当前编译模块的名称

LOCAL_SRC_FILES := jnitest.cpp // 编译模块需要的源文件

include $(BUILD_SHARED_LIBRARY) // 指定编译出的库类型,BUILD_SHARED_LIBRARY:动态库;BUILD_STATIC_LIBRARY:静态库, BUILD_EXECUTEA

当时没多想,以为//后面的是注释,但是这个一个文本文件,不是java文件,所以在编译的时候,报Android.mk couldn't contain space

于是就把后面的文字和空格全部删了。

2.

在用javah生成.h头文件的时候,倒是没有出现什么问题,我用的as,添加工具后很方便。

但是根据.h头文件去写cpp文件的时候,不太懂,因为没接触过c++,所以代码也是跟着敲的

因为cpp文件格式没写对,编译也出现了很多问题

3.

在用cpp生成so库的时候,我复制了其中一个so库放到jniLibs文件夹下面,运行app的时候,崩掉了,说没找到这个库,百度了一下,说so库没弄正确。

于是就重新生成了一遍,把生成的so库文件全部放到了jniLibs下面,运行还是报错,

继续百度,找到http://blog.csdn.net/sinat_22657459/article/details/53420047

说gradle没配置好


正确配置如上

之前还在defaultConfig条目下加上了这么一个条目


不知道什么用。

更改配置后,程序成功运行


一个简单的通过so库获取当前程序的包名

教程是这篇文章:http://blog.csdn.net/xiaoyu_93/article/details/52870395

写的很详细,感谢博主的分享。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值