Android 在jni编译完成后没有出现so文件

Android JNI开发的基本使用,一个Hello World的native方法展示,已经有很多了,比如我网上参考的一个简单的编译JNI 的基础展示

这里放入链接:http://blog.csdn.net/qjay_dev/article/details/51343312(Android JNI/NDK开发之基本姿势<一>

这里遇到了一些问题:

    首先,我不知道是不是我的AS问题,通过AS下载的NDK,有点问题,编译不通过,老是出现错误,没办法我又在官网下载了最新的android-ndk-r14b-windows-x86_64

一直到 AS 的 Rebuild Project 在app的build/intermediates/目录下面始终没有看到预期的ndk文件夹,找不到想要的so文件,很是惆怅,然后开始网上搜该问题的解决办法,各种尝试,

    保证 ndk目录没问题,local.properties文件中ndk.dir=E\:\\android_sdk\\android-ndk-r14

    gradle.properties文件里面设置     android.useDeprecatedNdk=true

 在app的build.gradle里面 设置:
     defaultConfig{
       ...
       ndk{
         moduleName 'jnidemo'//自定义名称
       }
     }
  
   android{
      ....
      sourceSets{
         main{
           jniLibs.srcDir 'src/main/jni_src'//告知jni源码目录
         }
      }
   }

  在生成想要的.h和.c/.cpp文件之后,在jni文件夹下最好生成一个空的.c/.cpp文件,这可能是AS的一个bug,编译之后但是还是没有出现想要的ndk文件so文件,
 
在交叉编译的时候怎么都无法生成so文件,javah生成的头文件没错,c文件也没有错,java文件也没有错
原因:是JNI文件夹路径不对
    1 在执行javah命令时,我进入的是cd app/src/main/java 这样jni文件夹在java文件夹下,作为一个包存在,这样就无法生成so文件
       执行javah的正确姿势:
    2 进入app/src/main目录:cd app/src/main
       执行javah命令:javah

     javah -d jni -classpath ./Java com.chatone.jni.JniDemo

    3, -d jni 头文件生成到jni文件夹(当前在<Project>\app\src\main目录下,所以.h所在的目录为<Project>\app\src\main\jni )
        -classpath ./java 指定去当前路径下java下寻找包名指定的类
    这样再rebuild一下,就会生成so文件了



   

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值