18

我在 Eclipse-android 中构建 ac 项目并收到以下错误:

这是一个 ndk 构建错误(独立于我的代码)

/Users/eladb/MyWorkspace/android-ndk-r8e/build/gmsl/__gmsl:512: *** non-numeric second argument to 'wordlist' function: ''. Stop.

试过了

android-ndk-r8b

android-ndk-r8e

我怎样才能解决这个问题?

4

6 回答 6

27

这是一个已知问题,因为r8d NDK没有android:minSdkVersionAndroidManifest.xml.

要解决该问题,请将文件 /android-ndk-r8d/build/gmsl/__gmsl 的第 512 行更改为:

int_encode = $(__gmsl_tr1)$(wordlist 1,$(words $1),$(__gmsl_input_int))
于 2013-07-11T10:25:20.077 回答
12

在您的 AndroidManifest 中,添加以下行:

<uses-sdk android:minSdkVersion="3" />

这解决了我的问题。通常在导入下载的项目时会出现这种情况,因为新生成的项目没有这种错误。

有关信息,此问题也可以从命令行重现。

于 2013-07-11T08:33:36.837 回答
1

尝试将文件回车控制 (\r\n) 更改为 linux 格式 (\n) 为了解决这个问题,我在 vi 中编辑了文件并执行了“set filetype=unix”

于 2013-12-16T15:18:02.317 回答
1

看起来 ndk-build 中的 XML 解析代码对空格很敏感(从 r8e 开始)。当我的清单中有以下行时,我收到了这个错误:

<uses-sdk android:minSdkVersion ="10" android:targetSdkVersion="11" />

当我用以下行替换它时,问题就消失了,删除了 minSdkVersion 和 = 符号之间的空格:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="11" />

啊。

您是否应该修补 ndk(如已接受的答案中所述)或在应用程序端进行变通,这是值得商榷的。我选择了解决方法,因为我在一个需要构建多个不同环境的团队中工作,包括共享 CI 服务器,并且我不想为每个环境和每个新开发人员修补 ndk。如果您独自工作,接受的答案可能更合适,因为它也将在您未来的项目中得到修复。

于 2013-10-16T21:32:09.133 回答
0

将您的 NDK 更新为 r15b 或更高版本。对我来说它的工作。

于 2017-06-30T08:43:34.383 回答
0

刚刚遇到同样的问题

“....android-ndk-r12b/build/gmsl/__gmsl:512: *** 'wordlist' 函数的非数字第二个参数:'18e'。停止。”

如果你得到这个 18e,那么 e 可以是任何东西,这是因为在 Application.mk 中你向 APP_PLATFORM 添加了一个字母

“APP_PLATFORM := android-18e” 它应该是“APP_PLATFORM := android-18”

最后没有字母,这解决了我不知道何时以及如何添加它的错误类型,因为我已经好几个星期没有打开这个文件了,奇怪!

于 2016-10-31T15:31:13.223 回答