Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android Studio 2.0下創建jni應用調用本地C函數

Android Studio 2.0下創建jni應用調用本地C函數

編輯:關於android開發

Android Studio 2.0下創建jni應用調用本地C函數


開發環境

jdk1.8.0_77 sdk 25.1.1 ndk android-ndk-r11c-windows-x86_64 Android Studio 2.0

詳細步驟

一:新建工程HelloFromJni

這裡寫圖片描述

二:配置工具

1 切換到project視圖右鍵打開Module setting,添加NDK目錄

這裡寫圖片描述

2 在build.gradle文件的defaultConfig節點中類似添加

defaultConfig {
    ...
    ndk {
        moduleName "hello-jni"
    }

    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir "src/main/libs"
    }

}

3 在Settings > Tools > External Tools中添加命令行工具(NDK)如下:

1 添加javah (以便根據MainActivity生成相應頭文件)

這裡寫圖片描述

2 添加ndk-build.cmd編譯命令工具

這裡寫圖片描述

3 添加ndk build clean工具

這裡寫圖片描述

4 編輯MainActivity.java文件添加本地方法聲明,並加載類庫(此處為hello-jni),示例代碼如下:

package com.example.dell.hellofromjni;

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

public class MainActivity extends AppCompatActivity {

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

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

        TextView tv=(TextView)findViewById(R.id.tv);
        tv.setText(getStrFromJni());
    }

    public native String getStrFromJni();
}

5 在app上右鍵生成jni目錄

這裡寫圖片描述

6 在MainActivity.java上右鍵選擇NDK工具javah,在jni目錄中生成com_example_dell_hellofromjni_MainActivity.h文件

這裡寫圖片描述

7 在jni目錄中新建並編寫hello-jni.c文件,函數可以直接在剛才生成的頭文件中靠過來並添加參數和函數體:

#include "com_example_dell_hellofromjni_MainActivity.h"

JNIEXPORT jstring JNICALL Java_com_example_dell_hellofromjni_MainActivity_getStrFromJni
  (JNIEnv * env, jobject obj){
        char* cstr = "hello from c";
        return (*env)->NewStringUTF(env, cstr);
  }

8 在jni中新建編譯配置文件Android.mk和Application.mk

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_MODULES := hello-jni

APP_ABI := armeabi armeabi-v7a x86

9 在jni文件夾上右鍵選擇NDK> ndk-build編譯c代碼,如果發生錯誤應該用ndk build clean一下清楚編譯生成的類庫再修改錯誤

這裡寫圖片描述

10 現在就可以在虛擬機或者真機上測試運行了:

這裡寫圖片描述

這裡寫圖片描述

   

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved