Android studio3.6中JNI教程之helloworld的思路分析

  介绍

小编给大家分享一下安卓studio3.6中JNI教程之helloworld的思路分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

jdk环境变量配置:

路径中增加下面2个路径,也就是Android工作室的路径,Android有自带的jdk。

E: \ Android \ Android  studio \ jre \ bin   E: \ Android \ Android  Studio \ bin

新建工程:

一定要选择<强>本机c++ 类型,最后要选<强> c++ 11 强支持。

 Android studio3.6中JNI教程之helloworld的思路分析

SDK设置:

文件→设置

 Android studio3.6中JNI教程之helloworld的思路分析

文件→项目结构

 Android studio3.6中JNI教程之helloworld的思路分析

首先确定工程的目录结构,然后尝试运行一下工程,使用模拟器,确保工程没问题,

 Android studio3.6中JNI教程之helloworld的思路分析

在<代码> MainActivity> package  com.example.myapplication;   ,   public  class  hello  {   ,public  native  int 添加(int 我,int  j);   }

使用android工作室自带的终端进入该你好。java所在目录,执行,

javac你好。java

终端下回到app/src/主要所在目录,执行,

javah - d jni类路径。/java com.example.myapplication.hello

此时,会在主要目录下面生成一个和cpp java同级的目录jni。

在该目录结构里面新建hello.cpp。

将<代码> com_example_myapplication_hello.h> # include  & lt; jni.h>/*,Header  for  class  com_example_myapplication_hello  */,   # ifndef  _Included_com_example_myapplication_hello   # define  _Included_com_example_myapplication_hello   # ifdef  __cplusplus   extern “C", {   # endif/*   ,*类:com_example_myapplication_hello   *大敌;方法:添加   ,*签名:我,(II)   ,*/,   # include “com_example_myapplication_hello.h"   ,   JNIEXPORT  jint  JNICALL  Java_com_example_myapplication_hello_add   ,(JNIEnv  *, jobject,, jint 我,jint  j) {return  i + j;}   ,   # ifdef  __cplusplus   }   # endif   # endif

将<代码> com_example_myapplication_hello.h, hello.cpp 这连个文件复制到cpp所在的目录,

然后修改CMakeLists。txt,增加,

add_library(#大敌;Sets 从而name  of 从而图书馆。   ,你好   ,   ,# Sets 从而library  as  a  shared 图书馆。   ,共享   ,   ,# Provides  a  relative  path 用your  source 文件(s)。   之前,hello.cpp )

修改target_link_libraries如下,

target_link_libraries(#大敌;Specifies 从而target 图书馆。   native-lib才能   ,你好   #,才能Links 从而target  library 用,log 图书馆   #,才能included 从而NDK拷贝。   $ {log-lib},才能)

修改喂。java的调用方式,

package  com.example.myapplication;   ,   public  class  hello  {   ,   ,static  {   ,System.loadLibrary (“hello");   ,}   ,public  native  int 添加(int 我,int  j);   }

修改<代码> MainActivity。java代码中的onCreate函数,

protected  void  onCreate (Bundle  savedInstanceState), {   ,super.onCreate (savedInstanceState);   ,setContentView (R.layout.activity_main);   ,   ,//Example  of  a  call 用a  native 方法   ,TextView  tv =, findViewById (R.id.sample_text);   ,//tv.setText (stringFromJNI ());   ,tv.setText (“hello  9 + 10=,,, +, new 阀门hello () (9, 10));   以前,}

然后,<代码> 重建项目,没有错误后,然后<代码>运行应用程序>

Android studio3.6中JNI教程之helloworld的思路分析