android之jni开发,Android 下 JNI 开发Day2

05_JNI开发常见错误-30

重新创建一个工程演示CommonErrorDemo

1.缺少Android.mk文件报错:

Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk

解决方案:在jni目录下创建一个Android.mk文件

2. c文件没有include导入jni.h的头文件,导致某些类型找不到.

“Compile thumb : atguigu31 <= Hello.c

jni/Hello.c:4:1: error: unknown type name ‘JNIEXPORT’

jni/Hello.c:4:19: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before

‘JNICALL’

jni/Hello.c:4:19: error: unknown type name ‘JNICALL’

3. 方法的形参没有指定名称.加上名字就可以了.

jni/Hello.c:6:3: error: parameter name omitted

4. 没有加载动态库.so文件.

No implementation found for native

Lcom/atguigu/commonerrordemo/MainActivity;.helloFromC ()Ljava/lang/String;

5. 加载动态链接库错误,名字写错.加载时一定要写: Android.mk文件中的LOCAL_MODULE对应的名字.

Caused by: java.lang.UnsatisfiedLinkError: Couldn’t load libatguigu31.so: findLibrary returned null

6. 确定加载.so库文件的名字没有错误,还是报一下错误.是模拟器问题.把生成的arm下的.so文件,放到x86模拟器上运行就报此错误.

Caused by: java.lang.UnsatisfiedLinkError: Couldn’t load atguigu31: findLibrary returned null

– 解决方法:

1、在jni目录下创建一个Application.mk文件, 声明以下内容:

先看查看文档:/android-ndk-r9/docs/APPLICATION-MK.html

再看/android-ndk-r9/docs/CPU-X86.html文档:

Generating x86 machine code is simple: just add ‘x86’ to your APP_ABI definition in your Application.mk file, for example:

生成的x86机器代码很简单:只需添加86你app_abi定义你的文件,例如:

2、具体在Application.mk文件内容如下

APP_ABI := armeabi armeabi-v7a x86

APP_ABI := all

// 当前只能在x86的模拟器上运行, 因为生成的so文件是x86机器的机器码

APP_ABI := x86

上一篇: Android 下 JNI 开发Day2

下一篇: Android 下 JNI 开发Day2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值