android调用native简单实现

1.写一个类作为native方法调用入口

package com.example.com.example.myapplication;

public class NativeLib {
    static {
        System.loadLibrary("native-lib");
    }

    public static native int calculateSum(int a, int b);
}

2.写native方法的实际逻辑(以加法为例)

#include <jni.h>

extern "C"
JNIEXPORT jint JNICALL
Java_com_example_com_example_myapplication_NativeLib_calculateSum(JNIEnv *env, jclass clazz, jint a,
                                                                  jint b) {
    // TODO: implement calculateSum()
    return a + b;
}

3.创建CMAKELists.txt

cmake_minimum_required(VERSION 3.4.1)

add_library(native-lib SHARED native-lib.cpp)

4.配置当前项目build.gradle

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdk 24
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }
        ndk {
            abiFilters "arm64-v8a"
        }
    }

    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.22.1"
        }
    }

5.正常调用

        binding.fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
                int res = NativeLib.calculateSum(1,3);
                Log.d("zhangshuai","res = "+res);
            }
        });

ps:文件目录结构

另外,也可参考

一文带你实战Android JNI编程 - 掘金

Android JNI 开发_android jni开发_TheFlashArrow的博客-CSDN博客

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值