delete from hateblo.jp where 1=1;

タイトルに意味はありません。

eclipse から android studioへ

序章

今日の常識は明日の非常識ということで、
Innovation EGG 第一回 で紹介いただいた、"2013年のAndroid入門" by 有山さん の公演を受けて、プロジェクトをandroid studio対応、Gradleにしようと思い立ちました。

勉強会の終わり際に

ほかの方と話されているとき、「既存のプロジェクトを変換するときやAndroid studioバージョンアップを行うときは、プロジェクトを作成して、各種設定内容などでどこが変わったのかを確認しながら進めるとよい」ということを耳にしたので盛大に苦労しながら、プロジェクトの登録をがんばってみた。





発生した問題

何がわるいかわからない
Gradle: Execution failed for task ':*******:processDebugManifest'.
> Manifest merging failed. See console for more info.





結論

AndroidManifest.xmlにuses-sdkの記載があると、コケる。


結論2

ライブラリにAndroidManifest.xmlがあり、Applicationブロックがあると、競合が発生して、次のようなエラーが発生する。
Duplicate files copied in APK AndroidManifest.xml
解決策を探していますが、見つかっていません。
回避策としては対象のライブラリを使用しないという方法しか今のところ(2013/11/24現在)はなさそうです。


いろいろ探ってみる

何かのタスクでエラーになっているんだろうなと、スタートボタンを開いて探っていると、
Gradleという表示があったので、開くと、タスクリストみたいなのが出た。

「processDebugManifest」という項目を発見。
ダブルクリックするとそのタスクを実行できるようで、ログが見れた。





どうやらマニフェストにuses-sdkの記載があると、エラーになる
:*******:processDebugManifest
[AndroidManifest.xml:3, AndroidManifest.xml:3] Main manifest has <uses-sdk android:targetSdkVersion='11'> but library uses targetSdkVersion='16'
:*******:processDebugManifest FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':*******:processDebugManifest'.
> Manifest merging failed. See console for more info.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED
直した場所

AndroidManifest.xmlからuses-sdkタグを削除。
minSdkVersion と targetSdkVersion については、build.gradleに記載。

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }
}

あと、ライブラリとtargetSdkVersionをあわせないと盛大にエラーとなるようだ。
競合が発生したら、もうだめになりそう。