Android Studio 3.4(2019 年 4 月)

Android Studio 3.4 はメジャー リリースで、さまざまな新機能と改善が組み込まれています。

3.4.2(2019 年 7 月)

このマイナー アップデートには、さまざまなバグ修正とパフォーマンス改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。

3.4.1(2019 年 5 月)

このマイナー アップデートには、さまざまなバグ修正とパフォーマンス改善が含まれています。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。

3.4.0 の既知の問題

  • Android Q ベータ版を搭載しているデバイスにアプリをデプロイする際、プロファイリングが無効になります。

  • Data Binding ライブラリを使用している場合、LiveDataListener.onChanged() が NPE で失敗することがあります。この問題の修正は Android Studio 3.4.1 に組み込まれる予定で、Android Studio 3.5 の最新のプレビュー バージョンではすでに利用可能です(Issue #122066788 をご覧ください)。

IntelliJ IDEA 2018.3.4

IntelliJ IDEA 2018.3.4 リリースによる改善に伴い、コアの Android Studio IDE が更新されました。

Android Gradle Plugin 3.4.0 のアップデート

Android Gradle Plugin 3.4.0 の新機能については、該当のリリースノートをご覧ください。

新しい [Project Structure] ダイアログ

新しい [Project Structure] ダイアログ(PSD)を使用すると、依存関係の更新や、モジュール、ビルド バリアント、署名設定、ビルド変数といった各種プロジェクト要素の設定を簡単に行うことができます。

PSD を開くには、メニューバーから [File] > [Project Structure] を選択します。Windows と Linux では Ctrl+Shift+Alt+S キー、macOS では Command+;(セミコロン)キーを押して PSD を開くこともできます。PSD の新しいセクションと更新されたセクションの一部に関する説明を次に示します。

Variables

PSD の新しい [Variables] セクションでは、ビルド変数を作成、管理することで、たとえば、依存関係のバージョン番号をプロジェクト全体で一貫させるように設定できます。

  • プロジェクトの Gradle ビルド スクリプト内にすでに存在しているビルド変数を簡単に表示して編集できます。
  • プロジェクト レベルまたはモジュール レベルの新しいビルド変数を直接 PSD で追加できます。

注: 既存のビルド構成ファイル内で複雑な Groovy スクリプトを使用して値を割り当てている場合、PSD ではそうした値を編集できないことがあります。また、Kotlin で記述されたビルドファイルは、PSD では編集できません。

Modules

[Modules] セクションでは、既存のモジュール内のすべてのビルド バリアントに適用されるプロパティを構成したり、新しいモジュールをプロジェクトに追加したりすることが可能です。たとえば、defaultConfig プロパティの構成や署名構成の管理が可能です。

依存関係

プロジェクトの同期中に Gradle によって解決された各依存関係を、プロジェクトの依存関係グラフに基づいて検査、視覚化することができます。手順は次のとおりです。

  1. PSD の左ペインで、[Dependencies] を選択します。
  2. [Modules] パネルで、解決済み依存関係を検査するモジュールを選択します。
  3. PSD の右側に [Resolved Dependencies] パネルが開きます(下記を参照)。

また、依存関係を検索して、プロジェクトに追加することも簡単にできます。PSD の [Dependencies] セクションでモジュールを選択し、[Declared Dependencies] セクションの [+] ボタンをクリックして、追加する依存関係のタイプを選択してください。

選択した依存関係のタイプに応じて、以下のようなダイアログが表示され、依存関係をモジュールに簡単に追加できます。

Build Variants

PSD のこのセクションでは、プロジェクト内の各モジュールのビルド バリアントやプロダクト フレーバーを作成し、設定することができます。マニフェスト プレースホルダの追加、ProGuard ファイルの追加、署名鍵の割り当てなどを行うことができます。

Suggestions

[Suggestions] セクションでは、下記のようにプロジェクトの依存関係やビルド変数の推奨アップデート情報が表示されます。

新規の Resource Manager

Resource Manager は、アプリ内のリソースをインポート、作成、管理、使用するための新しいツールです。ツール ウィンドウを開くには、メニューバーから [View] > [Tool Windows] > [Resource Manager] を選択します。Resource Manager では、次のことができます。

  • リソースを可視化: ドローアブル、色、レイアウトをプレビューし、必要なリソースを簡単に見つけることができます。
  • 一括インポート: [Resource Manager] ツール ウィンドウにまとめてドラッグ&ドロップするか、[Import drawables] ウィザードを使用することで、複数のドローアブル アセットを一度にインポートすることができます。ウィザードにアクセスするには、ツール ウィンドウの左上隅にある [+] ボタンをクリックして、プルダウン メニューから [Import Drawables] を選択します。
  • SVG を VectorDrawable オブジェクトに変換: [Import Drawables] ウィザードを使用して、SVG 画像を VectorDrawable オブジェクトに変換できます。
  • アセットをドラッグ&ドロップ: [Resource Manager] ツール ウィンドウから、Layout Editor のデザインビューと XML ビューの両方にドローアブルをドラッグ&ドロップできます。
  • 代替バージョンを表示: [Tool] ウィンドウ内でリソースをダブルクリックすると、リソースの代替バージョンを表示できます。このビューには、作成した各種のバージョンと、それぞれに含まれている限定子が表示されます。
  • タイルビューとリストビュー: ツール ウィンドウ内のビューを変更して、リソースをさまざまな配置で視覚化できます。

詳細については、アプリのリソースを管理するをご覧ください。

APK のプロファイリング時とデバッグ時にビルド ID をチェックする

APK 内の .so 共有ライブラリ用のデバッグ シンボル ファイルを指定すると、Android Studio は、指定されたシンボル ファイルのビルド ID が APK 内の .so ライブラリのビルド ID と一致するかどうかを検証します。

ビルド ID を使用して APK 内にネイティブ ライブラリをビルドした場合、Android Studio は、シンボル ファイル内のビルド ID がネイティブ ライブラリ内のビルド ID と一致するかどうかをチェックし、一致しない場合はシンボル ファイルを拒否します。ビルド ID を使用してビルドしていない場合、不適切なシンボル ファイルを指定すると、デバッグ時に問題が発生することがあります。

R8 がデフォルトで有効

R8 は、desugar、圧縮、難読化、最適化、dex 変換をまとめて 1 つのステップに統合することにより、ビルド パフォーマンスを大幅に改善します。 R8 は Android Gradle プラグイン 3.3.0 で導入されました。現在は、3.4.0 以上のプラグインを使用するアプリ プロジェクトと Android ライブラリ プロジェクトの両方で、デフォルトで有効になっています。

下記の図は、R8 が導入される前のコンパイル プロセスの概要を示しています。

R8 より前、ProGuard は dex 変換や desugar とは異なるコンパイル ステップでした。

現在では、下記の図に示すように、desugar、圧縮、難読化、最適化、dex 変換(D8)のすべてが、R8 によって 1 つのステップで完了します。

R8 では、desugar、圧縮、難読化、最適化、dex 変換がすべて 1 つのコンパイル ステップで行われます。

R8 は既存の ProGuard ルールと連携するように設計されているため、通常は、R8 を利用するうえで必要となる措置はありません。ただし、Android プロジェクト専用に設計された ProGuard とは異なるテクノロジーであるため、圧縮や最適化により、ProGuard では発生しないコードの削除が生じる可能性があります。そのため、ごくまれにこのような状況が生じた場合は、ビルド出力内にそのコードを保持するための追加ルールが必要となることがあります。

R8 を使用していて問題が発生した場合は、R8 の互換性に関するよくある質問を参照して、該当の問題の解決策があるかどうかを確認してください。解決策が記載されていない場合は、バグを報告してください。R8 を無効にするには、次のいずれかの行をプロジェクトの gradle.properties ファイルに追加します。

    # Disables R8 for Android Library modules only.
    android.enableR8.libraries = false
    # Disables R8 for all modules.
    android.enableR8 = false
    
  

注: 特定のビルドタイプでは、アプリ モジュールの build.gradle ファイルで useProguardfalse に設定している場合、プロジェクトの gradle.properties ファイルで R8 を無効にしているかどうかにかかわらず、Android Gradle プラグインは R8 を使用してそのビルドタイプに対応するアプリのコードを圧縮します。

Navigation コンポーネントでサポートされているすべての引数タイプが、Navigation Editor でサポートされるようになりました。サポートされるタイプの詳細については、デスティネーション間でデータを渡すをご覧ください。

Layout Editor の改善 {:#layout-editor}

Layout Editor の [Attributes] ペインが簡素化されて単一ページになり、各セクションを展開することで、設定可能な属性が表示されるようになりました。[Attributes] ペインでは、以下の更新も行われました。

  • 新しい [Declared Attributes] セクションには、レイアウト ファイルで指定されている属性のリストが表示されます。新しい属性も簡単に追加できます。
  • [Attributes] ペインでは、各属性の横にインジケーターも表示されるようになりました。属性の値がリソース参照である場合は中身ありの画像()、それ以外の場合は中身なしの画像()になります。
  • エラーまたは警告がある属性はハイライト表示されます。赤色のハイライト表示はエラーを示し(たとえば、無効なレイアウト値を使用している場合)、オレンジ色のハイライト表示は警告を示します(たとえば、ハードコーディングされた値を使用している場合)。

依存関係を簡単にインポートできる新しいインテンション アクション

コード内で特定の Jetpack クラスと Firebase クラスを使用する際、必要な Gradle ライブラリ依存関係をプロジェクトに追加していなかった場合、新しいインテンション アクションが追加を提案します。たとえば、必要な android.arch.work:work-runtime 依存関係をインポートせずに WorkManager クラスを参照している場合、インテンション アクションを通じてワンクリックで簡単に依存関係を追加できます(下記の図を参照)。

特に、Jetpack では管理と更新を簡素化するためにサポート ライブラリが個別パッケージに再パッケージ化されているため、このインテンション アクションにより、使用する Jetpack コンポーネントに必要な依存関係だけを簡単に追加できます。