次に例を示します。, ライブラリ モジュール用に AAR(Android ARchive)パッケージを作成するときは、, Gradle から単体テストを直接実行するとき、クラスパスに Java スタイルのリソースを含めるサポートを追加しました。, Android ARchive(AAR)アーティファクトの単体テスト依存性のサポートを追加しました。, 変更後にテストクラスが再コンパイルされるように、ライブラリ プロジェクトのタスクの依存関係を修正しました。, ProGuard の障害を引き起こしたテストアプリで依存関係が重複する問題を修正しました。, JDK Comparator 契約に準拠せず JDK 7 エラーを生成していた Comparator 実装を修正しました。, ライブラリ テスト アプリケーションをビルドするときにマニフェスト マージで発生していた未解決のプレースホルダ障害を修正しました。, 依存関係関連の問題がデバッグ時ではなくビルド時に失敗するように変更しました。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。, Android Studio 3.3.1 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。, クラスパス同期の改善: ランタイム クラスパスやコンパイル クラスパスの依存関係を解決する際、Android Gradle プラグインは、複数のクラスパスにまたがって現れる依存関係に関し、それ以降の特定のバージョン競合を修正しようとします。, たとえば、ランタイム クラスパスにライブラリ A バージョン 2.0 が含まれ、コンパイル クラスパスにライブラリ A バージョン 1.0 が含まれている場合、プラグインはコンパイル クラスパスへの依存関係を自動的にライブラリ A バージョン 2.0 にアップデートして、エラーを回避します。, ただし、ランタイム クラスパスにライブラリ A バージョン 1.0 が含まれ、コンパイル クラスパスにライブラリ A バージョン 2.0 が含まれている場合、プラグインはコンパイル クラスパスの依存関係をライブラリ A バージョン 1.0 にダウングレードしないため、エラーが発生します。詳細については、クラスパス間の競合の修正をご覧ください。, アノテーション プロセッサ使用時の増分 Java コンパイルの改善: このアップデートにより、アノテーション プロセッサ使用時の増分 Java コンパイルのサポートが改善され、ビルド時間が短縮されます。, Kapt を使用しないプロジェクト(Java のみのプロジェクト): 使用するすべてのアノテーション プロセッサが増分アノテーション処理をサポートしている場合、増分 Java コンパイルはデフォルトで有効になります。増分アノテーション プロセッサの採用状況を確認するには、Gradle の問題 5277 をご覧ください。, ただし、1 つ以上のアノテーション プロセッサが増分ビルドをサポートしていない場合、増分 Java コンパイルは有効になりません。代わりに、gradle.properties ファイルで次のフラグを指定できます。, このフラグを指定すると、Android Gradle プラグインは別のタスクでアノテーション プロセッサを実行し、Java コンパイル タスクを段階的に実行できます。, 古い API を使用する場合のデバッグ情報の改善: プラグインは、サポートされなくなった API の使用を検出したとき、その API が使用されている場所の特定に役立つ、より詳細な情報を提供できるようになりました。 接続されているデバイスに, pre-dex をサポートし依存関係の re-dex を減らす、試験運用版のコード圧縮ツールを追加しました。このような機能は Proguard ではサポートされていません。これにより、デバッグビルド バリアントのビルド速度が改善されます。試験運用版圧縮ツールは最適化と難読化をサポートしていないため、リリースビルドでは Proguard を有効にする必要があります。デバッグビルドで試験運用版圧縮ツールを有効にするには、モジュール レベルの, ロギングのサポートを追加し、リソース圧縮ツールのパフォーマンスを改善しました。 Java is a registered trademark of Oracle and/or its affiliates. Android Plugin for Gradle は、API バージョンを指定しない、またはアプリのマニフェストの, APK のパッケージ化中ではなく、難読化タスクの前に Java リソースを処理するように変更しました。この変更により、難読化タスクは、パッケージの難読化に続いて Java リソースを適応させることができます。, 試験運用版ライブラリ プラグインで Java Native Interface(JNI)コードを使用する際の問題を修正しました。, カスタマイズされたファイル名を使用する場合に、前のタスクの出力を適切に使用するように, コマンドラインからインストゥルメンテーション テストランナー引数を指定するためのサポートを追加しました。 WARNING: start “bin\studio.exe” instead of “bin\studio64.exe” if you only have 32 bit JDK installed. Android Studioにインポート後もsdkという名前になっている。, kcpoipoiさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog で表示されるダイアログには、Source directoryはあるがModule nameは無くなっている。, OpenCVをインポートするとき、指定するフォルダがsdkとなっているため、 詳細については、Gradle のアップデートに関するセクションをご覧ください。, Android Studio 3.4.2 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。 ブログを報告する, vue create でVueプロジェクトを作成したとき、毎回同じところ…, StickyListHeaders風のライブラリを自作する-5 - 日々是好日の…, Android Studio 4.1 にOpenCV 4.5.0 をインポートするメモ. Android Studioのバージョン更新のためか、Qiitaや個人ブログの方法がそのままでは使えなかったのでメモ。 大筋は下記参照でいいと思うのでポイントだけ。 (まだインポートまでしかやってないけど←) qiita.com 環境 Android Studio 4.1 OpenCV 4.5.0(4系以降ではあまり関… findViewById() は、自動生成されたバインディング クラス参照に置き換えることができるようになりました。ビュー バインディングを使用するには、各モジュールの build.gradle ファイルに次の行を含めます。, Android Gradle プラグインには、Maven Publish Gradle プラグインのサポートが含まれています。これにより、ビルド アーティファクトを Apache Maven リポジトリに公開できます。Android Gradle プラグインは、アプリまたはライブラリ モジュール内のビルド バリアント アーティファクトごとにコンポーネントを作成します。これを使用して、Maven リポジトリへのパブリケーションをカスタマイズできます。, 詳細については、Maven Publish プラグインを使用する方法についてのページをご覧ください。, アプリのデバッグ バージョンをビルドする場合、プラグインは zipflinger という新しいパッケージ化ツールを使用して APK をビルドします。この新しいツールを使用すると、ビルド速度が向上します。この新しいパッケージ化ツールが期待どおりに動作しない場合は、バグを報告してください。以前のパッケージ化ツールを使用するには、次の行を gradle.properties ファイルに含めます。, プロジェクトの各 C / C++ ファイルを Clang でビルドしてリンクするのにかかる時間を測定できるようになりました。Gradle はこれらのコンパイラ イベントのタイムスタンプを含む Chrome トレースを出力できるため、プロジェクトをビルドするのに必要な時間を詳細に把握できます。このビルド アトリビューション ファイルを出力する手順は次のとおりです。, Gradle ビルドを実行するときに、フラグ -Pandroid.enableProfileJson=true を追加します。次に例を示します。, gradlew assembleDebug -Pandroid.enableProfileJson=true, Chrome ブラウザを開き、検索バーに「chrome://tracing」と入力します。, [Load] ボタンをクリックし、project-root/build/android-profile に移動して、profile-timestamp.json.gz という名前のファイルを探します。, アプリをビルドするときに、プラグインによってデフォルトで extractNativeLibs が "false" に設定されるようになりました。つまり、ネイティブ ライブラリのページ アライメントとパッケージ化が圧縮なしで行われます。その結果、アップロード サイズは大きくなりますが、ユーザーには次のようなメリットがあります。, Android Gradle プラグインで圧縮ネイティブ ライブラリをパッケージ化する場合は、アプリのマニフェストに次の行を含めます。, 複数のバージョンの NDK をダウンロードした場合、Android Gradle プラグインはデフォルトのバージョンを選択するようになりました。ソースコード ファイルのコンパイルでは、このデフォルトのバージョンが使用されます。プラグインは以前は、最近ダウンロードされたバージョンの NDK を選択していました。プラグインが選択したデフォルトのバージョンをオーバーライドするには、モジュールの build.gradle ファイル内の android.ndkVersion プロパティを使用します。, Android Gradle プラグインは、プロジェクトのライブラリ モジュールごとに R クラスを 1 つだけ生成し、その R クラスを他のモジュール依存関係と共有することで、コンパイル クラスパスを簡素化します。この最適化によってビルドが高速化されますが、以下の点に留意する必要があります。, ライブラリ モジュールに関して、デフォルトのリソースセットに含まれていない言語のリソースを含める場合(hello_world が /values-es/strings.xml に文字列リソースとして含まれているが、そのリソースが /values/strings.xml で定義されていない場合など)、Android Gradle プラグインはプロジェクトのコンパイル時にそのリソースを含めなくなりました。この動作変更により、Resource Not Found ランタイム例外の発生が減少し、ビルド速度が向上します。, D8 において、アプリのコンパイル中にアノテーションが CLASS 保持ポリシーを適用するタイミングが考慮されるようになりました。また、これらのアノテーションは、実行時には使用できなくなりました。この動作は、アプリのターゲット SDK を API レベル 23 に設定するときにも行われます。そのため以前は、Android Gradle プラグインと D8 の古いバージョンを使用してアプリをコンパイルする場合、実行時にこれらのアノテーションにアクセスすることができました。, このバージョンの Android Gradle プラグインには、次のバグ修正が含まれています。, このセクションでは、Android Gradle プラグイン 3.6.0 に存在する既知の問題について説明します。, Android Lint は、解析インフラストラクチャでの回帰が原因で、一部のプロジェクトにおいて完了までに非常に時間がかかることがあります。そのため、特定のコード構造では、ラムダの推定型の計算速度が低下します。, この問題は IDEA のバグとして報告されており、Android Gradle プラグイン 4.0 で修正される予定です。, アプリのマニフェストでカスタム権限を定義している場合、Android Gradle プラグインは通常、カスタム権限を文字列定数として含む Manifest.java クラスを生成します。Android Gradle プラグインはこのクラスをアプリにパッケージ化するため、ランタイムにこれらの権限を簡単に参照できます。, Android Gradle プラグイン 3.6.0 では、マニフェスト クラスの生成は行われません。このバージョンのプラグインでアプリをビルドし、そのアプリでマニフェスト クラスを参照すると、ClassNotFoundException 例外が発生することがあります。この問題を解決するには、以下のいずれかを行います。, Android Gradle プラグイン 3.5.0 と Android Studio 3.5 が Project Marble の主なリリースとなります。今回のリリースでは Android デベロッパー ツールの 3 つの主な改善点であるシステムの健全性、機能の改良、バグの修正に重点を置いています。特に、プロジェクト ビルド速度の向上がこのアップデートの主な焦点でした。, Project Madble の上記の情報とその他の最新情報については、Android デベロッパー ブログの記事または下記のセクションをご覧ください。, Gradle 5.4.1。 WARNING 2: environment variable “JAVA_HOME” should be defined and should point to a valid JDK (e.g. 詳細については、Gradle のアップデートに関するセクションをご覧ください。, Android Studio 3.3.2 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。 Android Gradle プラグイン 4.0 以降を使用している場合、ビルド済みのネイティブ ライブラリのインポートに関する構成設定が変更されました。詳細については、, Android Studio 4.0 以降で削除されたプラグインを使用するプロジェクトを開くには、Android Gradle プラグイン 3.6.0 以前を使用する必要があります。, この機能は Gradle 4.10.1 以降で利用できますが、Gradle 5.1 は除きます(, R8 で Kotlin リフレクションを使用して Kotlin ライブラリとアプリケーションを圧縮する, Android App Bundle に対応できるように Instant App を移行する, null 値許容と変更の可否は、Kotlin 型で明示的に宣言されるようになりました。, Android Gradle プラグインでは API サーフェスが明確に定義されているため、Android の今後のビルド拡張の安定性が向上します。, プラットフォームはインストール済みの APK からネイティブ ライブラリに直接アクセスできるため、アプリのインストール サイズが小さくなります。しかも、ライブラリのコピーを作成する必要がありません。, APK または Android App Bundle に非圧縮ネイティブ ライブラリを含めると、通常は Play ストアの圧縮効率が向上するため、ダウンロード サイズが小さくなります。, コンパイラは R クラスを上流のモジュール依存関係と共有するため、プロジェクト内の各モジュールで一意のパッケージ名を使用することが重要です。, 他のプロジェクト依存関係からライブラリの R クラスを参照できるかどうかは、ライブラリを依存関係として含めるために使用するコンフィグレーションによって決まります。たとえば、ライブラリ A に「api」依存関係としてライブラリ B が含まれている場合、ライブラリ A と、ライブラリ A に依存する他のライブラリは、ライブラリ B の R クラスを参照できます。ただし、ライブラリ A が, データ バインディングがデフォルトでインクリメンタルになりました。詳細については、, すべての単体テスト(Roboelectric 単体テストを含む)がキャッシュ可能になりました。詳細については、, Robolectric 単体テストが、データ バインディングを使用するライブラリ モジュールでサポートされるようになりました。詳細については、, Jetifier が有効になっているにもかかわらず AndroidX バージョンではなく, JavaCompile は、データ バインディングのあるプロジェクトでキャッシュできるようになりました(, データ バインディングのあるライブラリ モジュールのコンパイル回避を改善しました(, Android Studio がコンポジット ビルドの依存関係を正しく認識しない問題を修正しました。, 1 回のビルドで Android プラグインを複数回読み込むと(たとえば buildscript のクラスパスに Android プラグインが含まれているサブプロジェクトが複数存在する場合)、プロジェクト同期エラーが発生する問題を修正しました。, 依存関係を変更する際に、その依存関係の API にアクセスしないモジュールを再コンパイルしなくなるため、Gradle ビルドが高速になりました。, クラスごとに dex を実行することにより、増分ビルドが高速になりました。各クラスが個別の DEX ファイルにコンパイルされ、変更されたクラスのみが re-dex されるようになりました。また、, 特定のタスクを最適化してキャッシュ出力を使用することで、ビルド速度を改善しました。