android-support-v7-appcompat\res\values-v21 中断项目,除非我将项目构建目标设置为 API21

android-support-v7-appcompat\res\values-v21 breaks project unless I set Project Build Target to API21

我正在研究 appcompat-v7:21.0.0': No resource found that matches the given name: attr 'android:actionModeShareDrawable' 看看它是否与我有任何关系,但不幸的是没有。我希望这对你们中的一些人有用,你们可能会有所帮助。

我需要在 Eclipse 中将我的项目构建目标设置为小于 API21。 API21 是 Android 5.x 并且有重大变化导致本机代码不兼容。请参阅 Cannot load library: reloc_library[1285]: cannot locate 'rand'。我无法将 API21 用于具有本机代码的项目,即使这只是导入我在并行项目(使用 API16)中创建的 .so 库。

我不认为我真的需要 appcompat,但我很久以前就决定了,当时它更容易。 我当然不需要 API21,所以可能只需要删除 res/values-v21 忘了只删除 res/values-v21,我已经 re-checked 在日志的后面并且 v14v17 都违反了,尽管 Eclipse 没有在控制台以外的任何地方突出显示为红旗 - Package Explorer 是干净的,文件视图也是如此。除了 .xml 错误导致我的 R.java 无法构建。否则我必须回到 API21 之前的 SDK 工具及其 android-support-v7-appcompat.

要重复链接的内容,如果我使用 API21,我会得到:

01-20 11:42:16.440: E/AndroidRuntime(29173): FATAL EXCEPTION: main
01-20 11:42:16.440: E/AndroidRuntime(29173): java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1322]:   124 cannot locate 'rand'...
01-20 11:42:16.440: E/AndroidRuntime(29173):    at java.lang.Runtime.loadLibrary(Runtime.java:370)
01-20 11:42:16.440: E/AndroidRuntime(29173):    at java.lang.System.loadLibrary(System.java:535)
01-20 11:42:16.440: E/AndroidRuntime(29173):    at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:85)
01-20 11:42:16.440: E/AndroidRuntime(29173):    at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:99)

在我的 4.1.2 phone 上,虽然不是在任何模拟器上,甚至是 4.1.2 (API16) 一个。

而且我不使用它拒绝构建的 API21。

EDIT 我将尝试打破对 android-support-v4 的依赖,因为我记得必须在几个地方更新它,一旦超出以下搜索路径,我似乎有 4 个不同的版本:

在弄乱 android-support-v4 之后,我将 appcompat 作为导入项目删除(cocos2dx v3.2 不存在)并将所有 android-support-v4 重置为他们的早期版本,v4 也一样。

这仍然没有用,但也没有破坏东西 - 它仍然可以在模拟器(API21 和 API16)上运行,但不能在 phone (API16) 上运行。它也可能是一个较小的 apk。

解决它的方法是在 Application.mk 中设置 APP_PLATFORM := android-14 将其设置为构建,然后去洗澡。在我的 API16 phone 上构建 20 分钟(双 ABI,旧的 core-i5)后它工作得很好。万一我失去了任何兼容性,将进行更多测试和更新。

更新 我已经从 2.3.6 测试到 5.0.2,在设置 APP_PLATFORM := android-14 之后没有问题,这样的任意修复可以工作,但我猜默认一定是使用 5.0.2 特定的二进制文件。我想知道这一行是否是修复,因为在更新 Android.mk 和重建之前我只尝试了几次这个确切的构建。我没有时间回去删除它只是为了重复,所以我接受我自己的回答。