ADT構成を最新のAndroid Studio 3.0 Canary7で動かしてみる

はじめに

古いADTの頃のプロジェクトを編集するのに、

  • 今後大規模な改修はない
  • gitの差分が取れる微修正で対応したい

みたいな事がある。昔下記のスライドをまとめていましたが、改めて最新環境で試して見たメモ


動作環境

  • macOS Sierra
  • 16G
  • HDDタイプのiMac
  • AS 3.0-Canary7
  • gradle plugin 2.1.3
  • gradle runtime-2.14.1

追加するファイル構成イメージ

//他のプロジェクトからコピーしてくるもの
gradle
   wrapper
     gradle-wrapper.properties
gradlew
gradlew.bat  

local.properties

// 新規作成するもの 
build.gradle
init.gradle
gradle.properties

//マルチプロジェクトは不安定になるので
libs_aar
    google-play-services_lib_froyo_rev12-debug.aar

ファイル説明

うーん。hatenaで昔 gistの部分切り出し貼り付けが出来たはずなんですけど

やり方忘れたのでリンクだけ貼ります。あとで分かったら修正予定

他のプロジェクトからコピーしてくるもの

gradle plugin 2.1.X 系が gradle-2.14.1-bin.zip を指定してしまっているのでこれに変更

事前に準備するもの

google-play-services_lib_froyo_rev12 を使っているプロジェクトでしたので、これのaarを作成します

  • google-play-services_lib_froyo_rev12
//他のプロジェクトからコピーしてくるもの
gradle
   wrapper
     gradle-wrapper.properties
gradlew
gradlew.bat  

local.properties


// 新規作成するもの 
//library project用の build.gradle (ADT export gradle)
build.gradle                 
gradlew assembleDebug

google-play-services_lib_froyo_rev12-debug.aar を作成します。

新規作成するもの

  • init.gradle

マルチプロジェクトのroot/build.gradle をコピーしてきてファイル名を変更します

https://gist.github.com/kimukou/2d4faac29187b677c5cb1d6a19606d35#file-init-gradle

  • build-gradle

ADTのexport gradleで生成されるbuild.gradleに下記を追加するイメージになります

  1. buildscript {} DSL は動かす直下のbuild.gradleに必要なので追記
  2. 事前に準備するもの で作成したaar を libs_aarにコピー

https://gist.github.com/kimukou/2d4faac29187b677c5cb1d6a19606d35#file-build-gradle


追記検証的なこと

DefaultManifestParser

いつの間にかでていた 2.1.3 で DefaultManifestParserのクラスが最新化されていた*1*2

ribbonizer plugin の利用に関して

G様の AS 2.2以降のpluginの作りからしてそうなんですけど、

本来のベキ論からいうと

  • 理想
    • sourceSets.main.res の参照位置情報からファイル操作をすべき
  • 現実
    • src/main/res の固定パスに有るはずという形でファイル処理が行われている
    • G様のInstantRunのpluginとかもベタ書きなので動かない*3
apply plugin: 'com.github.gfx.ribbonizer'

のpluginも同じように、

  • AndroidManifest.xml
 <application
        android:hardwareAccelerated="true"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name="hoge.fuga.MaiuApplication"
>

android:icon を src/main/res 配下から探しに行く という作りになっています。

従って、この位置にandroid:icon リソースのファイルを置いておかないとエラーになります

  • ファイルを下記の位置にフォルダを作ってコピーしておく
src
   main/res/drawable
         ic_launcher.png

ここらへんは、検索時に重複リソースとして引っかかってしまう*4 ので

検索indexのexclude 対象にしないと駄目な感じになります

Fabric に関して

src/main/AndroidManifest.xml

があれば確かに動きました。

  • pathの決め打ち=>ファイルが見つからない エラー

かと。その位置のAndroidManifest.xml の meta記述をチェック をしているのは確認してます。

ADT上のlayout preview

autoとwearのエミュイメージが入っていると悪さする。 というか ADT plugin内に入ってる cvc-complex-type.2.4.d が更新されてないからなんだよな。。

cd $ANDROID_HOME/sdk/system-images/android-24/android-wear/armeabi-v7a

sed '/d:skin/d' devices.xml > devices2.xml 

mv devices.xml _devices.xml
mv devices2.xml devices.xml

とすれば、一応OK。でこの向こうにしたタグって何に使われているかというと

エミュレータの外側の枠のSkinなんですよね。無効にしても特に問題はなし*5


全文

微妙なんですが、全文載せておきます

ADT_compatible_gradle_2017_07_20


自分メモ(AS3.0 Canary7)

Macなのにファイル掴んでて、編集できた??とおもったら

[不正な操作をされたのでreloadします] と初期化されたりとかorz

TLメモ(AS3.0 Canary7)

*1:以前他の記事で検証していたときは2.1.2

*2:release noteにも書かずにしれっと直されるからPOISON

*3:G様が作ってて面倒で横着したんだろうな・・・というのが正直な所

*4:Cmd+Bで飛べなくなる

*5:AS上からも新規作れないわけではない。しかも作成済みのものには影響されない。あくまで初期テンプレート