Android-ndk开发(入门)

Android-ndk开发(一)

一、开发环境:

1、Windows 10系统电脑

2、Android Studio 3.2.1

3、Jdk1.8

4、Android ndk 16 (开发JNI必备工具,就是模拟其他平台特性类编译代码的工具)

Android-ndk开发(入门)_第1张图片
image.png

Android-ndk开发(入门)_第2张图片
image.png

二、新建项目,勾选支持C++选项,项目会自动构建支持原生开发,现在的版本使用Cmake构建,使用起来非常方便了。

Android-ndk开发(入门)_第3张图片
image.png

带有C/C++的项目目录多了CPP文件夹(存放C/C++代码的)和CMakeLists.txt文件(编译C/C++程序的)

Android-ndk开发(入门)_第4张图片
image.png
# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.4.1)
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.
#配置so库信息
add_library( # Sets the name of the library.
        # 生成的so库名称,此处生成的so文件名称是libnative-lib.so
        native-lib
        # Sets the library as a shared library.
        SHARED
        # Provides a relative path to your source file(s).
        # 资源文件,可以多个,
        # 资源路径是相对路径,相对于本CMakeLists.txt所在目录
        src/main/cpp/native-lib.cpp)
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.
# 从系统查找依赖库
find_library( # Sets the name of the path variable.
        log-lib

        # Specifies the name of the NDK library that
        # you want CMake to locate.
        log)
# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
# 配置库的链接(依赖关系)
target_link_libraries( # Specifies the target library.
        # 目标库
        native-lib
        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

Android-ndk开发(入门)_第5张图片
image.png
Android-ndk开发(入门)_第6张图片
image.png

App目录下的build.gradle文件会新添配置Cmake环境的代码

Android-ndk开发(入门)_第7张图片
image.png

如果想要编译不同平台的so文件需要添加一下代码


  ndk{

            abiFilters "armeabi", "armeabi-v7a"//,"x86"

        }

Android-ndk开发(入门)_第8张图片
image.png

生成so文件的目录

Android-ndk开发(入门)_第9张图片
image.png

三、创建JNI方法。上面是创建项目勾选C/C++自动生成的一些配置和代码,下面我们自己定义一个Java本地接口(Jni)方法,在native-lib.cpp中执行逻辑。

1、在MainActivity中创建getJNIString()的JNI方法;

Android-ndk开发(入门)_第10张图片
image.png

当前状态方法状态还是红色,没有声明,现在我们根据提示在native-lib.cpp的类中创建。

Android-ndk开发(入门)_第11张图片
image.png
Android-ndk开发(入门)_第12张图片
image.png

我们便可以在这个方法执行我们想要处理的一些逻辑,这里需要使用JNI和C/C++语法。(仅供新手参考,正在学习中)

你可能感兴趣的:(Android-ndk开发(入门))