1. 程式人生 > >JNI Android Studio配置過程

JNI Android Studio配置過程

準備工作:下載NDK。 簡單的說,要用到C/C++,就要用NDK。直接百度搜索然後去官網下載就行,位置可以隨便放。  

Let’s Go!!! 在AS中新建一個Project,然後再新建一個class為NdkJniUtils,在內部宣告native方法(jni使用的定義,後面系列教程會細說)。 package com.example.yuhao.rxtest; public class NdkJniUtils { public native
String getCLanguageString();}
在工程主檔案Activity中寫入如下程式碼調運JNI的東西顯示在UI上。 public class MainActivity extends ActionBarActivity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView)
this .findViewById(R.id.test); NdkJniUtils jni = new NdkJniUtils(); mTextView.setText(jni.getCLanguageString()); }}
配置



在local.properties檔案裡寫入 ndk.dir = D \:\\ android \\ androidstudio
\\ sdk \\ ndk-bundle
gradle.properties檔案裡寫入 android.useDeprecatedNdk = true

在這個寫有native方法的類上面


會在jni目錄下生成
com_example_yuhao_rxtest_NdkJniUtils.h
內容如下
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_example_yuhao_rxtest_NdkJniUtils */
#ifndef _Included_com_example_yuhao_rxtest_NdkJniUtils #define _Included_com_example_yuhao_rxtest_NdkJniUtils #ifdef __cplusplus extern "C" { #endif /* * Class: com_example_yuhao_rxtest_NdkJniUtils * Method: getCLangugeString * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_example_yuhao_rxtest_NdkJniUtils_getCLangugeString (JNIEnv *, jobject);
#ifdef __cplusplus } #endif #endif

然後新建Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyLibrary LOCAL_SRC_FILES =: MyLibrary.cpp include $(BUILD_SHARED_LIBRARY)



Application.mk
APP_MODULES := MyLibrary APP_ABI := all
MyLibrary.cpp
// /** *@Description:() *@Date: 2017/7/24 9:37 *@Company: *@Author: yuhao *@Versopm: v1.0 */
// #include "com_example_yuhao_rxtest_NdkJniUtils.h"
JNIEXPORT jstring JNICALL Java_com_example_yuhao_rxtest_NdkJniUtils_getCLangugeString (JNIEnv * env, jobject obj){ return (*env).NewStringUTF("This is mylibrary !!!"); } 在jni目錄上,右鍵
libs目錄下會生成
如下平臺的so檔案

然後直接執行整個程式即可