なんか取り下げられたっぽい Android Studo 3.0 Beta3

はじめに

という状況のようですが、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のアプデを試している時の心境

コマンドラインベースというよりGUI Plugin側の評価消耗が激しいかな・・

これすごく同意・・

このごろちょっと思っていること

  • sdkフォルダ内のmvn repositoryが現在アップデートされてない
  • google()のレポジトリのみ配布
    • AS内部に有るmvn reprositoryにも最新モジュールは存在しない
    • でもgoogleのレポジトリは直参照が出来ないようにされている

従ってNetworkがつながってないとビルドすら出来ない

うーん。仕事場のWifiが不安定になることがある=ビルド固まる

とか有るんで勘弁してほしいんだけど・・。そもそも正式版にした時に負荷耐えられるのかなー

状況

最初に戸惑ったのはこれ・・。最終的に解決策は見つかったけど(後述

gradle pluginのコマンドラインレイヤーでは問題ないんですけど

GUI Plugin側が死んでますね。これだとソース上に書いたDSLをプレビュー表示する機能が使えない

というかBetaになってから、入れてるサードパーティのPluginが結構死んでるんだけど、どうなるんだろう?

AS2.3 / IDEAでは問題ないらしいんだよな・・

ここは改善した感じ。GUI側のPluginが出していた

GradleSyncでindex作成開始直後のエラー停止が改善された感じ?

遅くなる条件としては

  • VERSION_1_7 でビルドすると凄まじく駄目
    • VERSION_1_8 なら使用に耐える感じ
  • DSLcompile とかでも解析してくれるようになったがこの形だと遅い
    • skip判定条件かえたのかなー
  • フォルダ参照タイプのdependencies(library-project)があると遅い
  • ただし独自DSLのlibrary-projectもどきであれば違う(feature/wearApp/InstantApp)

これ試しにminsdk14指定したら blank Activityしか作れなくてビビった。

wiz経由で作る場合は

  • 高めのminsdk設定
  • 手動でminsdkを下げる

しかないんでしょうねー。一時期、「Wizテンプレートがそのまま動かないのはおかしい」

と初心者の方に指摘されたことの対応だと思うけど

これが一番最初のやつの解決策。これが取り下げ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)
        }
  }

これがコマンドラインベースで戸惑った所。

dependencies指定されたlibrary内のclassマージする時

  • packageOptionのpickFirst な挙動をしていた(Beta2まで)
  • パッケージする前にlintエラー? でエラーとして弾くようになった(Beta3から)

という挙動変化があり、厳密になっている感じ。

ベキ論としては正しいけど、jarからのexclude class指定が出来ないので 厳しくないかなーと

TLメモ

TLメモ(一般)

Beta2はプロジェクト自体というかIDE自体が強キャッシュ関係でなかなか立ち上がらなかったので

逆に戻すほうが不具合多い気がするんだけどね・・・(汗

TLメモ(InstantRun)

これ知ってた。だから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);
    }
}

TLメモ(日本語化)

keicha_hrsさんの設定検証メモ

TLメモ(Kotlin)