Android Studio上的JNI

首先,爲AS配置NDK。
隨後,在AS中新建一個 class 命名爲 AacEncoder,並在內部聲明native方法。

package com.whiteskycn.encordaac;

public class AacEncoder {
    static{
        System.loadLibrary("aacdec");
    }
    public native void initAACEncoder();
    public native void sendRecordData(byte[] data);
    public native void stopSendRecodData();
}

編譯該工程文件,找到對應的class文件,通過javah來生成c++的頭文件

lei@lei-pc:~/StudioProjects/EncordAAC$ cd ./app/build/intermediates/classes/debug/
lei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ 
lei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ ls
android  com
lei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ 
lei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ 
lei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ javah -jni com.whiteskycn.encordaac.AacEncoder
lei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ 
lei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ ls
android  com  com_whiteskycn_encordaac_AacEncoder.h
lei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ 

在AS中新建jni目錄,將該頭文件拷貝過去,並創建對應的c++文件。
接下來在app module目錄下的build.gradle中做如下配置:

android {
    compileSdkVersion 24
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.whiteskycn.encordaac"
        minSdkVersion 19
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        ndk{                                            //add line 0
            moduleName "aacdec"                         //add line 1
            abiFilters "armeabi", "armeabi-v7a", "x86"  //add line 2
        }                                               //add line 3
    }

    sourceSets {                                        //add line 4
        main {                                          //add line 5
            jni.srcDirs = []                            //add line 6
        }                                               //add line 7
    }                                                   //add line 8
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

最後,在gradle.properties中添加如下代碼:

Android.useDeprecatedNdk=true

好,大功告成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章