AndroidStudio 开发NDK/JNI教程(完整版)——环境搭建和sayHello

96
justCode_
2019.05.16 17:16 字数 903

今天讲一讲关于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

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

日记本
Gupao