Android Studio 3.0 Canary2 地雷回避メモ

はじめに

abc2017sでのfkmさんの発表で

  • kotlin使わなくてもIDE的に使うのはいいよ〜

というお話があり、さわっているのですが、色々と試した時に地雷踏んだので対策的なメモ

情報を整理し直し中(あと追記予定)

動作環境

  • macOS Sierra
  • 16G
  • HDDタイプのiMac
  • AS 3.0.0-Canary2
  • gradle plugin 2.3.2

なんで gradle pluginを最新にしないの?

  • kotlinはまだ業務に使ってない
  • APTを利用しているプロジェクトでビルドエラーになるため
  • excludeとか使いまくっているのですが、新DSLではその書き方側からわからない
  • AS 3.0.0-Canary2 では現在のところ、gradle plugin 2.3.2 でも爆速?といわれるInstantRunが使えるため

IDE的に変わったとこと

常用の体感状態

  • CPUがファンファン煩くなって激重状態
    • gradlew –stopで収まる*1
  • 検索は IDEAの最新版に近いので、慣れるとこっちのほうが楽?
    • でも以前のは検索した状態で、そのプレビュー上でファイル書き換えられたりしたんだよな・・

がよくある。

layoutPreview

  • エラーウインドウがとうとうボタン表示になり、デフォルトで出なくなってます(苦笑
    • でも一回押して確認してしまうと off/onしなおすまでエラーウインドウは消せない。なんか微妙

  • layout previewが1回で表示しなかったりがよくある
    • previewを一回offにしてonし直すと表示される

地雷1 Device File Exploler

  • 開いている状態を常に保持しているみたいで、
    • ファイルを開く時にクラッシュすると、次回もずっとクラッシュする
    • 閉じないで終了+デバイス接続してしまうと、アクセスエラーが出っぱなしで何もできない
    • 大きいファイルを開いてしまうとIDE固まる & 次回IDE開く時に8G以上設定しろとかネタぼけたこと言い出す

で2時間ほどIDEが使えなくなりましたorz

  • プロジェクト直下の .idea/.iml 消す
  • $Home/Library/Preferences/Android Studio 3.0XXX 消す
  • $HOME//Documents/AndroidStudio/DeviceExplorer/deviceId を消す

とか色々やったんですけどね・・

ここらへん何処らへんに情報持ってるんだろう・・。結構怖いわ。。

地雷2 google()のレポジトリ

今回なにげに追加された google() のレポジトリですが、これ一番上にもってくると色々とエラーになるという・・*2

アクセスが凄く重くなる時がある

AS 3.0上で .idea/.imlを消して OpenProjectをした時にハマった現象(use gradle plugin 2.3.+)

 maven "https://maven.google.com" 

or

//use gradle runtime 4.0-m2 upper
google()
  • root/build.gradle (NG)
buildscript {
    repositories {
       google()//★
       jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.+'
        classpath "io.realm:realm-gradle-plugin:2.2.1"
    }
}

allprojects {
    repositories {
        google()//★
        jcenter()
        maven { url "https://jitpack.io" }
    }
}
  • root/build.gradle (OK)
buildscript {
    repositories {
       jcenter()
       google()//★
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.+'
        classpath "io.realm:realm-gradle-plugin:2.2.1"
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
        google() //★
    }
}

依存ライブラリがおかしい?

  • 2.3.+指定しているのに、落ちてくるバイナリもおかしいようで、変な依存エラーが出る*4
    • 因みに外してから、下記を実行後再度実行すると対応自体いらないのですが・・・?
gradlew clean cleanBuildCache
gradlew --stop

// gradle runtime 4.0-Xベースだと assemble時にしかライブラリをDLしないことが有り
graldew assembleDebug

Conflict with dependency ‘com.google.code.findbugs:jsr305’

  • app/build.gradle
dependencies {
   androidTestCompile 'com.google.code.findbugs:jsr305:3.0.1'
}

地雷3 index再作成

なんか凄く時間が掛かる・・ AS2.3.2で作業した時の2−3倍以上

単純な(google sampleとかの)プロジェクト以外はこれ使うの厳しいのではないかと思う

まあ新DSLに書き換えてないから? なのかもしれないけど*5

対策的な話

  • bin/idea-properties => 指定の位置にコピーしていじる

    • じゃないとアップデートが失敗しやすくなる
    • idea.max.intellisense.filesize 補完indexサイズ変更用
  • imai先生に次いで、IDEAが超詳しい著名人の御発言で下記な発言があり

  • サイズを 2500 => 5000にしていた
    • index作成が終わらない・・プロジェクト開く/Gradle Sync するのに毎回10分以上かかる
    • この現象が出始めたのは Canary2から。Canary1はそれはなかった
    • サイズ戻してみてもあんまり変わらない

まあ、これもIDEAベースだと毎回index再作成自体がありえない運用なので

無理が来ているんじゃないかとは思うんですが・・

  • 試しに 500に変更
    • AS2.3.2レベルまで戻る
    • 試しに AS2.3.2で開いたときはindex作成がすぐ終わったので実はオススメ?
    • 今のところ補完でエラーになるとかはない*6
For Windows:
    in %USERPROFILE%\.IntelliJIdeaXX 
    or %USERPROFILE%\.IdeaICXX
For *NIX: 
    in ~/.IntelliJIdeaXX 
    or ~/.IdeaICXX
For macOS: 
    in ~/Library/Preferences/IntelliJIdeaXX 
    or ~/Library/Preferences/IdeaICXX

関連メモ

  • Logcatの行数の変更
    • idea.cycle.buffer.size=1024 => 2048

ja.stackoverflow.com

地雷4 IDE情報を引き継がないとGradle Syncボタンが消える??

  • IDEA的には正しいんだけど、
    • indexの再作成でIDEが返ってこない、固まる 事が多々
    • indexの再作成がよく失敗する*7

状況だと、このボタン消えると破滅的な気がするんだけどな・・

まったく新規で環境構築してる人はまったりしていないんだろうか??

*1:graldew daemonがよく複数立ち上がる

*2:まあ使わなければいいという指摘もありますが・・

*3:AS 3.0が.ideaとか消して、open projectすると固まる

*4:プロジェクト構成作ったり、index作成で固まる

*5:DSL前提で補完index作成が組まれている??

*6:毎回作成される補完情報が500kB超えてないということなんだろうな・・

*7:毎回なんかのトリガーで再作成しているから仕方ない??