zoukankan      html  css  js  c++  java
  • androidstudio 2.3.3 jni过程汇总(1):1、自己编写c文件并使用(原)

    1、编写java代码,指定lib和native方法。
    package com.taven.myapplication;

    package com.taven.myapplication;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;

    public class MainActivity extends AppCompatActivity {

    static {
    System.loadLibrary("jni-lib-1");
    }

    private native void sayHelloJni();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main);
    }
    }

    2、新建jni文件夹,在jni文件夹中新建Android.mk文件

    其中mk文件内容如下:
    #指定编译的文件夹 指定当前文件目录
    LOCAL_PATH := $(call my-dir)
    #编译器会定义很多的临时变量,中间变量,最好清空所有的中间变量。
    include $(CLEAR_VARS)
    #编译器编译出来的模块名称
    LOCAL_MODULE:= jni-lib-1
    #编译器编译出来的源代码的名称
    LOCAL_SRC_FILES:= jni-lib-1.c
    #编译一个动态库,静态库
    #静态库 文件名.a 包含所有的函数并且函数运行的依赖,体积大,包含所有的API
    #动态库 文件名.so 包含函数,不包含函数运行的依赖,体积小,运行的时候,去操作系统寻找需要的API
    include $(BUILD_SHARED_LIBRARY)

    3、在app的build.gradle下添加mk文件路径

    externalNativeBuild {
    ndkBuild {
    path file("src\main\jni\Android.mk")
    }
    }

    4、可以添加排除选项,指定生成指定平台so文件。

    在app->build.gradle文件中的android节点下的defaultConfig中添加代码如下:
    ndk {
    abiFilters "armeabi", "armeabi-v7a", "x86"
    }

     5、重新生成一下项目(Rebuild),当鼠标置于native方法上时,就会出现生成jni代码提示。按下Alt+Enter,自动生成jni文件。

     

      

    6、填写c代码



    7、再次编译项目,生成的so库目录在app/build/intermedieates/ndkBuild/debug/obj/local/目录下;

     

    8、运行即可。

  • 相关阅读:
    戏说程序猿之荒唐的需求
    戏说程序猿之过年--二叔,我真不会修电脑
    深入理解设计模式(17):迭代器模式
    深入理解设计模式(16):备忘录模式
    我的2018
    Java高级篇(一)——线程
    Java进阶篇(六)——Swing程序设计(下)
    Java进阶篇(六)——Swing程序设计(上)
    Java进阶篇(五)——Java的I/O技术
    Java进阶篇(四)——Java异常处理
  • 原文地址:https://www.cnblogs.com/weizhxa/p/7778016.html
Copyright © 2011-2022 走看看