首先,爲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
好,大功告成。