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

sos の 作業メモ

プログラミングや英会話学習、マイルや旅行、日常生活など。最近はWebFormなASP.NETのお守りがお仕事です。

日々の生活にhappyをプラスする|ハピタス Gポイント

0.4.2 Android Studio

f:id:sos_jp:20140109135458p:plain

精華町の某所で作業に借り出されている最中なのですが、微妙に待ち時間があったりするので Studioさんを更新してみました。

0.4.1のリリースの後に、緊急updateで0.4.2になっていましたので、0.4.0からの変更点となります。

本家のリリースノートは以下

Intellij 13.0.2 release build, 133.471

Intellijの最新のにしたよ。0.4.0のStudioさんに関係するのは以下の8つ。

Gradle IDE integration

  • コマンドラインのGradleに渡すパラメータを設定するオプションができたよ(Compiler > Gradle)。 --stacktraceみたいなコマンドラインパラメータを設定しておけるよ。
  • Project Structureダイアログは、build.gradleをもっと賢く編集できるようになったよ。たとえば、コメントやコードブロックも保持するようになってるよ。
  • 新規プロジェクト作成時に、個々のモジュールのbuild.gradleではなく、トップレベルのbuild.gradeでプラグインリポジトリが定義されるようにしたよ。
  • Gradle 1.10がリリースされているんだけど、AndrodのGradle プラグイン0.7.3(今回のStudioで使用)は Gradle 1.10ではちゃんと動かなくて、エラーメッセージもとても混乱させるものになってるよ。Gradle 1.10でちゃんと動くように、Android Gradle プラグインを修正している最中だよ。
  • スマートなインポート。プロジェクトがgradle wrapperを含んでいたり、Gradleがインストールされている場所をStudioが知っている場合には、詳細な情報を尋ねずにプロジェクトが直接インポートされるよ。
  • エラー処理や通知の同期に関してたくさんの修正をしたよ。特に同期に失敗した時なんかは、多くの機能が正しく動かなくなるので、もっとよいフィードバックをするように、問題の場所に対してより多くの診断と提案が行われるよ。

Eclipse project import

  • Instrumentation testのインポートをサポートしたよ。ADTのプロジェクトをインポートするとき、そのプロジェクトの同列や子ディレクトリで Instrumentation用のADTプロジェクトを発見したら、そのソース群をGradleのテストソースセットにマージするよ。
  • NDKプロジェクトのインポートをサポートしたよ。インポートするプロジェクトがNDKのソースを含んでいたら、プロジェクトの jni セットにインポートされるよ。モジュール名はmakefileから推測してGradleファイルに保存して、ndk.dirプロパティはlocal.propertiesファイルで定義されるよ。
  • インポートの診断に、必須だけど見つからないMavenリポジトリSDKがインストールする際の警告や、古いツール類の使用等、いろいろ追加したよ。
  • インポートでは、Eclipseのリンクされたリソースやパス変数なんかを利用して、もっと複雑なdependenciesを処理するようになったよ。eclipseワークスペースを指定した時(またはインポートが自動的ワークスペース内のプロジェクトを検出した時)に、パスを解決するのにワークスペースメタデータを使わせたり、インポートウィザードの一部としてマッピングを手動で指定したりできるよ。

DDMS

  • 新しいHeap Dump アクション。メモリプロファイラを使って、指定したプロセスのヒープをダンプし、HPROFファイルとして保存できるようになったよ。

Lint

  • manifestファイル内の無視されて誤解の原因となるような属性を警告するよ。
  • Gradleプロジェクトで使われる時のいくつかのチェックを修正したよ

Layout Rendering

  • 最新のAPI 19のSDKをインストールしていたら、Nexus 5がデバイスリストで選べるようになるよ。

Bug fixes

たくさんのバグを修正したよ。一部だけど、以下のissueとか。

63534, 63624, 12222499, 63623, 63881, 63622, 58302, 63596, 63926, 64358, 63928, 64014, 63997

 


SDK Managerで Support Libraryもアップデートして、とりあえずStudioさんのアップデートはうまくいったようです。

top levelの build.gradleでちゃんとリポジトリ設定して、モジュールのdependenciesでも設定しているのに、GooglePlayServicesがうまく組み込まれないという現象と格闘中なので、成功しているとは言えませんけど(^^;

追記

Gradle Import が おかしいような

build.gradleのdependenciesを編集した後に、Gradle Import(今回もいろいろ弄られた部分のようですが…)が走るのですが、これがなんか変な事になってます。

例えば、GooglePlayServicesのライブラリを使うならモジュールのbuild.gradleのdependenciesに

    compile 'com.google.android.gms:play-services:4.+'

てのを追加しますが、その際に

ComGoogleAndroidGmsPlayServices4030.aar

だけじゃなく、

Gradle: ComGoogleAndroidGmsPlayServices4030.aar

なんてものが認識されちゃうっぽいんです。そしてIDEA側は Gradle:〜と書かれたライブラリを必要とするらしくて ビルドエラーだよって怒り始める始末。

対処方法としては、ProjectStructureを開いてライブラリがうんたらかんたらって警告がでたらそれをクリックして、

f:id:sos_jp:20140109185011p:plain

こんな画面で ライブラリを右クリックして、 "Add to Module"を選択し、アプリのモジュールに追加してやることでなんとかなります。

もっと簡単なのは、アプリモジュールのimlファイルを開いて、

<orderEntry type="library" exported="" name="support-v4-19.0.1" level="project" />
<orderEntry type="library" exported="" name="ComAndroidSupportAppcompatV71901.aar" level="project" />
<orderEntry type="library" exported="" name="ComGoogleAndroidGmsPlayServices4030.aar" level="project" />
<orderEntry type="library" name="Gradle: support-v4-19.0.1" level="project" />
<orderEntry type="library" name="Gradle: ComAndroidSupportAppcompatV71901.aar" level="project" />
<orderEntry type="library" name="Gradle: ComGoogleAndroidGmsPlayServices4030.aar" level="project" />

こんな風に libraryの行をコピペしてnameにGradle: を追加してやることでしょうか。ただ、Gradle Importが走るたび(Studioさんを再起動した時も含みます)にリフレッシュされるのでとても面倒です。

カナリア希望の人以外はしばらく様子見した方が良いかもしれません。