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

好,大功告成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值