0.3.7 Android Studio
久々のアップデート到来です。 このところバタバタと仕事に追われていたのですが、ちょうど一山越えて良いタイミングでした。
Gradle
- "Direct Gradle Invocation" モードをデフォルトにしてみたよ。これでビルドが約20%は早くなるはず。 生のGradleのエラー出力は、Gradle Consoleウィンドウに出て来るよ( Settings > Compiler > Gradleで offにもできるよ。0.3.6でこれが保存されないバグがあったけど、修正されてるよ。)
- エラー診断が改善されたよ。 manifestのマージ、dexの例外や複数行のjavacのエラーのパースを修正に加えて、誤ったプァットフォームやサポートライブラリーの指定や、ローカルプロパティでのエラーといった、一般的なインポート時の問題を解決する為のハイパーリンクが導入されているよ。
- SDKの管理が改善されたよ。(local.propertiesによって)対象となるSDKが指定されたプロジェクトを開く時に、StudioはそのSDKがIDEで対応されているかどうかをチェックするよ。 もし対応されてなかったら、Studio側のにするかプロジェクト側のにするかをユーザーに尋ねるよ。 これによってIDEとコマンドラインでのビルドの一貫性が保証されるよね。
- jarファルのコンテキストメニューの"Add Library As..."がGradleプロジェクトで使えるよ。 build.gradleに適切なdependencyを書き込むよ。
- "New Projects"では、Gradleの為のVMパラメータの調整を簡単にするために、空のgradle.propetiesファイルが生成されるよ。
- dependenciesのリポジトリを Project Structureダイアログで変更可能だよ。
Layout Editing
もしも実機で動いていると思われる場合、事故でファイルを上書きしたり誤ってコマンドを実行したりしないために、レイアウト内のカスタムViewはサンドボックス内でレンダリングされるよ。
注意: サードパーティー製のカスタムViewライブラリを利用して、それらをレイアウトエディタで表示させる場合、レイアウトレンダラは、デスクトップ権限のIDEプロセスでカスタムViewを起動するよ。完全にセキュアな環境は保証されないから、サードパーティ製のライブラリを利用する時には、そのソースを信用するか、ビルド時やレイアウト編集時にも安全だと検証すべきだよ。でも、レイアウトレンダリング用のサンドボックスは、カスタムViewのアクセスをロックするためにいくつかの初歩的な手段を実施するよ。この潜在的な危険を発見して報告してくれたLowrence Angraveに感謝するね。
RTLサポートを改善したよ。レイアウトエディタでのRelative Layoutの編集では、RTLに対応したレイアウトが生成されるよ(minSdkVersionの設定に依存するけど、left/rightに加えて、start/endが使われるよ)
- RTL Multi-configuration Editing: ノーマルのレイアウトと平行して、RTL環境でのレイアウトも表示させられるようになったよ。
Templates
- custom view,service,broadcast receiver, fragment, daydream(4.2で導入されたスクリーンセーバー機能)等の新しいテンプレートが追加されたよ。対象のパッケージで右クリックして、コンテキストメニューで New -> Android Componentで実行してね。
Lint
- 潜在的なPRNG((pseudo random number generator)の問題を探すようになったよ。バグによって影響をうけるコードはここを見てね。
- 戻値を使用しないContext#checkCallingPermissionの呼び出しのチェックを追加したよ。(たぶんContext#enforceCallingPermissionを意図してるんだと思うけど)
- Gradleプロジェクトで、mock location provider permissonがdebug用のmanifestでのみ使用されているかをチェックするようにしたよ。これでリリースビルドで不用意にそのpermissionが要求されるのが無くなるよね。えっと、デバッグフォルダにあるものでもquickfixの提案が出ちゃうよ(次のリリースで修正するよ)
Bug fixes. Lots of them. Some notable ones:
- LinearLayoutで要素をリサイズした時のweightのハンドリングを修正
- レイアウトのincludeタグの領域の計算を適切なものにしたよ
- API19でのGridLayoutの編集を修正したよ
- テンプレート経由でのアクティビティの追加で、build.gradleのdependenciesを上書きすることがなくなったよ
- APIチェックは、ネストされた呼び出しを適切にチェックするようになったよ
- スタイルの循環参照を検出し、無視するようにしたよ
- 16進での色定義を、潜在的なタイプミスとして扱わないようにしたよ。
- 起動時に、レイアウトxmlファイルがレイアウトエティタタブを見失うバグを修正したよ。
- ライブラリによって参照される全てのロケールではなく、ローカルのロケールでのみAdd Translationと Render Localesが行われるようにしたよ
ということで、いつものごとく新規プロジェクトを作って簡単なテストで確認しました。
既存のライブラリプロジェクトを追加するところでbuild.gradleとsettings.gradleを自分で編集しないといけない以外は、かなり安定しているように思います。
プロジェクト直下にライブラリプロジェクトをコピーして、
settings.gradle
include ':App', ':tflib_lib'
build.gradle
dependencies {
compile 'com.android.support:support-v4:19.+'
compile 'com.android.support:appcompat-v7:19.+'
compile 'com.google.android.gms:play-services:4.+'
compile project(':tflib_lib')
}
こんな風にかくのはなんだかスマートじゃないですよね…
素直にリポジトリ経由で参照できるようにするとかそういう風にしないといけないのかな…よくわからないけど。
あと、Forestによる英文法の学習の効果はものすごくて、readingがずいぶん楽になってきています。英語がダメなAndroidやiOSの開発者はかなり損をするというのを痛切に感じる今日この頃。頑張らないとですね。
うーん、Studioさんのリリースをおっかけるのもしばらくやめて、英語に集中したほうがこの先の時間を有効に使えそうな気もしたり(^^;