2018/12/15

Android Studio で "Argument for @NotNull parameter 'message' of ..." が発生するようになってしまった

@Android Studio 3.2.1 on Ubuntu 18.04 LTS

Android Studio を 3.2.1 にしたところ、IDE Fatal Errors が発生するようになってしまいましたAndroid Studio をアップデートするまでは特に問題がなかったプロジェクトです。

具体的には以下のようなエラー。

``` Argument for @NotNull parameter 'message' of com/android/tools/idea/gradle/project/sync/GradleSyncState.syncFailed must not be null java.lang.IllegalArgumentException: Argument for @NotNull parameter 'message' of com/android/tools/idea/gradle/project/sync/GradleSyncState.syncFailed must not be null at com.android.tools.idea.gradle.project.sync.GradleSyncState.$$$reportNull$$$0(GradleSyncState.java) at com.android.tools.idea.gradle.project.sync.GradleSyncState.syncFailed(GradleSyncState.java) at com.android.tools.idea.gradle.project.sync.idea.IdeaSyncPopulateProjectTask.doPopulateProject(IdeaSyncPopulateProjectTask.java:135) at com.android.tools.idea.gradle.project.sync.idea.IdeaSyncPopulateProjectTask.populate(IdeaSyncPopulateProjectTask.java:97) at com.android.tools.idea.gradle.project.sync.idea.IdeaSyncPopulateProjectTask.access$000(IdeaSyncPopulateProjectTask.java:39) at com.android.tools.idea.gradle.project.sync.idea.IdeaSyncPopulateProjectTask$1.run(IdeaSyncPopulateProjectTask.java:86) at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:750) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:157) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:580) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:525) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:85) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:144) at com.intellij.openapi.progress.impl.CoreProgressManager$4.run(CoreProgressManager.java:395) at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:305) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) ```
2018/02/10

Android Studio で Don't remind me again for this project を押してしまった場合の回復方法

Android Studio を使っていると Gradle plugin のアップデートを勧められることがあります。その際、"Don't remind me again for this project" を押してしまうと、2度とこのダイアログが出なくなってしまいます。

2018/02/09

コマンドラインで gradle を実行すると com.android.tools.build:gradle が見つからないエラー

既存の Android プロジェクトを Android Studio 3.0.1 で読み込んだところ、
Android Studio ではビルド出来るのに、コマンドラインでは以下のようなエラーが出るようになってしまいました。

```console
`gutter: false;
$ ./gradlew tasks

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'MyApplication'.
> Could not resolve all files for configuration ':classpath'.
   > Could not find com.android.tools.build:gradle:3.0.1.
     Searched in the following locations:
         https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom
         https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.jar
     Required by:
         project :

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

* Get more help at https://help.gradle.org

BUILD FAILED in 0s
```

2016/12/28

Android Studio でモジュールを削除する方法

Android Studioチェックしたバージョンは 2.2.3 でモジュールを削除しようとする時、
モジュールを右クリックしてコンテキストメニューを探してしまったことが一度くらいあるはず。
ところが、コンテキストメニューには "Delete" という項目はないのです。

では、どう削除するのかというと、"Project Structure..." メニューから削除できます。

File → Project Structure...
Modules で 対象のモジュールを選択し、"Delete" ボタン(マイナスのアイコン) を押す。
知っていれば何てこと無いのだけど、ちょっと直感的ではないです。 > 参考 > - [ide - How to delete a module in Android Studio - Stack Overflow](http://stackoverflow.com/questions/16710290/how-to-delete-a-module-in-android-studio) 参考リンクを見るとわかるように、仕様がどんどん変わっているようなので、そのうちコンテキストメニューに入るかもしれません。
2016/10/21

Android Studio で Update&Restart がうまくいかない時の対処方法

Unity LauncherUbuntu 16.04 LTS に Android Studio を登録してから、"Update&Restart" を押しても Update が行われなくなってしまいました。

Android Studio が終了するものの、その後何も起こらず、手動で起動してもアップデートされていないのです。

で、調べてみたところ、既に報告がありました。

> 参考
>
> [Android Studio: "Update & Restart" doesn't work - Stack Overflow](http://stackoverflow.com/questions/25379665/android-studio-update-restart-doesnt-work)

Android Studio を起動する時に余計なオプションをつけると、うまくいかないようです。

また、`android-studio` のインストールされているディレクトリの書き込み権限がない場合も同じような問題が起こります。
こちらはエラーメッセージにその旨が表示されるのでわかりやすいです。

2016/09/13

インストールしているのに Sources for 'Android API 24 Platform' not found. が出てしまう

@Android Studio 2.1.3

`compiledSdkVersion` を 24 にしたところ、`Sources for 'Android API 24 Platform' not found.` が出るようになってしまいました。
以下のようにソースコードはインストールしているのにも関わらず。

File → Settings → Appearance & Behavior → System Settings → Android SDK
`Refresh` を押してもウンともスンとも言いません。
2016/08/24

Android Studio で Documentation がポップアップされるようになったので修正

> Ubuntu 16.04 LTS  
> Android Studio 2.1.3

Android Studio をクリーンインストールしたら、`Ctrl + Space` するたびCode Completion を表示するたびに `Documentation` なるウィンドウがポップアップするようになってしまいました。
これ、とても鬱陶しいので修正しました。

2016/05/28

"Gradle version x.xx is required" が出たときの対処方法

[Android Studio](https://developer.android.com/studio/index.html) を 2.1.1 にしたら以下のように [Android Gradle Plugin](https://developer.android.com/studio/releases/gradle-plugin.html) のアップデートを促すダイアログが。
2016/01/27

drawable の横にビックリマークが表示されるのはエラーではない

@ Android Studio 1.4

Android Studio で layout を編集していると drawable の横にビックリマーク (Exclamation mark) が表示されることがあります。
結論からいうと、これはエラーではありません。
Android Studio がサムネイルをレンダリング出来なかったために表示されるマークです。
大抵の場合、drawable に XML を指定している場合に表示されるはずです。

このエリアにサムネイル表示される機能は便利ですが、この表示の仕方はちょっと紛らわしいですね。
2016/01/12

Android Studio で Gradle wrapper をアップグレードする方法

Gradle wrapper は便利ですが、 場合によっては新しい機能を使うため等、Gradle のバージョンを上げなければならない時があります。
そんな時に Gradle wrapper で使用している Gradle のバージョンを上げる方法です基本的、ビルドが通っている間は無闇にビルドツールのバージョンを安易に変えるべきではありません

Gradle wrapper を使っていることを確認する

File → Settings → Build, Execution, Deployment → Build Tools → Gradle

Use default gradle wrapper (recommended) が選択されていることを確認します。

Gradle wrapper を更新する

プロジェクトのトップディレクトリで、以下を実行します。
2.8 のところは対象のバージョンに変更してください。

$ ${Android-studio}/gradle/gradle-2.8/bin/gradle wrapper --gradle-version 2.8

Android Studio でさらに更新する

この状態でプロジェクトのトップディレクトリ直下にある build.gradle を開きます。
すると、以下のようなメッセージが出るので、OK, apply suggestion! を押せばオーケーです

You can configure Gradle wrapper to use distribution with sources. It will provide IDE with Gradle API/DSL documentation.


2016/01/11

'defaultConfig' cannot be applied to '(Groovy.lang.Closure)' が出た時の対処方法

Android StudioAndroid Studio ver. 1.5.1 でタイトルのような Warning が出るようになってしまいました。

これは Android Studio を手作業で更新するなどして、指定した gradle のバージョンがインストールされていない場合android-studio ディレクトリ中に存在しない時に起こるようです。

修正方法としては、gradle wrapper を使うのが良さそうです。

File → Settings → Build, Execution, Deployment → Build Tools → Gradle

Use default gradle wrapper (recommended) を選択。

gradle wrapper を使いたくない場合は Use local gradle distribution を選択し、Gradle home のパスを正しく設定しなおしてもオーケーです。

2015/10/10

AndroidStudio で Generate Signed APK を実行したら "Unable to compute hash of ..." と出た場合の対処方法

AndroidStudio で署名した APK を作成しようとしたら以下のようなエラーがでてしまいました AndroidStudio 1.4
compileSdkVersion 23
buildToolsVersion "23.0.1"

2015/09/20

AVD を立ち上げようとしたら libstdc++.so.6 が無いと言われた on Ubuntu 14.04

諸事情で Ubuntu 14.04 LTS (64bit) をクリーンインストールしました。

その後、Android Studio を立ち上げ、普通に使っていたのですが、AVD を起動しようとすると、以下のようなエラーが。

Cannot launch AVD in emulator.
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory


確認してみるも、libstdc++6はちゃんとインストールされている様子。
これ、以前もハマったやつだ!
というわけで、32bit 系のライブラリを用意してやることで解決しました。
$ sudo apt-get install lib32stdc++6

ちょっと古い記事だと「ia32-libs をインストールせよ。」と書いてあるものもあるのですが、Ubuntu 13.10 からはライブラリが分割されたみたいです。
2015/08/31

Android Studio を起動しようとしたら IllegalArgumentException が発生した on Ubuntu

Android Studio を新規にインストールしなおしたら以下のようなエラーが出て、起動しなくなってしまいました。

Internal error. Please report to https://code.google.com/p/android/issues

java.lang.RuntimeException: java.lang.IllegalArgumentException: Argument for @NotNull parameter 'name' of com/android/tools/idea/welcome/Platform.<init> must not be null
    at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:178)
    at com.intellij.idea.MainImpl$1$1$1.run(MainImpl.java:52)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:362)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.IllegalArgumentException: Argument for @NotNull parameter 'name' of com/android/tools/idea/welcome/Platform.<init> must not be null
    at com.android.tools.idea.welcome.Platform.<init>(Platform.java)
    at com.android.tools.idea.welcome.Platform.getLatestPlatform(Platform.java:72)
    at com.android.tools.idea.welcome.Platform.createSubtree(Platform.java:89)
    at com.android.tools.idea.welcome.InstallComponentsPath.createComponentTree(InstallComponentsPath.java:81)
    at com.android.tools.idea.welcome.InstallComponentsPath.init(InstallComponentsPath.java:215)
    at com.android.tools.idea.wizard.DynamicWizardPath.attachToWizard(DynamicWizardPath.java:97)
    at com.android.tools.idea.wizard.DynamicWizard.addPath(DynamicWizard.java:233)
    at com.android.tools.idea.welcome.FirstRunWizard.init(FirstRunWizard.java:75)
    at com.android.tools.idea.welcome.FirstRunWizardHost.setupWizard(FirstRunWizardHost.java:100)
    at com.android.tools.idea.welcome.FirstRunWizardHost.getWelcomePanel(FirstRunWizardHost.java:92)
    at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame.<init>(WelcomeFrame.java:68)
    at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame.showNow(WelcomeFrame.java:173)
    at com.intellij.idea.IdeaApplication$IdeStarter.main(IdeaApplication.java:302)
    at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:172)
    ... 16 more

修正方法

「困ったな」と思って探してみると、既知の問題だったようで、すでに答えが出ていました。

というわけで、idea.properties に以下の一行を加えればOKです。

android-studio/bin/idea.properties
disable.android.first.run=true

2015/07/24

Android Studio で "Invalid Gradle JDK configuration found." が出た時の対処法

久しぶりにサブのノートPCで Androidアプリ開発をしようとしたら、以下のようなエラーが出てしまいました。
Invalid Gradle JDK configuration found. Open Gradle Settings
Platform SDK does not point to valid JDK (C:\Program Files\Java\jdk1.8.0_20)

原因

「そういえば、Java をアップデートしたような気もする」と思って 確認してみると、Java がインストールされているディレクトリは C:\Program Files\Java\jdk1.8.0_45 になっていましたバージョンは同じ1.8.0だけど、アップデートが違う

修正方法

JDK のディレクトリ指定を更新すれば良いはずなので、Project Structure を開きます。

File → Project Structure...


SDK Location の中に JDK Location という項目があるので、そこを修正します。

デフォルト設定も変更しておく

先の方法だと、開いているプロジェクトの設定だけ修正されるので、デフォルト設定も変えておくと良いでしょう。

File → Other Settings → Default Project Structure...

知っていれば何てことは無い問題ですが、実際起こると「あれ、設定ってどこで出来るんだっけ?」ってなりますね。
特に今回、エラーメッセージの Open Gradle Settings をクリックすると全然違う設定画面が出てしまったAndroid Studio 1.2.2 での動作ので、ちょっと戸惑いました。

2015/06/26

productFlavors で Dependencies を切り替える

2015/06/25

productFlavors で src ディレクトリ以下を切り替える

ProductFlavors を使って Free version と Pro version を作り分ける (Android Studio)

AndroidStudio には apk を出し分ける機能がついています。
ProductFlavors という機能で、 典型的な使い方は、Free version と Pro version を出すという場合でしょう最近はアプリ内課金で広告の有り無しを切り替えることが多いと思うので、需要は高くないかもしれません。

2015/05/02

Android Studio で Warning や Error の一覧を表示する

Android SDK を更新したら Warning が増えてしまいました。
問題になりそうなところを教えてくれるのは良いのですが、修正するには一覧で確認したいもの。
というわけで、一覧表示する方法を調べました。

Analyze → Inspect Code...

対象の範囲を選びます。

Analyze が終了すると、左下に Inspection というウィンドウが作成され、一覧が表示されます。

左のボタンで表示を切り替え可能なので、使いやすいようにカスタマイズします。
お勧めは、赤と黄色のボタン、"Group Inspections By Severity" です。
以下のように Error, Warning, Typo で分類してくれます。

2014/07/22

compileSdkVersion を 'android-L' にすると INSTALL_FAILED_OLDER_SDK が発生する

Android Studio を 0.8.1 にして New Project を作成すると、app/build.gradle は以下のようになっています。

app/build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 'android-L'
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.kokufu.test"
        minSdkVersion 8
        targetSdkVersion 'L'
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
// 以下略

これ、そのままコンパイルすると、以下のようなエラーが発生してしまいます。
pkg: /data/local/tmp/com.kokufu.test
Failure [INSTALL_FAILED_OLDER_SDK]

もちろん、Android L (API 20, L preview) はインストールしてあります。

で、検索してみたところ、やっぱりバグみたいです。

というわけで、compileSdkVersion を 20 にしてやるとうまくコンパイル出来るようになりました。

app/build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.kokufu.test"
        minSdkVersion 8
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
// 以下略