Help us understand the problem. What is going on with this article?

AndroidStudioがおかしいとき、ビルドができないときに試す手順 2019年完全版

はじめに

この記事はAndroid 初心者向け Advent Calendar 2019の19日目の記事です。
https://qiita.com/advent-calendar/2019/android_beginners

こんばんは。
みなさんはAndroidStudioで開発しているときに、文法エラーを起こしているつもりがないけれど、
エラーが出てビルドできない状態になったことはありませんか?私はあります。
そのときに試してきたことをこの記事ではまとめてみたいと思います。

なお、記事中のAndroidStudioのバージョンは3.5.2(執筆時の安定最新版)とします。

Rebuild Project

基本中の基本。
Screen Shot 2019-11-25 at 20.03.52.png

Clean Project

中間ビルドやキャッシュ ビルドファイルを消すのみ。
ただ、これだけだとデータバインディング等で作成されるファイルも消えたままなのでRebuild ProjectやMake Moduleの実行を行うこと。

Screen Shot 2019-11-25 at 20.09.01.png

Rebuild Project と Clean Projectの違い

公式リファレンスによると、
Clean Projectはすべての中間物を消す、Rebuild Projectは対象のビルド バリアントに対してClean Projectしたあと、APKを作成するらしい。

公式リファレンス
https://developer.android.com/studio/run/index.html?hl=ja#reference
データバインディングやアノテーションプロフェッサーでのクラス自動生成のみを行い、
apkまでは不要という場合、Make Moduleで十分。

BuildConfig等、一部のクラスはClean Projectでも消えないので
そういうのまで消したいときは gradleのcleanを使用する。
AndroidStudioの右端のGradleからcleanをダブルクリック
Screen Shot 2019-11-25 at 20.14.15.png

Android Gradle Pluginのビルドキャッシュ

AndroidのGradle Pluginもキャッシュを使うようです。
自分はなったことありませんが、Gradle Pluginのバージョンアップを行うと
エラーになったという場合は有効なんじゃないでしょうか。
AndroidStudioの右端のGradleからcleanBuildCacheをダブルクリック
Screen Shot 2019-11-30 at 17.14.49.png

参考
ビルド キャッシュによるクリーンビルドの高速化
https://developer.android.com/studio/build/build-cache?hl=ja

AnddroidStudioのキャッシュ

Invalidate Cashes / Restart
Screen Shot 2019-11-25 at 20.15.30.png
FileからInvalidate Cashes / Restartを選択後、

Screen Shot 2019-11-25 at 20.17.12.png
Invalidate And Restart
AndroidStudio自体がなんかおかしいときにも有効です。

以下、AndroidStudioを一旦終了すること。※以下操作注意

(AndroidStudioがキャッシュをつかんだままだと削除できない、または削除されない恐れがあるため)
また、以下から手動でファイルを消すことになるので操作には要注意。

Gradleのキャッシュ

rm -rf ~/.gradle

.gradleの中にキャッシュ用のディレクトリがあったりするんだけど、再ダウンロードされるのでまるごと削除でもOK

なお、プロジェクト直下にもあるのでここでも削除

(PROJECT_DIRに移動したあと)
rm -rf .gradle/

再作成されるのでまるごと削除でもOK。

IDEのキャッシュ

AndroidStudioのベースとなったIDEが
PROJECT_DIR/.idea
にキャッシュを使っているので、そこでも削除。
※ workspace.xml、usage.statistics.xml、tasks.xmlは必要なのでそれらのファイルは消さないこと。
※ プロジェクトによってはあえて共有しているものもあります。注意

コマンド一発で消すなら以下

(PROJECT_DIRに移動したあと)
find .idea -type f | grep -v "(workspace|usage.statistics|tasks).xml" | xargs rm

プロジェクト全体の設定ファイル

*.iml
samuraism様のサポート情報によるとGradleプロジェクトなら不要とのこと

https://support.samuraism.com/hc/ja/articles/360017715953-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AB%E4%BD%9C%E3%82%89%E3%82%8C%E3%82%8B-idea%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AF%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%81%97%E3%81%A6%E5%85%B1%E6%9C%89%E3%81%97%E3%81%A6%E8%89%AF%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B-

(PROJECT_DIRに移動したあと)
find . -type f | grep iml$ | xargs rm

参考

https://qiita.com/takahirom/items/af6b83edd0dc3294046f
https://qiita.com/kirimin/items/706523d637fd09152122

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした