Android NDK 开发之菜鸟

由于本人最近在帮一个朋友看NDK开发,期间遇到过一些不懂的问题,而在网上又没有找到什么好的解决方案;因此记录下来供参考。

首先呢,我使用的工具是Android Studio 一般来说配置好NDK也就可以了,这种教程网上也是有很多的。在这就不说了。

而我今天说的是另一种方案,不在Android Studio里面或者Eclipse里写JNI;而是使用Visual Studio 或者我使用的是QT Creator 中写项目,使用NDK进行编译。这种方式应该也是有很多人使用的。

 

当然在此之前你需要下载好NDK我使用的是NDK-r11,其它版本应该也是一样的。

 

 

  1. 创建一个项目

     

    一直next;

     

  2. 创建一个测试JNI的类

     

  3. 编译项目,并进入到项目的class目录中,生成.h文件




    注意目录关系,Eclipse中就是打开bin目录







    当然你也可以使用cd来进入到这个目录

    然后使用命令行来生成.h文件







    使用javah 后面跟包名.类名

    如果javah错,是你的JDK环境没配置好。如果找不到这个类,可能你还没有编译

    然后关闭命令行,在目录中可以发现多了一个文件

  4. 使用QT Creator 或者Visual Studio 建立一个项目,实现上面.h中的方法




    使用C++开发工具

    使用c或者c++就是个人习惯了,不过在语法上略有差别

    这里就不多说了,直接看结果。

    注:有的编译器可能要将系统生成的#include <jni.h> 改为 #include "jni.h"




    红色框中代码可能会有问题,可以直接使用注释的部分


     
  5. 编写.mk文件,使用NDK打包成.so

    切换到hellojni的目录

    新建这两个文件android.mk 和Application.mk 文件
    android.mk中的内容为:

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE := hello
    LOCAL_SRC_FILES := hello.cpp
    include $(BUILD_SHARED_LIBRARY)
     


    Application.mk 中的内容为:

    APP_ABI    := all
    APP_STL := stlport_static

    说明:
    APP_ABI
    默认情况下,NDK的编译系统会生成"armeabi"ABI生成机器代码。all 是所有平台的机器

    APP_STL
    默认情况下,NDK的编译系统为最小的C++运行时库,这里使用了string 就需要设置这个了

    最后,删除导入的jni.h 和jni_md.h (放进来是为了编写方便,编译时不需要)

    同样,在这个地方输入cmd

    这样就是成功了,去上级目录看下生成的文件,出错的话可能是JNI编写的语法有错误,可以根据情况找出问题

    看下libs里面的文件





    将这里面的文件放到项目中去,我只考了一个,根据实际情况



    在build.gradle中配置

     

    sourceSets {
    main {
    jniLibs.srcDirs = ['libs']
    }
    }

     

    在JniTest中加载lib

     

    在Activity 中测试效果

     

     

    运行看下结果

     

     

    好了,到这里就结束了。

转载于:https://my.oschina.net/afox/blog/742278

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值