NDK开发常见错误

  1. 在jni目录下没有发现Android.mk文件

    Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk
    
  2. c文件中没有导入jni.h的头文件.

    jni/CommonError.c:4:1: error: unknown type name 'JNIEXPORT'
    jni/CommonError.c:4:19: error: expected '=', ',', ';', 'asm' or '__attribute__'
    before 'JNICALL'
    jni/CommonError.c:4:19: error: unknown type name 'JNICALL'
    
  3. c代码实现的方法没有写形参的名字.

    jni/CommonError.c: In function 'Java_com_ycy_commonerrordemo_MainActivity_
    sayHelloInC':
    jni/CommonError.c:6:3: error: parameter name omitted
    jni/CommonError.c:6:3: error: parameter name omitted
    jni/CommonError.c:8:13: error: 'env' undeclared (first use in this function)
    jni/CommonError.c:8:13: note: each undeclared identifier is reported only once f
    or each function it appears in
    
  4. 调用native方法, 没有加载.so文件.

    No implementation found for native Lcom/ycy/commonerrordemo/MainActivity;.sayHelloInC ()Ljava/lang/String;
    
  5. 加载.so文件时, 名字写错.

    java.lang.UnsatisfiedLinkError: Couldn't load libcommonerror.so: findLibrary returned null
    
  6. 当前生成的arm平台下的.so文件, 运行在了x86的平台模拟器下.

    java.lang.UnsatisfiedLinkError: Couldn't load libcommonerror.so: findLibrary returned null
    
    • 解决方案: 在jni的目录下, 创建一个Application.mk, 内容如下:

      # 生成所有的机器码.
      APP_ABI := all
      
      # 生成单个平台的机器码
      APP_ABI := x86 armeabi 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值