微修正が入った Android Studio 3.0 Canary6 ではじめる幽雅?な日常
はじめに
新しいバージョンが出たので再トライ (AS2.3.3だと補完index作成処理で固まる環境で論外なので・・・)
現在 AS3.0 をIDEとして使っていますが、
いつまでgradle plugin 2.3.3で動かせるかわからないので状況を探っている感じ
だったりします。
正直
buildするjarファイル名がバージョンが固定になっているのでまずbuild.gradleを書き換える
— じゃあの (@jaano2001) 2017年7月5日
→次にjarのファイル名が変わってしまうのでサービス化するためのスクリプトも書き換える
これを勝手にやっているのが結構凄いなこの糞無能チームw
な感じは同意で大幅な記述切り替えはあんまり遣りたくないんだよなー
- InstantApp
- wearApp
はやりたいという要望はあるので、sampleレベルでは試していたりするんですけど HelloWorld以上の壁を超えるのはいつの日か・・
動作環境
- macOS Sierra
- 16G
- HDDタイプのiMac
- AS 3.0-Canary6
- gradle plugin 2.3.3
- gradle plugin 3.0-alpha6
- gradle runtime-4.1-m1
状況
とりあえず動くようになったので、しばらく試していますandroid studio 3.0 Canary6
— close_yutori (@kimukou2628) 2017年7月11日
release note存在しないけど、
library projectのGradle Syncエラーはとりあえず解消されたみたい。
とりあえず様子見る
gradle plugin 3.0-alpha5 だと 下記のDSLエラーでチェックが弾かれてました><android studio 3.0 Canary6
— close_yutori (@kimukou2628) 2017年7月11日
gradle plugin 3.0-alpha6 指定で
compile DSL表記の既存のままでも取りあえずbuildは通るようにはなったみたい。
このバイナリが実際動くかどうかだよな~(^^;;
library projectはcompile DSL 指定するなや!
compile (':XXXX')
android studio 3.0 Canary6
— close_yutori (@kimukou2628) 2017年7月11日
通常buildはok
instant runは相変わらずdatabinding辺りでクラッシュ
しばらく動かしてみよう
まあ、InstantRunは動かないケースが多いからなー(遠い目
特にdata-binding(APT)使ってると gradle plugin 2.3.3ベースでもよくコケる・・・
依存ライブラリが増えると変な挙動しますし。。
- dependenciesライブラリのバージョンの不一致
とかが有るらしいんですけどね。まあ既存のjavaでも同じなので(package hell<地獄>)
Java9の package private 辺りが待望されている背景はそこら辺に有るわけですし*1
android studio 3.0 canary6
— close_yutori (@kimukou2628) 2017年7月11日
あ、駄目だ。appcompatとかG様系は問題ないけど
サードパーティーのカスタムViewのスタイル定義読めなくて落ちる、、
まあ仕方ないのかな?
G様標準形のUIパーツ系は問題ないんだけど、サードパーティのカスタムViewのView属性等が見つからなくてクラッシュ
まあ大分ましになったんでしょうけどね・・
既存挙動
android studio 3.0 Canary6
— close_yutori (@kimukou2628) 2017年7月11日
うーん。debugフォルダのstringリソースが上書れないんだけどなんで?
Canary4では問題なかったのにな、、、。
でもgradle plugin 2.3.3使ってるしな、、
訳わかんない
デフォルトだと下記になっていて、パーツ編集する度に補完indexが再作成されて重い状態なのは察しの状態。
databinding reference by editor
- 普通のlayout
- ConstantLayout
- data-bindingを使ったlayout
- data-bindingを使ったConstantLayout
の順で加速度的に重くなっていきます*2
でoffってたんですが、Gradle Syncボタンを押してもSyncがいつまでたっても成功しないという・・
buildすれば成功するんですけどね・・。このタイミングって下記のタイミングと同じなんだよなー(遠い目
- hotchemi 先生の PermissionsDispatcher Plugin
android studio 3.0 preview4
— close_yutori (@kimukou2628) 2017年7月10日
databinding reference by compiler
だとGradle Syncでは反映されないのね。
buildの設定メニューといい設定が悉く無視されてるの気のせいなのかな?
これは挙動の理解不足でした。config.xmlにstringリソースが定義されているとして
で、debug用のstring_idが main/values-ja で最終的に潰されていたという話
- NG
main res values config.xml values-ja config.xml debug res values config.xml
- OK
main res values config.xml values-ja config.xml debug res values config.xml values-ja config.xml //★要追記
新規機能(TLメモ)
#AndroidEmulator tip: you can now configure proxy settings for the Emulator on a settings page in extended controls. pic.twitter.com/SJFs3e27zL
— Android Studio (@androidstudio) 2017年7月11日
Rev26.1で追加されたようだけど、最初からないのがおかしいだろって話
— けいちゃ (@keicha_hrs) 2017年7月12日
ただし新し目のエミュレータのみですね。
因みに自分の環境だと
- Emuratorの終了時にASごと終了する
んだけどなぜ??
I just published “Android Studio と Xcode で開発中のアプリを複数のデバイスに同時にデプロイしたい” https://t.co/fINgAXCDiB
— Naohiro Oogatta (@oogatta) 2017年7月11日
- 転送時に複数選択できるという話。
- InstantRun試用していても、InstantRunは自動解除
で最近気になっているのが
- InstantRun解除ビルド後
- 他の端末(イメージ)を終了
- InstantRunビルド再開
- 転送時にクラッシュする
一回 下記しないとだめなことも多々・・・。
gradlew clean cleanBuildCache
ビルドの仕方が違う同名のバイナリをリンクしてクラッシュみたいな感じなんですかね(汗
新規挙動(TLメモ)
下記の話、調べたんですが gradle plugin 3.0-alpha6 の問題みたい。
最終的にこのエラーに遭遇。vectorDrawableを使っているためか4系だとアプリが途中で落ちる https://t.co/Q91J483jzt
— yamatake (@yamatake) 2017年7月11日
多分
— close_yutori (@kimukou2628) 2017年7月11日
gradlew cleanBuildCache clean
gradlew --stop
が必要かも
情報共有ありがとうございます。自分もその設定試してみます〜。
— close_yutori (@kimukou2628) 2017年7月11日
これも同件
"Instant Run currently does not work with Gradle build cache."アハーン?|Android Studio 3.0 Canary 6 is now available https://t.co/rCTKTqJNZJ
— ジャバニャン (@pside) 2017年7月12日
現在のところ下記無効にしないと正常に動かないよう
- gradle.proptiles
org.gradle.configureondemand=false org.gradle.caching=false
ビルド高速デモとかどうなったんですかね〜(遠い目
まあ複数のスレッド管理みたいなの大変なのは分かるんですけどね・・
現在の開発スタイル・・・
あんまりよろしくないんだよなーとか思いつつ、ビルド中はPC重くて何もできないので・・・
ホワイト企業でバイトして驚いたこと
— 鈴木先輩 (@suzuki_paisen) 2017年7月4日
・出勤押してから勤務の準備ができる
・座って作業できる
・台風来そうだからって早めに帰れる
・上下関係がない
・勤務中にお菓子食べれる
・褒められる、そして怒られない
・定時で帰れる
・社員さんがユーチューブで音楽聴いてる
・作業がはかどる
Android Studio先生が激重なので、音楽など聞けない><
— close_yutori (@kimukou2628) 2017年7月5日
というかビルド中はCPU分回ってて重いので、検証端末でブラウジングしていることが多かな。
あとはTwitterアプリのプッシュ通知が多なのでそっちのリンク良く見てしまう
> 社員さんがユーチューブで音楽聴いてる
確かにいわれてみれば・・。でもAS先生使っていて思うに 補完index作成処理 をどうにか出来ない限り体感的にも軽く出来ない気がしてきましたorz
— close_yutori (@kimukou2628) 2017年7月5日
(ASの作業の大半の時間を使っている気が
補完効かないと、単なるSublime以下のエディタなんですよね<苦笑
ありがとうございます。確かに一考の余地はあると思うので試してみます!
— close_yutori (@kimukou2628) 2017年7月5日
と思ったんですが、職場のWifi環境がセキュリティ強化で超不安定なので意味がなかった><
gradle runtime 4.Xベースから、offline実行をしても
- 定期的にrepositoryのpom情報をダウンロードしてくる
のでこのタイミングで通信が発生するので、このタイミングでNW不順だと激重になるのは確認してますし・・
Gradleで、dependenciesのcacheが効いてくれない。毎度DLする。。cache folderとかの設定が漏れとるんやろうか?
— Shinya Sakemoto (@sakebook) 2017年7月10日
な話とかも実は関係あったりするかもな・・・
ASの開発環境って、日本だとあんまり合わない感じなんですかねー(遠い目
ですね〜。結局職場だとiPhone(or iPod)持ち込みで音楽聴きながらというのが正解ケースなんでしょうか・・。
— close_yutori (@kimukou2628) 2017年7月5日
radiko.jp あたりもなんかいい気がしてきました(アナログラジオが多分どっかいってる人なのでorz
気軽に最新pluginをコンパチで試せるbuild.gradle記述の考察
現状は3.0ベースに書き換えるのはマダ厳しいかなと*3
compile/provided DSLが4.X系で廃止? みたいな呟きがあったけど
そこら辺の言及ってstackoverflowあたりしか見つからないんだよな・・・(汗
gradle runtime 5.0ではだいぶ変わる話はスケジュール的に出ているみたいですけど
gradlew tasks 辺りで引っかかる所
apkのファイル名の変更
まずこれがエラーになるので記述を変更する必要があり
旧記述
3.0からの推奨記述
gradle 2.3とコンパチで動かす記述
*app/build.gradle
android { applicationVariants.each { variant -> if (variant.buildType.name.equals("release")) { // releaseビルドのみ、ファイル名にVesionNameとビルド時間を付与 variant.outputs.each { output -> //★ if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) { def versionName = variant.versionName def date = new java.text.SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) def newName = "apk_v${versionName}_${date}.apk" //=== 修正 ==== if (output.hasProperty('outputFileName')) { output.outputFileName = newName } else{ output.outputFile = new File(output.outputFile.parent, newName) } } } } } }
ちなみに★はallである必要はない。eachで問題なく動きます