2017-02-15 11 views
2

Я пытаюсь сделать приложение на Android Studio, использующее NDK и OpenGL ES 3.0. Когда я #include < GLES3/gl3.h >, IDE имеет автоматическое завершение по мере ввода, я думаю, что это знак, означающий, что IDE может найти его Однако, я получил ошибку: «Ошибка: (22, 10) фатальная ошибка:« GLES3/gl3.h » file not found " при создании проекта. Я проверяю путь NDK в проекте структуры, которая:Ошибка Android Studio NDK, не удалось найти GLES3/gl3.h, хотя он существует

sdk\ndk-bundle\platforms\android-21\arch-arm64\usr\include\GLES3 

это правильно и GLES3/gl3.h существует там.

Я объявил свою CMakeList с GLESv3 уже:

cmake_minimum_required(VERSION 3.4.1) 

# now build app's shared lib 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") 

add_library(gl3jni SHARED 
      gl_code.cpp 
      stb_image.cpp 
      ) 

# add lib dependencies 
target_link_libraries(gl3jni 
         android 
         log 
         EGL 
         GLESv3) 

Заявляю также версию OpenGL ES в Manifest.xml с:

<uses-feature android:glEsVersion="0x00030000" android:required="true"/> 

Что я делаю неправильно?

+0

Вы создаете для андроид-21? –

+0

Как проверить, для какой версии андроида я создаю? Извините за немой вопрос, но я новичок в Android Studio. –

+0

Найдите свой проект для «targetSdkVersion». – yakobom

ответ

1

Android ndk-bundle имеет openglES3 с api 18, но на платформе для рук.

Я имею в виду, если вы собираетесь компилировать ваш проект в armV8_64, необходимо установить мин SDK до 21. Но если вы собираетесь использовать armeabi или armeabiV7 минимальный апи будет 18.

Так изменение ваш minSDK зависит от ваших предпочтений в файле app/build.gradle.

Я предлагаю вам определить API 21 и определить ваши вкусы продукта для поддержки для всех архитектур, кроме того вы можете сделать другое 3rdParty библиотекой Зацепления, код должен быть что-то вроде этого:

android.productFlavors { 
     // for detailed abiFilter descriptions, refer to "Supported ABIs" @ 
     // https://developer.android.com/ndk/guides/abis.html#sa 
     create("arm") { 
      ndk.abiFilters.add("armeabi") 
      ndk.ldFlags.add("-L${file(''your_libraries_path'')}".toString()) 
      ndk.ldLibs.addAll(["your_armeabi_library"]) 
     } 
     create("arm7") { 
      ndk.abiFilters.add("armeabi-v7a") 
      ndk.ldFlags.add("-L${file('your_libraries_path')}".toString()) 
      ndk.ldLibs.addAll(["your_armv7_library"]) 
     } 
     create("arm8") { 
      ndk.abiFilters.add("arm64-v8a") 
      ndk.ldFlags.add("-L${file(''your_libraries_path')}".toString()) 
      ndk.ldLibs.addAll(["your_armv8_library"]) 
     } 
} 

Этого Gradle код из градиента 0.8.3 экспериментального плагина, поэтому, если у вас нет этой версии, вам нужно внести некоторые изменения, чтобы вписаться в вашу версию градиента.

0

Для меня только изменить minSdkVersion в build.gradle до 19.

+0

Пожалуйста, сначала ознакомьтесь с этим, прежде чем отвечать. [Ссылка] (https://stackoverflow.com/help/how-to-answer) –

 Смежные вопросы

  • Нет связанных вопросов^_^