Androidアプリ開発 Facebook SDK Cannot call getBootClasspath() before setTargetInfo() is called.

2016年05月26日(編集2016年05月26日)
このエントリーをはてなブックマークに追加

Cannot call getBootClasspath() before setTargetInfo() is called.の修正方法を記載した記事です。

環境はAndroid 6.0 (API level 23) です。

環境

  • android sdk 23
  • Build Tools, Revision 23.0.2
  • The Facebook SDK for Android version 3.2.0
  • com.android.tools.build:gradle:1.2.0

事象

androidのcom.android.tools.build:gradleのversionを1.0.0から1.2.0に変更後、gradleビルドで上記のエラーが発生した。

変更前
{project_folder}/build.gradle
dependencies {
    classpath 'com.android.tools.build:gradle:1.0.0'
}
        
変更後
{project_folder}/build.gradle
dependencies {
    -classpath 'com.android.tools.build:gradle:1.0.0'
    +classpath 'com.android.tools.build:gradle:1.2.0'
}
        

エラー原因

libraryで使用していたFacebook SDKのbuild.gradleが1.2.0の記述方法に対応してない。

修正方法

facebookのbuild.gradleファイルを修正します。
classpathの取得方法を以下のように変更します。

変更前
{project_folder}/libraries/facebook/build.gradle
task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
        
変更後
{project_folder}/libraries/facebook/build.gradle
task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    -classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    +ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
    classpath += files(ext.androidJar)
}
        

あとは build → Clean Projectで正常にgradleビルドを実行できます。

まとめ

古いバージョンの外部ライブラリを使用していると、他のライブラリのバージョンアップ時に影響を受ける場合があります。
なるべく全てのライブラリを最新バージョンにするようにしてください。

関連記事

タグ検索で調べてみよう

Android6.0 バグ修正 ライブラリ