Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Studio 1.5.1 JNI 編程

Android Studio 1.5.1 JNI 編程

編輯:關於Android編程


1. 新建project MyJNI,使用默認設置即可。
2. 新建Test類:右鍵com.example.myjni新建java類
新建Test步驟
3. 在Test類中編寫如下代碼,loadLibrary(“test”)中“test”庫為NDK庫名,之後將會定義。myFun()即為我們自定義的c++函數。

public class Test {
    static {
        System.loadLibrary("test");
    }
    native String myFun();
}

4. 生成Test類所對應的頭文件:打開AS Terminal,切換到$工作目錄$\MyJNI\app\src\main\java目錄下,鍵入命令:javah -jni -cp ;, com.example.myjni.Test生成頭文件(注意-cp之後是 空格+分號+逗號),經過嘗試直接使用“javah -jni com.example.myjni.Test”命令會出現“ Could not find class file for ‘com.example.myjni.Test’.”的錯誤。此時在java\目錄下就可以看到生成的.h文件了。
命令行運行結果
生成的.h內容如下:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;"> /* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class com_example_myjni_Test */ #ifndef _Included_com_example_myjni_Test #define _Included_com_example_myjni_Test #ifdef __cplusplus extern "C" { #endif /* * Class: com_example_myjni_Test * Method: myFun * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_example_myjni_Test_myFun (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif

5. 新建jni文件夾:在main目錄上右鍵,new->folder->jni floder新建jni文件夾
6. 將步驟4中生成的頭文件剪切到jni文件夾中,並且新建C++ source file “test.cpp”,編輯代碼如下:

#include "com_example_myjni_Test.h"

JNIEXPORT jstring Java_com_example_myjni_Test_myFun(JNIEnv *env, jobject obj) {
    return env->NewStringUTF("hello, this is myFun output!");
}

jstring Java_com_example_myjni_Test_myFun(JNIEnv *env, jobject obj);

在編輯完頭文件之後,可以build一下,這樣便會提示相關變量類型及函數。至此代碼部分就搞定了~

7. 配置AS NDK環境:打開AS SDK manager在sdk tools中選擇Android NDK點擊安裝。
選擇SDK Manager

點擊安裝Android NDK

8.左鍵file,選擇project structure。進入sdk location,看到如下界面,選擇OK。此時NDK及SDK的目錄將會出現在local.properties中。
進入project structure
選擇SDK location

local.properties中代碼如下所示:

ndk.dir=D\:\\Users\\XXX\\AppData\\Local\\Android\\sdk\\ndk-bundle
sdk.dir=D\:\\Users\\XXX\\AppData\\Local\\Android\\sdk

9.向gradle.properties中加入android.useDeprecatedNdk=true
10.向app目錄下build.gradle文件中設置庫文件名(生成的so文件名),其moduleName “test”就是第3步中System.loadLibrary(“test”);中所填的庫名。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.example.myjni"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        //添加部分
        ndk{
            moduleName "test"
        }
        //添加部分結束
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

11.至此我們第一個jni程序所需的所有步驟已經完成,點擊運行,查看結果。
jni運行結果截圖

 

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