2016-04-06 3 views
1

Я пытаюсь использовать OpenAL на Android для создания пространственного звука, и я действительно изо всех сил пытался обмануть NDK и JNI и все такое.Не удается запустить OpenAL4Android в Android Studio

Примечание: это первый раз я использую JNI и NDK и я совершенно новый для андроида развития

Но я нашел библиотеку под названием OpenAL4Android. Кроме того, here - пример приложения, использующего его (под заголовком «HelloOpenAL4Android»). Проект старый и был выполнен в Eclipse. Так что я сделал:

  • импорта проекта в Android Studio (New-> Import Project)
  • созданные gradle.properties файл и добавил android.useDeprecatedNdk = истина; в противном случае я получаю сообщение об ошибке. Тогда Android-студия загружена «OpenAL4Android» в качестве библиотеки к проекту (так называемый «helloOpenAL4Android»)
  • изменил мин и целевой SDK от 7 до 15 (мин) и 23 (целевой) в build.gradle
  • попытался построить проект, но я получаю следующее сообщение об ошибке: enter image description here

в openalwrapper.h заголовке в

#include <AL/al.h> 
#include <AL/alc.h> 

и я также получил эту ошибку, когда я пытался строить из Android Studio OpenAL4Android и OpenAL-MOB в порядке интегрировать их в мои проекты.

С другой стороны, мне удалось построить .so разделяемых библиотек для всех ABI не только armeabi от OpenAL4Android по подножке:

NDK-build.cmd NDK_PROJECT_PATH = D: \ AndroidProjects \ OpenAL4Android \ приложение \ src \ main

Знаете ли вы, почему я продолжаю получать эту ошибку AL/al.h не найден? Я попытался разместить эту папку (AL/al.h) повсюду, но не нашел.

Это связано с тем, что Android Studio не поддерживает NDK правильно? Должен ли я использовать экспериментальный плагин gradle?

Это действительно убивает меня.

... пожалуйста, помогите! :)

PS: извините за длинный пост, я довольно отчаянный, я не могу завершить свой проект, и у меня заканчивается время.


EDIT1:

Это мой Android.mk файл:

TARGET_PLATFORM := android-23 
ROOT_PATH := $(call my-dir) 


######################################################################################################## 
include $(CLEAR_VARS) 

LOCAL_MODULE  := openal 
#LOCAL_ARM_MODE := arm 
LOCAL_PATH  := $(ROOT_PATH) 
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/../openal/include $(LOCAL_PATH)/../openal/OpenAL32/Include 
LOCAL_SRC_FILES := ../openal/OpenAL32/alAuxEffectSlot.c \ 
        ../openal/OpenAL32/alBuffer.c  \ 
        ../openal/OpenAL32/alDatabuffer.c \ 
        ../openal/OpenAL32/alEffect.c  \ 
        ../openal/OpenAL32/alError.c   \ 
        ../openal/OpenAL32/alExtension.c  \ 
        ../openal/OpenAL32/alFilter.c  \ 
        ../openal/OpenAL32/alListener.c  \ 
        ../openal/OpenAL32/alSource.c  \ 
        ../openal/OpenAL32/alState.c   \ 
        ../openal/OpenAL32/alThunk.c   \ 
        ../openal/Alc/ALc.c     \ 
        ../openal/Alc/alcConfig.c   \ 
        ../openal/Alc/alcEcho.c    \ 
        ../openal/Alc/alcModulator.c   \ 
        ../openal/Alc/alcReverb.c   \ 
        ../openal/Alc/alcRing.c    \ 
        ../openal/Alc/alcThread.c   \ 
        ../openal/Alc/ALu.c     \ 
        ../openal/Alc/android.c    \ 
        ../openal/Alc/bs2b.c     \ 
        ../openal/Alc/null.c     \ 

LOCAL_CFLAGS  := -DAL_BUILD_LIBRARY -DAL_ALEXT_PROTOTYPES 
LOCAL_LDLIBS  := -llog -Wl,-s 

LOCAL_STATIC_LIBRARIES := libtremolo 

include $(BUILD_SHARED_LIBRARY) 

######################################################################################################## 

include $(CLEAR_VARS) 

LOCAL_MODULE  := openalwrapper 
LOCAL_ARM_MODE := arm 
LOCAL_PATH  := $(ROOT_PATH) 
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../openal/include $(LOCAL_PATH)/../openal/tremolo 
LOCAL_SRC_FILES := openalwrapper.c        \ 
        org_pielot_openal_OpenAlBridge.c \ 

LOCAL_LDLIBS  := -llog -Wl,-s 

LOCAL_STATIC_LIBRARIES := libtremolo 
LOCAL_SHARED_LIBRARIES := libopenal 

include $(BUILD_SHARED_LIBRARY) 

######################################################################################################## 

и OpenAL Фордер находится на том же уровне с папкой структуры папки JNI:

OpenAL4Android 
    -app 
    --src 
    ---main 
    -----jni 
    -----openal 
    -----java 
    -----jniLibs 
    -----res 
+0

Как выглядит ваш Android.mk? –

ответ

0

Ничего, я начал работать. Я включил его в свой проект.Пришлось использовать экспериментальный плагин gradle, а затем пришлось снова запустить ndk-build, чтобы он сгенерировал библиотеки в папке libs. Сначала у меня появились некоторые ошибки, говорящие, что он не может найти реализацию собственных методов, потому что я думал, что он получит его библиотеки из папки jniLibs.