windows7 android studio jni 例程

来源:互联网 发布:怎么可以做淘宝模特 编辑:程序博客网 时间:2024/06/07 02:51

一、下载 ndk

        1、ndk 下载地址 http://tools.android-studio.org/

        2、根据自己的需要选择版本,我选择了 android-ndk64-r10-windows-x86_64.zip

        3、这个软件不需要安装,直接解压就可以使用。我把它解压在E:\Android\ndk下,这个在第二步设置环境变量时用得上。

二、设置环境变量

        在例程中需要用到两个命令 javah   和   ndk-build

        1、打开电脑的 "高级系统设置"->“高级”->"环境变量"

        2、在"系统变量"选项下添加如下变量:

              1)、变量名:classpath   变量值: C:\Program Files\Java\jdk1.8.0_65\lib   (变量值根据自己的实际安装路径填写)

              2)、变量名:JAVA_HOME   变量值: C:\Program Files\Java\jdk1.8.0_65   (变量值根据自己的实际安装路径填写)

              3)、变量名:PATH   变量值: C:\Program Files\Java\jdk1.8.0_65\bin;E:\Android\ndk   (变量值根据自己的实际安装路径填写)

三、建立实例工程

        1、打开Android Studio   ->   选择 Start a new Android Studio project   ->   随便填写一个工程名字  ->  Next   -> Next  ->  选择 " Empty Activity"  -> Next -> Finish

        2、打开在res\layout\目录下的activity_main.xml文件,添加一个TextView控件,用来显示JNI  库函数返回的字符串,代码如下:

     <?xml version="1.0" encoding="utf-8"?>     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"         xmlns:tools="http://schemas.android.com/tools"         android:layout_width="match_parent"         android:layout_height="match_parent">        <TextView            android:id="@+id/textview"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerHorizontal="true"            android:layout_centerVertical="true"            android:text="Hello World!" />     </RelativeLayout>  
     3、打开MainActivit.java,添加 下面的代码,如下:
     public class MainActivity extends AppCompatActivity {
       /*  需要添加的代码 */       static {           System.loadLibrary("my_jni");  /*这个JNI 库的名称 */       }       public native String jni_demo_api();   
       /*****************************/
       @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.activity_main);
   /* 需要添加的代码 */           TextView mTextView = (TextView) findViewById(R.id.textview);           mTextView.setText(jni_demo_api());
           /*****************************/        }     }
     4、在Android Studio软件界面的最底面 有一排 “TODO    Android Monitor   Terminal    Messages”
        1)、点击那个 "Terminal"
        2)、依次输入下列命令:
             (1).cd app\src\main  
             (2).javah -d jni -classpath E:\Android\sdk\platforms\android-23\android.jar;java\ com.example.felixmo.jnidemo.MainActivity
                 其中 E:\Android\sdk\platforms\android-23\android.jar这个路径是sdk的路径
                 "java\" 这个是类的相对路径
                 "com.example.felixmo.jnidemo.MainActivity" 这个是调用JNI的类名,根据自己实际情况修改
        3)、如果都执行成功,会看到app目录下多了一个jni文件夹,里面有一个头文件 com_example_felixmo_jnidemo_MainActivity.h
     
      5、在jni目录下添加一个C文件,代码如下:
         
      #include <string.h>      #include <com_example_felixmo_jnidemo_MainActivity.h>      JNIEXPORT jstring JNICALL Java_com_example_felixmo_jnidemo_MainActivity_jni_1demo_1api            (JNIEnv *env, jobject obj)      {            return (*env)->NewStringUTF(env, "Hello from JNI !");       }
      6、拷贝  ndk\samples\hello-jni\jni 下面的 Android.mk 和 Application.mk 到自己工程中的jni目录下
         1)、修改Android.mk文件,如下:
              include $(CLEAR_VARS)
              LOCAL_MODULE    := my_jni   /*这个名字要与上面 那个 System.loadLibrary("my_jin") 一样*/              LOCAL_SRC_FILES := main.c   /*这个名字就是刚才新建的C语言文件名*/
              include $(BUILD_SHARED_LIBRARY)
         2)、在Application.mk 添加代码如下 :              APP_OPIM := debug
      7、回到Android Studio开发环境的Terminal界面 输入 命令:ndk-build
         如果成功会看到有生成很多版本的libmy_jni.so库文件。
      8、在 Gradle Scripts目录下,打开 local.properties 文件
         添加  ndk.dir=E\:\\Android\\ndk
      
      9、在 Gradle Scripts目录下,打开 gradle.properties 文件
         添加   android.useDeprecatedNdk=true
      10、在 Gradle Scripts目录下,打开 build.gradle(Module:app) 文件
          添加代码如下 :   
          defaultConfig {               applicationId "com.example.felixmo.jnidemo"               minSdkVersion 15               targetSdkVersion 23               versionCode 1               versionName "1.0"
               /*这个需要自己添加*/               sourceSets.main {                  jniLibs.srcDir 'src/main/libs'                  jni.srcDirs = [] //disable automatic ndk-build call               }
               /********************/          }
        11、重新编译工程,如果没有做错,那么就一定成功。
        12、点击 "Run" 就可以在手机上看到效果。
             
         

           


0 0
原创粉丝点击