Как использовать собственный OpenSL ES в студии Android

Мне нужно разработать аудиоприложение в NDK с помощью Android Studio. я добавил

the ndk path to local.properties -

    ndk.dir=/opt/android-ndk-r10
    sdk.dir=/opt/adt-bundle-linux-x86_64-20140702/sdk

In build.gradle I added an entry for OpenSLES -
apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.hellojni"
        minSdkVersion 8
        targetSdkVersion 21

        ndk {
            moduleName "HelloJNI"
            ldLibs "OpenSLES"       // Link with these libraries!
            stl "stlport_shared"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:20.0.0'
    compile 'com.android.support:appcompat-v7:20.0.0'
}

Затем я попытался добавить #includes для opensl -

#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>

но IDE не распознает заголовки, говоря, что не может найти включаемые файлы. Я также попытался импортировать проект собственного аудио в студию Android, но это тоже не скомпилировалось и не запустилось. Я знаю, что до сих пор нет официальной поддержки для использования NDK с Android Studio. Но я видел несколько видеороликов, в которых показано, как интегрировать ndk с Android Studio. Есть ли способ сделать это? заранее спасибо


person Pankaj    schedule 28.04.2015    source источник


Ответы (1)


Библиотека OpenSL доступна для платформ Android с API 9+, поэтому вы можете изменить минимально необходимый SDK.

Не уверен, как NDK выбирает платформу для компиляции, но вам может понадобиться скомпилировать себя, используя собственный файл Application.mk, например:

APP_ABI := armeabi
APP_PLATFORM := android-9
TARGET_PLATFORM := android-9

Кроме того, вы всегда должны ориентироваться и компилировать с самым высоким доступным SDK.

Вот пример того, как должен выглядеть ваш файл сборки:

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.hellojni"
        minSdkVersion 9
        targetSdkVersion 22

        ndk {
            moduleName "HelloJNI"
            ldLibs "OpenSLES"       // Link with these libraries!
            stl "stlport_shared"
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'
}

Примечание. С приведенной выше конфигурацией библиотеки у меня находятся (со встроенными конфигурациями ndk).

person Simas    schedule 28.04.2015