NDK开发_cwin配置+编程简单步骤

      最近在调试 车辆识别demo,说实话,虽然最初接触jni的时候,是在eclipse工程中进行开发的,不过后面遇到的项目都是直接放到了android 源码中编译的,所以对于在eclipse中的ndk开发,其实记忆有点模糊了,包括 Android.mk的编写,都有点小区别吧。

      这里简单记录下,权当简单回顾吧。

===========================================================================================

一、需要准备和安装 的东东

    1>cygwin   cygwin还是蛮强大的,相当于是在window环境上,提供了个 unix操作的环境吧。后面在window上编译 so还得靠它;

    2>android-ndk-*** ,这个的版本很多,也不清楚目前最新的版本是多少了,不过都没有太大的关系,我使用的 android-ndk-r8b,这个是提供了编译 so需要的工具,而且也提供了些 jni 的sample;

 

    cygwin 的安装就有点坑了,如果是选择 从网络上下载安装,也不清楚是哪个网址能成功下载的,估计得翻墙才行;不过之前安装的时候,的确是选择 网络安装,也能成功安装,只是忘了选择哪个网址了,这次也试了很多了网点,不过不是网速太慢,就是中途有报错了。

   所以后面选择的是本地安装了,还好之前安装过一次成功的,这次本地安装完后,直接把之前安装好的 bin目录,直接替换现在安装的bin目录,然后需要安装的一些东西就不会缺少了。

 

二、cygwin 的简单使用

  1>简单映射下硬盘,方便后面的操作,如下图,后面直接 cd win_c,就是切换到 c盘啦

      

  2>配置下 ndk路径,在 .bashrc 中添加 如图所示内容,相应的ndk路径根据自己自己实际情况而定,我这边是直接放在了 d盘

       

  3>配好了环境,当然是需要 source 一下啦

       

   4>完成了上面几步,我们就来看下有没有生效啦,ndk提供的demo就派上用场了,切换到 ndk 的samples目录,我这里测的是hello-jni,

      切到hello_jni 目录下后,ndk-build 下。(我这里可能有点问题,虽然install 成功了,后面copy到libs/armeabi的时候出错了,不过这丝毫不影响我们后面实际项目的使用,只要install没报错就ok了)

     

三、编译 车辆识别项目 jni

       前面的工作做好了,现在就可以来编编我们的项目了,切到项目工程 的jni目录下(一般jni相关的都放在了jni目录下,当然这个目录视自己实际情况而定),

   然后很简单的ndk-build 下下,ok,需要的so 成功生成了,我们可以看到 这时会在工程的 libs/armerbi下生成了我们需要的so。

       

   

========= JNI 编程 最最简单步骤=====================================================================

     本地时间 19:02,而且是周六,其实不想写了,不过又想想不能偷懒,所以还是接着简单写下下~

 

    1>javah + native 类路径,生成相应的 .h文件

              

     2>根据 .h 文件,新建对应的 .cpp文件,并实现相应的方法

     3>javap -s + native类路径,查看java 方法签名。(个人觉得这个还是挺好用的,不过也只有在 我们的jni需要放到 android 源码中编译的时候,需要写 方法映射 的时候才用的上)

          

   

        2017-1-11

     =======================================================================================

        前面说的是调通别人提供的demo,这在将demo的功能移值到实际项目中的时候,还是遇到了点问题。首先就是新建了native 类,重新 生成so的问题。

    【遇到的问题】

     1、javah +native 类名,提示找不到 类 Bitmap

        

        找不到Bitmap,那就是android.jar 没找到,ok, -classpath 指定下android.jar路径

        
      这时报错 找不到“com.visdom.lprtest.LPR”了,

      原来完整的用法应该是如下图所示,除了指定需要的jar,还需要指定当前路径,不过同样的写法在cmd中输入是可以的,在cygwin中就报错了,原因不详。

      不过这样能生成 .h就可以了,不影响下一步的进行了。(这里得说明下,如果写的native方法,不需要import其他类的话,直接 javah + native类就可以生成 .h了)

     

 

     下面再相对应的修改下 jni目录下的Android.mk 需要编译的文件,就可以在cygwin中切到该jni目录下,ndk-build了

  

  好了,下面就可以看到在armeabi目录下生成我们需要的libLPRJNI.so了

   

 -------------------- 

 2、安装apk后,切到 data/data/包名/libs 目录下,发现没有 .so文件???

     这个问题就得说下 adb push 和 adb install 的区别了,如果直接adb push 到安装目录的话,libs目录下是不会有so文件的,如果是 adb install的话,则是有的。

 而我调试的,因为签名关系,只能采用 adb push的方式,这种情况下,需要加载的so就需要手动的push 到system/lib目录下了。

 

=============================================================================

欢迎关注我的个人微信公众号,公众号会记录自己开发的点滴,还有日常的生活,希望和更多的小伙伴一起交流~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小驰行动派

谢谢老板,今晚吃鸡~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值