【解決編】cloud-endpointsを使っているとkaptでコンパイルできなかった
cloud-endpointsを使っているとkaptでコンパイルできなかった - visible trueではgoogle-api-clientのjarを直接参照する事で問題を回避しましたが、根本的な原因と対応方法を@yanex_ru氏に教えて頂きました。
@sys1yagi お待たせしました!今kapt-cloud-endpointsを見ますが、google-api-clientはguava-jdk5を利用して、classpathでguava-18の前にguava-jdk5が立ちます pic.twitter.com/2o2wNqFM1r
— Yan Zhulanow (@yanex_ru) 2015, 5月 25
@sys1yagi ですからaptでもQueuesを見つけますが、古いなのでnewArrayDeque()のメソッドがないです。しかし、kaptの前に
provided 'http://t.co/sAcAJjJezJ.guava:guava:18.0'
入れたら良くなるようです
— Yan Zhulanow (@yanex_ru) 2015, 5月 25
という事でbuild.gradleのdependenciesを以下のように書けば解決します。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
provided 'com.google.guava:guava:18.0'
kapt 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.google.dagger:dagger:2.0'
compile project(path: ':backend', configuration: 'android-endpoints')
}
わーい。
ソースはコチラ sys1yagi/kapt-example at kapt-cloud-endpoints · GitHub