9月 062019
	一、环境
Android Studio 3.4.2
c++编译器:cmake
本文从一个不包含c++支持的项目开始添加ndk的开发
二、修改build.gradle
在app/build.gradle中的android节点中增加externalNativeBuild节点,如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | apply plugin: 'com.android.application' android {     compileSdkVersion 28     buildToolsVersion "29.0.1"     defaultConfig {         //...     }     buildTypes {         //....     }     externalNativeBuild {         cmake {             path "CMakeLists.txt"         }     } } dependencies {     //.... } | 
我们指定cmake的配置文件为CMakeLists.txt,其位置应该在app/CMakeLists.txt
二、创建CMakeLists.txt
创建文件app/CMakeLists.txt
三、新建一个java类用于调用c++的函数
因为jni的函数声明必须和具体的类名关联,我们新建一个CUtils类来处理,新建一个CUtils.java
(Android默认的例子中都是放在MainActivity中,所以你看到的c中的函数名都是类似这样的Java_com_xxx_xx_MainActivity_func这样的)
假设我们要测试一个实现求和的jni函数,名字叫getSum,先在CUtils.java中定义对native中的引用,CUtils.java代码如下:
| 1 2 3 4 5 6 7 8 9 | package com.zht.car.ndktestapp; public class CUtils {     static {         System.loadLibrary("ndktest");     }     public static native int getSum(int x, int y); } | 
四、创建c++文件
选择菜单File->New->C/C++ Source File,输入名字test
| 1 2 3 4 5 6 7 8 9 10 11 | #include "jni.h" extern "C"{ JNIEXPORT jint JNICALL Java_com_zht_car_ndktestapp_CUtils_getSum(JNIEnv *env,     jobject /* this */,     jint x, jint y){     return x + y; } } | 
五、编辑CMakeLists.txt
| 1 2 3 4 5 | add_library (     ndktest     SHARED     test.cpp ) | 

 
                 微信扫一扫,打赏作者吧~
微信扫一扫,打赏作者吧~
Sorry, the comment form is closed at this time.