古いADTプロジェクトをAS2.3化した物をビルドする上でハマったメモ

はじめに

偶に古いADTプロジェクトをAS対応すると、単に移行するだけなのに結構ハマることがあるのでメモしておく

多分最新の build-toolsとかに対応していない google play services とか使うからなんでしょうけどね・・

動作環境

  • macOS Sierra
  • 16G
  • HDDタイプのiMac
  • AS 3.0-Canary7
  • gradle plugin 2.3.3
  • gradle runtime-4.1-m1-bin.zip

具体例

レイアウトが崩れる

これ LinerLayoutの

  • match_content/wrap_content 指定が効かない
  • android.jarのバージョンにより直った?

みたいな話のやつ。ネットで言及例であげられていたのはRecyclerViewででしたね。。

今回の場合は targetSdkVersion 18 でなんとかなりました。

google analytics を使っているプロジェクト

現在 GAって新規受付は終了していて、基本的にFirebaseに飛ばされます。

ただFirebaseだと無料枠の制限が凄く厳しい。

でGAのアカウントをもっている人であれば、そちらの機能を使いたいわけです。

で、現在 services.jsonが取得できるFirebaseのサイトだと、

GAの global_tracker.xml の自動生成ができない記述だから

手動で services.jsonを直す必要があるという話

  • 変更前(FA標準)
analytics_service": {
      "status": 1
}, 
  • 変更後
analytics_service": {
      "status": 2,
       "analytics_property": {
             "tracking_id": "UA-XXXXXX"
       } 
}, 

annotationProcesser や apt plugin が動かないプロジェクト

compileSdkVersion "Google Inc.:Google APIs:24" 

あたりを使うと annotationProcesser がなぜか現在動かない ので *1

  • ADT経由で .apt_gerenated を生成して
  • .apt_gerenated => apt_gerenated フォルダとして appフォルダにコピー
  • build.gradle で参照させる

みたいな話になる

  • app/build.gradle
android{
    sourceSets {
        main {
            java.srcDirs += ['apt_generated']
        }
    }   
}

まあ、昔書いた手動タスクを書けばいいんだけど今更感が強いし(苦笑

*1:buildToolsが古いときは動いていたような・・<汗