美文网首页Android
AndroidStudio 开发NDK/JNI教程(完整版)——

AndroidStudio 开发NDK/JNI教程(完整版)——

作者: justCode_ | 来源:发表于2019-05-16 17:16 被阅读0次

    今天讲一讲关于JNI/NDK开发的第一步,环境搭建和“hello”。

    写这篇文章的原因,主要是因为网上的文章真心大家互相抄,而且还没有一份是完整和正确的,所以才写这篇文章,这篇文章绝对是经得起验证的。

    首先,本人用的是windows的电脑,目前是windows10的系统,我用的是androidstudio 3.0+的编译器,我用的java的jdk是1.8的(java10以下都可以参考本篇文章)

    本文章是针对有一定开发经验或者java基础,android基础的同学(如果,这些都没有,就真的不要搞jni了)

    1.检查JDK环境(配置环境)

    第一步:检查jdk配置是否完成(如图,自己缺少什么就补什么)

    第二步,如图,检查是否配置成功了,如果如图一样,就是ok了。

    2.androidstudio安装(检查)NDK相关

    如图,检查一下,是否都有,如果没有就勾选下载即可(唯一可能的问题是,可能需要科学上网)


    ok,如上,基础环境配置就完成了。下面,我们开始准备和jni,sayhello了。

    3.开始jni开发

    第一步:创建jni(android项目创建就不用教了吧)

    第二步:创建cpp文件(c/c++)


    第三步:创建,配置,cmake文件:

    # CMake的编译脚本配置文件

    # 1. 标注需要支持的CMake最小版本

    cmake_minimum_required(VERSION 3.4.1)

    # 2. add_library 定义需要编译的代码库 名称, 类型, 包含的源码

    add_library(

    # Sets the name of the library.

                JNIControl

                # Sets the library as a shared library.

                SHARED

    src/main/jni/JNIControl.cpp

    )

    # 3. find_library 定义当前代码库需要依赖的系统或者第三方库文件(可以写多个)

    find_library(

    log_lib # 指定要查找的系统库, 给一个名字

            log    # 真正要查找的liblog.so或者liblog.a

    )

    # 4. target_link_libraries设置最终编译的目标代码库

    target_link_libraries(

    JNIControl  # add_library 生成的

        ${log_lib} # find_library 找到的系统库

    )

    第四步:编写java代码(jni就是java和c互调)

    第五步:重头戏来了,很多人都会卡在这里,生成头文件(.h)生成系统文件(我们平时见到过的.so文件),不过这里是打开的,可以看到的。

    有些同学这里会报gbk编码错,这个不一定。

    com.justcode.hxl.androidstudydemo.ndkdemo.JNIUtil 这里这个,其实是java文件的全路径。

    这一步成功之后,就会看到那个.h文件了。

    第六步:编写C代码

    这个基本是固定模式,黄色的都是固定,没什么说的。

    jstring,其实就是java中的string,只是在jni中,通常都要加一个j打头。

    灰色那一长串,Java_(完整方法名)

    下面的参数,第一个基本是固定的,第二个,你不写会自动提示的。

    第七步:构建一下

    上述都执行完了,应该就和我上面这个一样了。

    最后还是要测试一下撒:

    在acticity中:

    ok,jni的环境搭建和第一个例子,就这样ok了。

    虽然不难,但是,第一次写难免会有不少问题的。我只是引了一个路。

    最后还是来个git地址:https://github.com/LuckyCode1992/android_study_demo

    其中一个小例子就是上述的教程

    相关文章

      网友评论

        本文标题:AndroidStudio 开发NDK/JNI教程(完整版)——

        本文链接:https://www.haomeiwen.com/subject/nauiaqtx.html