在使用cygwin编译cocos2d-x项目时,我收到以下警告。
`/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。我的AndroidManifest.xml中的最小SDK版本是8,但我没有在任何地方指定APP_PLATFORM作为android-9。我怎样才能将其更改为8。
任何人都可以告诉我如何解决此警告,因为我认为这可能会导致问题。
答案 0 :(得分:60)
您似乎正在使用Android-9作为运行时。您可以将APP_PLATFORM := android-8
放入Application.mk
文件中,警告也会消失。
答案 1 :(得分:13)
警告/错误背后的原因是它想让你知道它正在编译目标平台的本机代码,而不是清单中的“最小”。它基本上是说'小心使用旧操作系统不支持的功能。 Application.mk的更改是可以的,不应该对编译的代码产生任何实际的不利影响。
~~ 替代解决方案。
对于r8,您可以更改构建设置,将其视为警告而非错误。这在r8中有效,但只是r9中的部分修复。
对于NDK rev r9(也适用于其他转速,但位置/线#可能不同)
$ {NDK} /build/core/add-application.mk第138行
在行的开头添加“#”。
#$(调用__ndk_info,警告:APP_PLATFORM $(APP_PLATFORM)大于android:minSdkVersion $(APP_MIN_PLATFORM_LEVEL)$(APP_MANIFEST))
一个字符,30秒修复...去调试本机代码。
答案 2 :(得分:1)
如果您确实希望将本机库编译为比minSdkVersion更新的版本,则可以配置Eclipse以将错误更改为警告。如果您知道Java代码不会在旧版本的Android中加载本机库,那么这将非常有用。 (警告:如果您不保证这一点,那么在早于APP_PLATFORM中指定的Android版本上加载您的本机库可能会失败并且如果存在不满意的动态库链接则会导致应用程序崩溃 - 例如,如果您的APP_PLATFORM为9并且您使用了OpenSLES,如果您尝试在Android 2.2或更早版本上使用JNI,这将失败。但只要您的Java端知道这一点并确保在旧版本上永远不会调用loadLibrary,那么您没问题。)
您可以按照Google上某人(this link)提供的这些步骤更改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家伙没有注意到的是,您还需要使用设置中的“上移”按钮将新规则移至顶部,否则其他一些更通用规则掩盖了它,它不起作用。