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

android-support-v7-appcompat\res\values-v21会破坏项目,除非我将项目构建目标设置为API21,android,android-ndk,Android,Android Ndk,我在研究它是否与我有关,但不幸的是,它与我无关。我希望这对你们中的一些人是相关的,并且你们可以提供帮助 我需要在Eclipse中将我的项目构建目标设置为小于API21。API21是Android5.x,其主要变化导致本机代码不兼容。请看。我无法将API21作为使用本机代码的项目的目标,即使这只是导入我在并行项目(使用API16)中创建的.so库 我不认为我真的需要appcompat,但我在很久以前就决定了,那时比较容易。我当然不需要API21,所以可能需要删除res/values-v21。忘记只

我在研究它是否与我有关,但不幸的是,它与我无关。我希望这对你们中的一些人是相关的,并且你们可以提供帮助

我需要在Eclipse中将我的项目构建目标设置为小于API21。API21是Android5.x,其主要变化导致本机代码不兼容。请看。我无法将API21作为使用本机代码的项目的目标,即使这只是导入我在并行项目(使用API16)中创建的
.so

我不认为我真的需要appcompat,但我在很久以前就决定了,那时比较容易。我当然不需要API21,所以可能需要删除
res/values-v21
。忘记只删除
res/values-v21
,我已经进一步检查了日志,
v14
v17
都违反了规则,尽管Eclipse在控制台中没有突出显示为红色标志-包资源管理器是干净的,文件视图也是干净的。除了
.xml
错误导致我的
R.java
无法生成之外。否则,我必须回到API21及其android-support-v7-appcompat存在之前的SDK工具

要重复链接内容,如果我使用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手机上,尽管没有在任何模拟器上,甚至在4.1.2(API16)上

我不使用API21,它拒绝构建

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


在搞乱了android-support-v4之后,我将appcompat作为导入项目删除(cocos2dx v3.2中不存在appcompat),并将所有android-support-v4重置为其早期版本,v4也是如此

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

修复它的方法是在
Application.mk
中设置
APP\u平台:=android-14
,将其设置为构建,然后去洗澡。在我的API16手机上进行了20分钟的构建(双ABI,旧core-i5)后,它也工作得很好。将进行更多测试,并在我失去任何兼容性的情况下进行更新

更新
我已经从2.3.6到5.0.2进行了测试,在设置了
APP_PLATFORM:=android-14
之后,没有出现任何问题。奇怪的是,这样一个任意的修复程序可以正常工作,但我猜默认情况下必须使用5.0.2特定的二进制文件。我想知道这一行是否是修复方法,因为在更新
Android.mk
并重建之前,我只尝试过几次这种精确的构建。我没有时间回去删除它只是为了重复,所以我接受我自己的答案。

是-正确的做法是只降低本机部件的构建目标(通过在
Application.mk
中设置
APP\u PLATFORM
-理想情况下,将其设置为您可以/需要的最低版本),同时保持java的API目标为最新版本。使用较新的目标API构建的Java代码在较旧版本上运行时不会自动中断(仅在您有意使用新API的情况下,appcompat工具会处理这些情况)。只有本机代码存在这样的问题:使用较新的目标API构建的libs最终需要的正是该版本。