• 1、android Studio 使用jni 调用 C


    一、配置相关信息

    1、配置gradle.properties文件
    //在文件中添加
    android.useDeprecatedNdk=true
    

    2、配置项目当中的build.gradle
    (1)、在defaultConfig 中添加
    ndk{
        abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
    }
    (2)、在android 中添加
    externalNativeBuild {
        ndkBuild {
            path "src/main/jni/Android.mk"
        }
    }
    

    3、 创建Android.mk文件

    //在srcmainjni       这个路径要和上面配置ndkBuild 中的path想同
    //创建Android.mk文件 添加信息  可以查看Android.mk语法查看每句话是什么意思
    
    LOCAL_PATH := $(call my-dir)  
    
    include $(CLEAR_VARS)
    
    #LOCAL_ARM_MODE := $(_ARM_MODE)
    
    LOCAL_MODULE:= jniSmaple   //这个是so库名字  
    
    
    LOCAL_CFLAGS :=
    
    LOCAL_SRC_FILES:=  com_demo_jnitest_JniC.c
    
    
    LOCAL_LDLIBS += -llog
    
    #include $(BUILD_STATIC_LIBRARY)
    include $(BUILD_SHARED_LIBRARY)
    
    4、创建Java类
    //在java目录下创建一个新类
    package com.demo.jnitest;
    
    public class JniC {
        static {
            System.loadLibrary("jniSmaple");//加载so库  名字需要和android.mk文件中的 LOCAL_MODULE相同
        }
        //声明native方法
        public static native String getString(); 
    
        public static native void jni_test();
    }
    

    5、生成h文件
    (1)、可以手动创建,需要了解 在jni目录下方创建.c文件

    #include <jni.h>
    #include <android/log.h>
    
    int loglevel =ANDROID_LOG_DEBUG;
    
    JNIEXPORT jstring JNICALL
    Java_com_demo_jnitest_JniC_getString(JNIEnv *env, jclass jclass1){
        return (*env) -> NewStringUTF(env,"Hello jni");
    }
    
    JNIEXPORT void JNICALL
    Java_com_demo_jnitest_JniC_jni_1test(JNIEnv *env, jclass jclass1){
        __android_log_print(loglevel,"native_jni","test");
    }
    
    
    (2)、命令行生成代码
    命令行cd到当前工程目录下java文件夹
    输入命令   javah -jni 包名.类名
    按照上面的类  就是  javah -jni com.demo.jnitest.JniC
    输入之后会生成一个.h文件  把里面的方法复制出来 然后创建.c文件  复制到.c当中  
    

    阳光穿过叶的缝隙!
  • 相关阅读:
    GAMIT中遇到的错误
    bash: ./install_software: Permission denied
    xmanager无法加载远程桌面
    GMT的安装
    小总结:Gamit中常见常用命令
    动态分配指针数组(以解决)
    Gamit使用gftp软件下载数据
    Python基础(1)
    JAVA中关于多线程的理解
    JAVA 基本绘图——利用JFrame JPanel 绘制扇形
  • 原文地址:https://www.cnblogs.com/Aaron-Han/p/13473985.html
Copyright © 2020-2023  润新知