読者です 読者をやめる 読者になる 読者になる

別な方向に進化してる気がするAndroid Studio 2.3 Beta1 & GA

android google-api gradle firebase AS

触った所感

Canary 3との機能差分がいまいちわからず。。

退化したと思う所

バージョン設定認識がバカになった

+宣言等が認識しなくなった。

以前は一度graldeとして文法パース認識していたようなんだけど

高速化?の為に 完全にテキストベースチェックしかしないっぽいので、毎回プロジェクトを開く度に警告出るので正直ウザい。。

  • NG
classpath 'com.android.tools.build:gradle 2.3.+'
  • OK
classpath 'com.android.tools.build:gradle 2.3.0-beta1'

minsdkの判定がバカになってる

compile 'com.android.support:recyclerview-v7:24.1.1'

のバージョンだと minsdk-7 のはずなのですが、minsdkは9だとlintエラーを吐くんですよね。。

  • build.gradle
android {
    compileSdkVersion "Google APIs:24"  //★
    buildToolsVersion "25.0.2"//★★
}

★や★★あたりのが誤動作してるのかな。。

一応これ Android Studio 2.3 Canary 1 までは動いていたんですけどね。。

わけわかんないですorz

下記の設定だとまともに動かなくなる

  • InstantRunがコンパイルエラーになる
  • anotationProcesser/apt(plugin) DSL宣言がエラーにならないけど動かなくなる
android {
   compileSdkVersion "Google APIs:24"
}
  • Google APIs は Map v1を使っているアプリ用に残されているバージョンなんですが*1
    • これテストしてないから度々デグレるんだろうな・・

Google Analytics といえば

久しぶりに触る機会があって、色々と調べたので挙動をメモ*2

v3ベースのプロジェクトが有るんですが、送信先がv4と違うので、どうも集計自体されていないっぽい*3

v4ベースでも Google Analytics自体は

  • 8.XベースだとAnaliticsがうまくとばない?
    • classpath 'com.google.gms:google-services:2.0.0' の指定になるので、どうも送信先が違うっぽい
    • basement.jarがNWからDLしていてlocalRepoのものを使っていないから?
  • 9.Xベースの指定だと飛ぶよう
    • plugin/services.jsonを使わない形式だとうまくとばない
classpath 'com.google.gms:google-services:3.0.0'
compile 'com.google.android.gms:play-services-analytics:9.2.0'


apply plugin: 'com.google.gms.google-services'
  • R.xml.global_tracker を弄る設定がドキュメントで書かれているけど、
    • これコンパイル時に上書きされるので、生成元のservices.jsonを弄る必要があり*4
    • services.jsonは管理コンソールから生成したものを使わないと、正常に動かないよう*5
public class AnalyticsApplication extends Application {
  private Tracker mTracker;

  /**
   * Gets the default {@link Tracker} for this {@link Application}.
   * @return tracker
   */
  synchronized public Tracker getDefaultTracker() {
    if (mTracker == null) {
      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
      mTracker = analytics.newTracker(R.xml.global_tracker); //★
      //★=> global_trackerは自動生成、AS上からは見えない
    }
    return mTracker;
  }
}

あとは

  • リアルタイムAnaliticsがこの頃効かない?
  • 確実にAnaliticsを見れるようにするにはFirebase Analiticsの方が一番良いようだ
    • みれるようになるのに2−3日かかりますが。。
    • 新規Analiticsを作ろうとするとFirebase系のページに飛ばされるようですし。。

ココらへんの挙動から、

  • Googleの利用端末集計ってやっぱり怪しい*6
  • クラッシュレポート等は最新系の指定がないとうまくとばない?

Firebaseコンソールで便利になったところは

  • Analiticsとかの情報に他のユーザを招待、共有がしやすくなった

辺りかもしれない。

*1:Overlayのコード置き換えは結構大変。コードの互換がなさすぎなので

*2:Developerコンソールの クラッシュレポートが飛んでこないというお話により調べていた

*3:正確にはエラーにはしないけど、蓄積サーバーが違うので見れない系

*4:最新のASだとこのファイルをAndroidビューからは見えなくしていじれなくしている

*5:ローカルだけで動かすのはNG

*6:正確には最新のGA搭載のものしか集計対象に