TakWolf 's Blog

Anima Game Code Repeat

TakWolf's avatar TakWolf

Android 的 support-v4 扩展库的 minSdkVersion=9 !是笔误还是故意为之?

今天更新了 Android Support Repository,相应的 android-support-v4 也升级到了 24.2.1
但是我的项目却报了如下的错误:

1
2
3
Error:Execution failed for task ':fragmentswitcher:processDebugAndroidTestManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 4 cannot be smaller than version 9 declared in library [com.android.support:support-v4:24.2.1] ~\Android-FragmentSwitcher\fragmentswitcher\build\intermediates\exploded-aar\com.android.support\support-v4\24.2.1\AndroidManifest.xml
Suggestion: use tools:overrideLibrary="android.support.v4" to force usage

这个错误的意思是,你的项目的 minSdkVersion=4,而 android-support-v4 要求他至少为9

看到这个错误,我其实是一脸懵逼的。

Android Support Repository 包含了很多库,很多都是按照 vX 结尾的,这个其实表示这个库的 API 兼容到的最低版本。
举个例子:
cardview-v7,兼容到 API7
support-v13,兼容到 API13
也就是说,support v4 的意思就是,把一些兼容性组件,兼容到 API4 的级别上。

那么,你把 minSdkVersion 设置为9,那还叫啥 v4 啊?

心塞。。。

Android Support Repository 是安装到本地的
位置在:%ANDROID_SDK_HOME%/sdk/extras/android/m2repository/com/android/support

我们找到:support-v4/24.2.1/support-v4-24.2.1.arr
解包后打开里面的 AndroidManifest.xml,内容是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="android.support.v4" >
<uses-sdk
android:minSdkVersion="9"
tools:overrideLibrary="android.support.v4" />
<application />
</manifest>

minSdkVersion 确实被设置为9了。不清楚是笔误还是故意为之。
当然,解决方案错误提示中也给出了,要么把你的项目的 minSdkVersion 设置大于9,
要把使用 tools:overrideLibrary="android.support.v4" 让编译器忽略。

2016-10-22日补充:

android-support-v4 已经升级到25了,这个问题依旧存在。

This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接: http://blog.takwolf.com/2016/09/14/android-support-v4-but-need-v9/