42

使用 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。

谁能告诉我如何解决这个警告,因为我认为这可能会导致问题。

4

3 回答 3

60

您似乎正在使用 Android-9 作为运行时。您可以放入APP_PLATFORM := android-8您的Application.mk文件,警告将消失。

于 2013-04-08T20:07:38.893 回答
13

警告/错误背后的原因是它想让您知道它正在为高于清单中指定的“最小”的目标平台编译本机代码。它基本上是在说'小心使用旧操作系统不支持的功能。Application.mk 更改是可以的,并且不应该对编译的代码产生任何真正的不利影响。

~~ 替代解决方案。

对于 r8,您可以更改构建设置以将其视为警告而不是错误。这在 r8 中有效,但在 r9 中只是部分修复。

对于 NDK rev r9(也适用于其他版本,但位置/行号可能不同)

${NDK}/build/core/add-application.mk 第 138 行

在行首添加“#”。

# $(call __ndk_info,WARNING: APP_PLATFORM $(APP_PLATFORM) is greater than android:minSdkVersion $(APP_MIN_PLATFORM_LEVEL) in $(APP_MANIFEST))

一个字符,30 秒修复……去调试原生代码。

于 2013-09-15T07:53:33.040 回答
1

如果您确实想为比 minSdkVersion 更新的版本编译本机库,您只需配置 Eclipse 以将错误更改为警告。如果您知道您的 Java 代码不会在旧版本的 Android 中加载本机库,这将很有用。(警告:如果您不保证这一点,那么在比您的 APP_PLATFORM 中指定的版本更早的 Android 版本上加载您的本机库可能会失败并在存在不满意的动态库链接时使应用程序崩溃 - 例如,如果您的 APP_PLATFORM 为 9 并且您使用OpenSLES,如果您尝试在 Android 2.2 或更早版本上使用 JNI,这将失败。但只要您的 Java 端知道这一点并确保在旧版本上永远不会调用 loadLibrary,那么您就可以了。)

您可以按照以下步骤更改 Eclipse 设置,这些步骤由 Google 的某个人提供(在此链接上)(但也请参阅下面的重要说明):

在日食中:

- 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

重要的!谷歌人没有注意到的是,您还需要使用设置中的“上移”按钮将新规则移到顶部,否则其他一些更通用的规则会掩盖它并且它不起作用。

于 2014-01-07T15:22:05.063 回答