ROLI JUCE Android CMake Ошибка, сгенерированное пустое демонстрационное приложение не может скомпилироваться в Android Studio - PullRequest
0 голосов
/ 14 ноября 2018

Скачав Projucer, я сгенерировал пустое приложение, экспортировал его в Android (в режиме отладки) и открыл в Android studio.После исправления ошибок, связанных с версиями SDK и NDK (я обновил ссылки для сборки самой последней версией), код не может быть собран на этапе CMake со следующим выводом ошибки:

Build command failed.
Error while executing process /Users/user/Library/Android/sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /Users/user/Documents/Blank/Builds/Android/app/.externalNativeBuild/cmake/debug_Debug/x86 --target juce_jni}
[1/16] Building C object CMakeFiles/cpufeatures.dir/Users/user/Library/Android/sdk/ndk-bundle/sources/android/cpufeatures/cpu-features.c.o
[2/16] Linking C static library libcpufeatures.a
[3/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_audio_basics.cpp.o
[4/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_audio_devices.cpp.o
[5/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_audio_formats.cpp.o
[6/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_audio_processors.cpp.o
[7/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_core.cpp.o
[8/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_cryptography.cpp.o
[9/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_data_structures.cpp.o
[10/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_events.cpp.o
[11/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_graphics.cpp.o
[12/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_gui_basics.cpp.o
[13/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_gui_extra.cpp.o
[14/16] Building CXX object CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_opengl.cpp.o
FAILED: /Users/user/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++  --target=i686-none-linux-android28 --gcc-toolchain=/Users/user/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64  -DDEBUG=1 -DJUCER_ANDROIDSTUDIO_7F0E4A25=1 -DJUCE_ANDROID=1 -DJUCE_ANDROID_ACTIVITY_CLASSNAME=com_yourcompany_blank_Blank -DJUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/yourcompany/blank/Blank\" -DJUCE_ANDROID_API_VERSION=10 -DJUCE_ANDROID_SHARING_CONTENT_PROVIDER_CLASSNAME=com_yourcompany_blank_SharingContentProvider -DJUCE_ANDROID_SHARING_CONTENT_PROVIDER_CLASSPATH=\"com/yourcompany/blank/SharingContentProvider\" -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -DJUCE_PUSH_NOTIFICATIONS=1 -D_DEBUG=1 -Djuce_jni_EXPORTS -I../../../../../../../JuceLibraryCode -I/Users/user/Downloads/JUCE/modules -I/Users/molly/Library/Android/sdk/ndk-bundle/sources/android/cpufeatures --sysroot /Users/user/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -stdlib=libc++ -std=c++11 -fexceptions -frtti -fsigned-char -std=c++14 -O0 -fno-limit-debug-info -O0 -fPIC -MD -MT CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_opengl.cpp.o -MF CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_opengl.cpp.o.d -o CMakeFiles/juce_jni.dir/Users/user/Documents/Blank/JuceLibraryCode/include_juce_opengl.cpp.o -c /Users/user/Documents/Blank/JuceLibraryCode/include_juce_opengl.cpp
In file included from /Users/user/Documents/Blank/JuceLibraryCode/include_juce_opengl.cpp:9:
/Users/user/Downloads/JUCE/modules/juce_opengl/juce_opengl.cpp:118:26: error: no member named 'glDrawBuffer' in the global namespace; did you mean simply 'glDrawBuffer'?
 JUCE_GL_BASE_FUNCTIONS (JUCE_DECLARE_GL_FUNCTION)
 ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/Downloads/JUCE/modules/juce_opengl/native/juce_OpenGLExtensions.h:69:5: note: expanded from macro 'JUCE_GL_BASE_FUNCTIONS'
    USE_FUNCTION (glDrawBuffer,            void, (GLsizei p1, const GLenum* p2), (p1, p2))
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user/Downloads/JUCE/modules/juce_opengl/juce_opengl.cpp:116:72: note: expanded from macro 'JUCE_DECLARE_GL_FUNCTION'
    returnType OpenGLExtensionFunctions::name params noexcept { return ::name callparams; }
                                                                       ^~
/Users/user/Downloads/JUCE/modules/juce_opengl/juce_opengl.cpp:118:2: note: 'glDrawBuffer' declared here
 JUCE_GL_BASE_FUNCTIONS (JUCE_DECLARE_GL_FUNCTION)
 ^
/Users/user/Downloads/JUCE/modules/juce_opengl/native/juce_OpenGLExtensions.h:69:19: note: expanded from macro 'JUCE_GL_BASE_FUNCTIONS'
    USE_FUNCTION (glDrawBuffer,            void, (GLsizei p1, const GLenum* p2), (p1, p2))
                  ^
1 error generated.
ninja: build stopped: subcommand failed.

Я попытался переустановить Projucer, запустить разные версии Android Studio и создать разные демонстрационные проекты, но все они терпят неудачу в одной точке.При создании файла XCode на том же компьютере (macOS) и той же загрузке Projucer код компилируется и запускается на эмулированной iOS.

Я пропустил какую-то библиотеку или где-то неверный путь к файлу?

Файл, который выдает ошибку, взят из их собственной библиотеки, поэтому я не уверен, что может быть причиной проблемы, любая помощь будет принята с благодарностью!

Ошибка происходит конкретно в строке USE_FUCNTION (glDrawBuffer ...) так как я пытался переместить эту строку кода в файл библиотеки, и ошибка перемещается вместе с ним (она находится в конце блока кода, поэтому я хотел посмотреть, был ли этот блок кода сбой, но этопохоже именно на эту строчку)

1 Ответ

0 голосов
/ 22 ноября 2018

Установите для «Minimum SDK Version» в экспортере Android значение, подобное 24, вместо значения по умолчанию, равного 10.

Текущее значение по умолчанию немного низкое и будет увеличено до 28 в следующем выпуске JUCE.

...