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