Android Studio上的JNI

来源:互联网 发布:博途v13编程软件下载 编辑:程序博客网 时间:2024/06/05 08:08

首先,为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$ lsandroid  comlei@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.AacEncoderlei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ lei@lei-pc:~/StudioProjects/EncordAAC/app/build/intermediates/classes/debug$ lsandroid  com  com_whiteskycn_encordaac_AacEncoder.hlei@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

好,大功告成。