Подтвердить что ты не робот

Android NDK: ПРЕДУПРЕЖДЕНИЕ: APP_PLATFORM андроид-9 больше, чем андроид: minSdkVersion 8

Я получаю следующее предупреждение при компиляции моего проекта cocos2d-x с cygwin.

`/cygdrive/e/project/MyGame/proj.android `
/cygdrive/e/android-ndk-r8e/build/core/add-application.mk:128: Android NDK: WARNING:APP_PLATFORM android-9 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml

Я использую версию NDK r8e. Моя минимальная версия SDK - 8 в моем AndroidManifest.xml, но я не указываю APP_PLATFORM как android-9 в любом месте. Как я могу изменить это на 8.

Может ли кто-нибудь сказать мне, как решить это предупреждение, поскольку я думаю, что это может вызвать проблемы.

4b9b3361

Ответ 1

Кажется, вы используете Android-9 в качестве среды исполнения. Вы можете поместить APP_PLATFORM := android-8 в свой Application.mk файл, и предупреждение исчезнет.

Ответ 2

Причина предупреждения/ошибки заключается в том, что он хочет сообщить вам, что он компилирует собственный код для целевой платформы выше, чем ваш "минимальный", выраженный в манифесте. В основном это говорит: "Будьте осторожны с использованием функций, не поддерживаемых на более старой ОС. Изменение Application.mk в порядке и не должно иметь никаких реальных негативных последствий для скомпилированного кода.

~~ Альтернативные решения.

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

Для NDK rev r9 (работает и в других оборотах, но местоположение/строка # может отличаться)

${NDK}/build/core/add-application.mk строка 138

добавить "#" в начале строки.

# $(вызов __ndk_info, ПРЕДУПРЕЖДЕНИЕ: APP_PLATFORM $(APP_PLATFORM) больше, чем андроид: minSdkVersion $(APP_MIN_PLATFORM_LEVEL) в $(APP_MANIFEST))

Один символ, 30 секунд исправить... пойти отладить собственный код.

Ответ 3

Если вы хотите скомпилировать свою собственную библиотеку для более новой версии, чем ваша minSdkVersion, вы можете просто настроить Eclipse для изменения ошибки до предупреждения. Это может быть полезно, если вы знаете, что ваш Java-код НЕ загружает родную библиотеку в более ранних версиях Android. (Предупреждение: если вы этого не гарантируете, то загрузка вашей родной библиотеки в версиях Android старше, чем указано в вашей APP_PLATFORM, может завершиться сбоем и сбой приложения, если есть неудовлетворенные ссылки динамической библиотеки - например, если ваша APP_PLATFORM равна 9, и вы используете OpenSLES, это не сработает, если вы попытаетесь использовать JNI на Android 2.2 или ранее. Но пока ваша сторона Java знает об этом и гарантирует, что loadLibrary никогда не вызывается в более старых версиях, тогда вы в порядке.)

Вы можете изменить настройки Eclipse, выполнив следующие шаги, предоставленные кем-то из Google (эта ссылка) (но также, см. мой ВАЖНОЕ примечание ниже):

В eclipse:

- Window -> Preferences -> C/C++ -> Build -> Settings
- Select CDT GNU C/C++ Error Parser
- In the Error Parser options at the bottom, add a new entry with the following contents:

Severity: Warning
Pattern: (.*?):(\d+): Android NDK: WARNING:(.*) 
File: $1
Line: $2
Description: $3

ВАЖНО! Что парень Google не заметил, так это то, что вам также нужно использовать кнопку "Вверх" в настройках, чтобы переместить новое правило на верх, потому что в противном случае некоторые другие более общие правила затмевают его, и он не работает.