AndroidStudio

Android Studioのエラー備忘録

Error:Cannot get property 'cd' on null object

とあるソースをビルドすると以下のエラーメッセージが出てきた。

Error:Cannot get property 'cd' on null object

Consult IDE log for more details (Help | Show Log)

cdと言う null オブジェクトがあると言われている。

原因

原因は凡ミス。
cdを削除する事で修正

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.google.android.gms:play-services:9.8.0'
    testCompile 'junit:junit:4.12'
}cd     // ← ここ

DexArchiveMergerException: Unable to merge dex

とあるソースをビルドすると以下のエラーメッセージが出てきた。

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

よくわからなかったので詳細を得る為にコンパイルオプションに--stacktrace を付けてビルドし直す。
コンパイルオプションは File -> Setting -> Build, Execution, Deployment -> CompireにあるCommand-line Optionsに記載する。

compiler-options.PNG

以下のエラーに変わった。

Information:Gradle tasks [:app:assembleDebug]
Error:java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

原因

原因はメソッド数が65k(65536)を超えた為に起きたエラーの様だ。
DexIndexOverflowExceptionをググると以下の情報が出てきたので参考にする。

http://hanyou.mss-g.mobi/wiki/doku.php?id=dexindexoverflowexception_%E9%80%9A%E7%A7%B065k%E5%95%8F%E9%A1%8C_%E3%81%AE%E5%AF%BE%E5%BF%9C

いくつか解決方法があるようだが build.gradle(Module: app) の android {}multiDexEnabled true を追加する事で解決した。

android {

    // Enabling multidex support.
    multiDexEnabled true
}

Error:Minimum supported Gradle version is...

とあるソースをビルドすると以下のエラーメッセージが出てきた。

Error:Minimum supported Gradle version is 4.1. Current version is 2.14.1. If using the gradle wrapper, 
try editing the distributionUrl in C:\AndroidApp\gradle\wrapper\gradle-wrapper.properties to gradle-4.1-all.zip

Consult IDE log for more details (Help | Show Log)

gradle-wrapper.properties(gradle Version) の distributionUrl を以下のように変更する。

変更前
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

変更後
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

変更後にProjectを再起動する。