Android Studioがついにベータになりました。
Android L preview, Android 4.4Wなどのリリースに合わせてSDK周りも多数バージョンアップされていますが、これを反映すると、どうやらsupport-v4ライブラリを使っているプロジェクトでエラーが発生することがあるようです。
(おそらく、support-v4に依存したライブラリを含んでいるプロジェクト)
以下は、問題の内容と解決策(一部)です。
エラー内容
エラー1
Error:Module version com.android.support:support-v13:19.1.0 depends on libraries but is not a library itself
エラー2
Error:The project is using an unsupported version of the Android Gradle plug-in (0.11.2)
<a href="fixGradleElements">Fix plug-in version and re-import project</a>
エラー3
Error:Execution failed for task ':app:processDevDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version L declared in library com.android.support:support-v4:21.0.0-rc1
エラー4
Execution failed for task ':app:processDgateDebugManifest'.
> Manifest merger failed : Attribute manifest@package value=(com.xxxx) from AndroidManifest.xml:3:5
is also present at com.android.support:support-v4:20.0.0:15:70 value=(android.support.v4)
Suggestion: add 'tools:replace="package"' to <manifest> element at AndroidManifest.xml:2:1 to override
(参考)環境
- OS X 10.9
- Android Studio 0.8.1
- Android SDK Tools r23
- Android SDK Platform-tools r20
- Android SDK Build-tools r19.1
- Android Support Repository r6
- Android Support Library r20
- Android Gradle Plugin 0.11.+
- Gradle 1.10
(参考)設定
dependencies
部分の抜粋です。
dependencies {
compile 'com.android.support:support-v13:19.+'
compile 'com.github.ksoichiro:richbuttons:0.1.1@aar'
compile 'com.mcxiaoke.viewpagerindicator:library:2.4.1'
dgateCompile 'com.deploygate:sdk:3.1'
}
解決策
Stack OverflowやGoogle Groupでも、以下のような情報がここ数日分でいくつも見つかります。
Manifest merger failed : uses-sdk:minSdkVersion 14
最終的に、こちらに書かれている方法+αで解決しました。
http://stackoverflow.com/a/24445639
support-v13アップデート
1つ目のエラーの解決策です。
19.1.+
から20.+
にアップデートしました。
Android Gradle Plugin&Gradleのアップデート
2つ目のエラーの解決策です。
- Pluginを
0.11.+
から0.12.+
に変更しました。 - Gradleは
1.10
から1.12
にアップデートしました。
maven-metadata.xmlの修正
3つ目のエラーの解決策です。
あまりやりたくない方法ではありますが、
Support Libraryのmaven-metadata.xml
を編集し、以下のようにversion 21.0.0-rc1の部分をコメントアウトします。
(場所は$ANDROID_HOME/extras/android/m2repository/com/android/support/support-v4
)
<!--<version>21.0.0-rc1</version>-->
上記のプロジェクトではsupport-v4を直接使ってはいませんが、間接的に使っている(依存している)ライブラリが入っていたためと思われます。
どうしても解決しなかった問題...
4つ目のエラーはどうしても解決できませんでした。
上記のプロジェクトでは、あるProductFlavorにAndroidManifest.xmlを分けて配置していたのですが、こreが原因のようです。
エラーメッセージ中にSuggestion
とある内容に従い、tools:replace="package"
を<manifest>
タグに追加してみましたがダメでした。
以下が同じ問題と思われます。
tools:replace="package" deadlock. Strange behaviour
ここで触れられていたuseOldManifestMerger true
の設定もうまくいかず(さらにエラーが多数発生)。
バグ修正をレビューに出すとのことなので、反映を待つしかなさそうです。
上記のAndroidManifest.xmlは、DeployGate用のビルドでパーミッションを追加するために用意していたものだったので、一時的にAndroidManifest.xmlを削除することにしました。
(削除するとエラーは消えましたが、とても解決とは言えないですね。。。)