なんか取り下げられたっぽい Android Studo 3.0 Beta3
はじめに
おい!beta3取り下げられとるやんけ!|[REMOVED] Android Studio 3.0 Beta 3 is now available https://t.co/AF1IhvLwxY
— ジャバニャン (@pside) 2017年8月26日
という状況のようですが、few bug fix のrelease noteに始まり
理由も明示せずに取り下げって微妙かなーと
たぶんKotlin関係でのバグ対応だと思うんですけどね・・(直前でKotlinが1.1.4-2 にupしていたので)
動作環境
- macOS Sierra
- 16G
- HDDタイプのiMac
- AS 3.0-Beta3
- gradle plugin 2.3.3
- gradle plugin 3.0-beta3
- gradle runtime-4.1-bin
ASのアプデを試している時の心境
ビルドは成功してapkも生成できて実行もできてデバッグもできるのに、インデックスだけだめとかイカれてる🐞
— さきちゃんの中の人、夏太り中😭 (@serenegiant) 2017年8月23日
コマンドラインベースというよりGUI Plugin側の評価消耗が激しいかな・・
これすごく同意・・
このごろちょっと思っていること
- sdkフォルダ内のmvn repositoryが現在アップデートされてない
- google()のレポジトリのみ配布
- AS内部に有るmvn reprositoryにも最新モジュールは存在しない
- でもgoogleのレポジトリは直参照が出来ないようにされている
従ってNetworkがつながってないとビルドすら出来ないw
うーん。仕事場のWifiが不安定になることがある=ビルド固まる
とか有るんで勘弁してほしいんだけど・・。そもそも正式版にした時に負荷耐えられるのかなー
状況
最初に戸惑ったのはこれ・・。最終的に解決策は見つかったけど(後述android studio 3.0 Beta3
— close_yutori (@kimukou2628) 2017年8月25日
あ、3.0ベースのbuildでlibrary projectが有るとGUI plugin側で GradleSync出来なくしてる、、
local.aarにして参照すれば問題なしみたいだけど
android studio 3.0 Beta3
— close_yutori (@kimukou2628) 2017年8月25日
試しに入れたkotlinのGUI版Anko pluginエラー吐いて有効にならないみたい
うーん。build自体は通るみたいなんだけど。
kotlin_version=1.1.4
指定は関係ないよな、、
gradle pluginのコマンドラインレイヤーでは問題ないんですけど
GUI Plugin側が死んでますね。これだとソース上に書いたDSLをプレビュー表示する機能が使えない
というかBetaになってから、入れてるサードパーティのPluginが結構死んでるんだけど、どうなるんだろう?
AS2.3 / IDEAでは問題ないらしいんだよな・・
android studio 3.0 Beta3
— close_yutori (@kimukou2628) 2017年8月25日
few bug fix しか書いてないけど
index作成時間が超かかるようになった、、、
Accessなんちゃらなエラーは出なくなったけど。
GUI plugin側を厳密にする形の修正したのかな、、
ここは改善した感じ。GUI側のPluginが出していた
GradleSyncでindex作成開始直後のエラー停止が改善された感じ?
遅くなる条件としては
- VERSION_1_7 でビルドすると凄まじく駄目
- VERSION_1_8 なら使用に耐える感じ
- 旧DSLのcompile とかでも解析してくれるようになったがこの形だと遅い
- skip判定条件かえたのかなー
- フォルダ参照タイプのdependencies(library-project)があると遅い
- ただし独自DSLのlibrary-projectもどきであれば違う(feature/wearApp/InstantApp)
android studio 3.0 Beta3
— close_yutori (@kimukou2628) 2017年8月25日
久しぶりに新規wiz触ったんだけど
api levelが低いとtemplate自体選べなくしてるんだな、、、
templateのformatにサポートするapi levelの記述とか有るんだろうか?
これ試しにminsdk14指定したら blank Activityしか作れなくてビビった。
wiz経由で作る場合は
- 高めのminsdk設定
- 手動でminsdkを下げる
しかないんでしょうねー。一時期、「Wizテンプレートがそのまま動かないのはおかしい」
と初心者の方に指摘されたことの対応だと思うけど
android studio 3.0 Beta3
— close_yutori (@kimukou2628) 2017年8月25日
library Projectの件ですが
wearAppとかfeatureとかInstantAppとか
独自DSLが導入されてる奴は問題ないみたい。
local.aarが参照出来ないバグ直したときに
直しすぎた感じなのかな?
android studio 3.0 Beta3
— close_yutori (@kimukou2628) 2017年8月25日
library projectがこける理由分かった~(^^;;
カスタムBuildTypeを定義しているとき
appだけでなく、library projectにも定義しないとエラーになると。
これfeatureでもあったな~
これが一番最初のやつの解決策。これが取り下げBugの理由なら直ると嬉しいかなとは思う。
feature plugin でも同じ状況なんだけど、これ別DSL扱いだから修正はいらないんだろうな〜とか思いつつ
- app/build.gradle
android {
buildTypes {
//カスタムbuildType追加した時
hogeDebug{
initWith(buildTypes.debug)
}
}
- library/build.gradle
android { //TODO: 今まで入らなかったけどBeta3ではエラーになる buildTypes { //カスタムbuildType追加した時 hogeDebug{ initWith(buildTypes.debug) } }
android studio 3.0 Beta3
— close_yutori (@kimukou2628) 2017年8月25日
3.0-beta3 pluginで
dependence libraryのclass存在感チェック強化されてる。
Beta2までpickFirstの挙動
Beta3 compile error(lint errorに近い?
これがコマンドラインベースで戸惑った所。
dependencies指定されたlibrary内のclassマージする時
- packageOptionのpickFirst な挙動をしていた(Beta2まで)
- パッケージする前にlintエラー? でエラーとして弾くようになった(Beta3から)
という挙動変化があり、厳密になっている感じ。
ベキ論としては正しいけど、jarからのexclude class指定が出来ないので 厳しくないかなーと
TLメモ
TLメモ(一般)
AS3B3でGradleがめでたく4.1になったか
— 川峠@Andriders (@eaglesakura) 2017年8月25日
泥スタジオ3.0Beta使ってたら前触れなくGradleが逝って,1日寝かせてたら泥スタジオの更新きて一緒にGradleアプデされて直った
— うつろき (@hile_net) 2017年8月25日
Beta2はプロジェクト自体というかIDE自体が強キャッシュ関係でなかなか立ち上がらなかったので
逆に戻すほうが不具合多い気がするんだけどね・・・(汗
TLメモ(InstantRun)
kotlinのcoroutine最高なんだけどやっぱりまだ地雷があって踏み抜くと厳しい
— ちばっちんぐ (@chibatching) 2017年8月25日
launch(UI)のブロック中でasync(UI+CommonPool)で非同期処理をしていたのですが、awaitしない投げっぱなしasyncでexceptionが発生するとuiブロック内でtry-catchできなくなってクラッシュしてしまってました
— ちばっちんぐ (@chibatching) 2017年8月26日
(いま踏んだところ
— ちばっちんぐ (@chibatching) 2017年8月25日
coroutineで地雷踏んだので対策したと思ってリリースビルド作ったらproguardの最適化で対策消し飛ばれたっぽくて振り出しに戻った
— ちばっちんぐ (@chibatching) 2017年8月25日
build.gradleでminifyEnableしてAndroid StudioでRunするだろ?そしたらProguardされてると思うじゃん?
— ちばっちんぐ (@chibatching) 2017年8月25日
これ知ってた。だからInstantRun実行時に
- Build in Shurinker が使えない理由なんですよね
- Multidex使うなら問題ない
な感じ。でもMultidex前提だと minsdk 14以下じゃ動かないんだよなー
Debug時だけMultiDex入れる場合は、下記な小細工が必要にはなると思うんですけどね
- app/build.gradle
android { buildTypes { debug{ defaultConfig.multiDexEnabled true defaultConfig.multiDexKeepProguard file('multi-dex-keep.txt') defaultConfig. minSdkVersion=21 } }
public class MyApp extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
Instant Run: Proguard is not compatible with instant run. It has been disabled for productDebug < てめー勝手にdisableすんなよ!
— ちばっちんぐ (@chibatching) 2017年8月25日
時間を無駄にした。せめて警告なりなんなり出してくれ。なんとなくASのGradle Console眺めてたら件のログ見つけて泣いたわ。
— ちばっちんぐ (@chibatching) 2017年8月25日
Proguardのお気持ちを慮りながら最適化を回避するコードを書くだけの簡単なお仕事
— ちばっちんぐ (@chibatching) 2017年8月25日
ここにきてcoroutineとproguardの相性悪いんじゃないか説が出てきて厳しい
— ちばっちんぐ (@chibatching) 2017年8月25日
TLメモ(日本語化)
"PleiadesはAOP(横断的関心事を解決するテクノロジー)によりJavaアプリケーション実行時に画面に表示される文字列を動的に翻訳するツール" Pleiades昔からあるけど知らなかった https://t.co/HwacRyRZxq
— takahirom (@new_runnable) 2017年8月17日
Pleiadesが本腰入れてIDEAやAndroid Studioへの対応を進めているから、これを使おうとする人が増えていきそうだけど、この質問のように妙なトラブルを大幅に増やすことにならなきゃいいんだけど
— けいちゃ (@keicha_hrs) 2017年8月25日
Pleiadesの作者さんから直接返信をいただいて縮み上がっていたところです・・・w (まあ友好的な会話ですが)
— けいちゃ (@keicha_hrs) 2017年8月25日
7zの自己解凍という殺人インストーラーを何とも思わないG様だし・・・^^;
— けいちゃ (@keicha_hrs) 2017年8月25日
keicha_hrsさんの設定検証メモ
Pleiadesを入れてみようという関係で、仮想マシンで構築したLinux MintにIDEA、Android Studio 2.3.3、Android Studio 3.0 Beta 2をそれぞれ入れてみたんだけど、
— けいちゃ (@keicha_hrs) 2017年8月28日
Edit Custom VM Optionsを選択したときの動きがどうもバラバラでよくわからん。展開したオリジナルのvmoptionsファイルを開いてしまうものあれば、ホームの設定ディレクトリー以下に作ろうとするものもあれば
— けいちゃ (@keicha_hrs) 2017年8月28日
Pleiadesの設定は、基本ユーザーディレクトリーの下に作られたidea64.vmoptionsなりstudio64.vmoptionsの中に書けって話だけど、そのファイルの作られ方が一定しないんじゃ説明するのも大変だなあ
— けいちゃ (@keicha_hrs) 2017年8月28日
なんかEdit Custom VM Optionsというメニューを選んだときの動作自体にバグが仕込まれている感じがするなあ。それもIDEA由来のような気がする。
— けいちゃ (@keicha_hrs) 2017年8月28日
Edit Custom Propertiesの方はどれも何の問題もないだけに尚更。
— けいちゃ (@keicha_hrs) 2017年8月28日
だけど、IDEAは
— けいちゃ (@keicha_hrs) 2017年8月28日
~/.IdeaIC2017.2/config/
の下にカスタム設定ファイルを作ろうとするのに対して、ASは
~/.AndroidStudioX.X/
の直下に作ろうとする。これはベースのIDEAの違いからか?
端末からフルパスで実行したときと相対パスで実行したときで動きが違うー。なんじゃこりゃー。
— けいちゃ (@keicha_hrs) 2017年8月28日
何故なのかよくわからんけど、IDEAもASも「フルパスで起動せよ」ってことらしい
— けいちゃ (@keicha_hrs) 2017年8月28日
TLメモ(Kotlin)
フルKotlinのAndroidプロジェクト、layoutファイルが使用されていることが認識されないので、レイアウト関連のパフォーマンスの問題がまったく検出できないことに今さら気づいた。地味につらい。
— djyugg (@djyugg) 2017年8月24日
Kotlin、Javaに比べてコード量は結構減らせてる気がするけど、可読性を高くするにはいろいろ意識する点が多い気がする。
— djyugg (@djyugg) 2017年8月24日
へー。これは Ruby と Kotlinの比較スライドなんだ。。。https://t.co/nDECuQxPR8
— close_yutori (@kimukou2628) 2017年8月24日
Kotlin で static なメンバーをどう書くべきなのか? https://t.co/KPWsfyV66Z #android #kotlin
— ちゃんずまお (@maochanz) 2017年8月25日
KotlinプログラマのためのScala入門 on @Qiita https://t.co/1EGapxRoVb
— 水島宏太(真剣にダイエット中) (@kmizu) 2017年8月25日