【解決編】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