Android StudioのGradleとは何ですか?


1313

Gradleは私にとっても、新しいAndroid開発者にとっても少し混乱しています。Android StudioのGradleとは何か、その目的は何ですか?Android Studioに含まれているのはなぜですか?



14
答えるために、なぜあなたは、このようなのGradleなどのビルドツールを望む、チェックアウトこの記事をジェフアトウッドから。
Adam S

829
誰かがここで「はい、それについてGoogleに多くのリンクを張っています」という質問をするとき、彼らが本当に求めているのは、なぜ私たちがそれを必要とするのかなど、誰かが平易な言葉で質問に答えて、それを文脈に置くことです、それを最もよく使用する人は、Android StudioなどでAndroidアプリを構築するためにそれを知る必要がありますか。ほとんどの場合、Googleで見つけたリンクは「tech-speak」であり、初心者にとってこれは混乱します。
Azurespot 2014年

3
@NoniA。まさに私の考え。私はまだ少し混乱していますが、gradleは私が書いたコードをコンパイルするバックグラウンドプロセスだけですか?また、他の多くの答えを見た後、彼らは依存関係について言及しています。それらは何ですか?本当にありがとう!

簡潔でわかりやすい説明はこちらをご覧ください。かなり役に立った
eRaisedToX 2016

回答:


1531

簡潔な答え

Gradleはビルドシステムです。

長い答え

Android Studio以前は、開発目的でEclipseを使用していましたが、EclipseなしでAndroid APKを構築する方法を知らなかった可能性があります。

これはコマンドラインで実行できますが、SDKで各ツール(dx、aapt)が何を行うかを理解する必要があります。Eclipseは、独自のビルドシステムを提供することで、これらの低レベルでありながら重要な根本的な詳細から私たち全員を救いました。

resフォルダーがフォルダーと同じディレクトリにある理由を考えたことはありsrcますか?

これは、ビルドシステムが問題に入る場所です。ビルドシステムは自動的にすべてのソースファイル(.javaまたは.xml)を取得し、適切なツールを適用(例:javaクラスファイルを取得してdexファイルに変換)し、それらすべてを1つの圧縮ファイル、つまり最愛のAPKにグループ化します。

このビルドシステムはいくつかの規則を使用します。1つの例は、ソースファイル(Eclipseでは\srcフォルダー)またはリソースファイル(Eclipseでは\resフォルダー)を含むディレクトリを指定することです。

これらすべてのタスクを自動化するには、スクリプトが必要です。Linuxではシェルスクリプトを使用し、Windowsではバッチファイルの構文を使用して、独自のビルドシステムを作成できます。とった?

Gradleは別のビルドシステムであり、他のビルドシステムから最高の機能を取り、それらを1つに統合します。彼らの欠点に基づいて改善されています。これは、JVMベースのビルドシステムです。つまり、Android Studioで使用する独自のスクリプトをJavaで記述できます。

Gradleのすばらしい点の1つは、プラグインベースのシステムであることです。これは、独自のプログラミング言語があり、ソースからいくつかのパッケージ(JAR for Javaのような出力)をビルドするタスクを自動化する場合、JavaまたはGroovy(またはKotlin、ここを参照)で完全なプラグインを記述できることを意味します。それを残りの世界に配布します。

なぜGoogleはそれを使用したのですか?

Googleは市場で最も先進的なビルドシステムの1つを見て、学習曲線がほとんどまたはまったくなく、Groovyやその他の新しい言語を学ばなくても独自のスクリプトを作成できることに気付きました。そこで、彼らはGradle用のAndroidプラグインを作成しました。

build.gradleプロジェクトでファイルを確認している必要があります。ここで、タスクを自動化するスクリプトを記述できます。これらのファイルで見たコードはGroovyコードです。書き込んSystem.out.println("Hello Gradle!");だ場合は、コンソールに印刷されます。

ビルドスクリプトで何ができますか?

簡単な例は、実際のビルドプロセスが発生する前に、いくつかのファイルを1つのディレクトリから別のディレクトリにコピーする必要があることです。Gradleビルドスクリプトでこれを行うことができます。


11
AndroidStudioプロジェクトをある場所から別の場所に移動するときに、Gradleが問題を引き起こしていたと言わざるを得ません。バージョンの不一致、不足しているモジュール、なんとか...それは私に苦労していました。プロジェクトスケルトンを再作成し、古いプロジェクトから新しいプロジェクトへのコードの一部を切り取って貼り付けました。そして、これはソースと宛先の両方でWindowsの下にあります。これをLinuxベースのラボに移動します。
jfmessier 2015年

21
私が理解していないのは、
gradle

4
IntelliJは、別のビルドシステムを必要とせずにAndroidプロジェクトをビルドする方法をすでに知っていると思いました。
Arne Evertsson、2015

17
Android Studio以前のビルドシステムに対するGradleのもう1つの重要な利点は、依存関係の管理です。以前は、プロジェクトでAndroidライブラリを使用するには、ソースコードをダウンロードしてプロジェクトに追加し、プロジェクトでコンパイルする必要がありました。代わりに、gradleを使用してbuild.gradleに1行を追加すると、gradleはパブリックリポジトリからコンパイル済みライブラリをダウンロードし、プロジェクトに追加します。いくつかの例:blog.teamtreehouse.com/android-libraries-use-every-project これは、libディレクトリに置く代わりに、標準のJava jarファイルでも機能します。
Stan Kurdziel、2015年

4
Gradleはひどいビルドシステムです。Android Studioを使用する場合は、ビルドを処理する必要があります。一部のクラスを追加すると、Gradleが役立つ前に同期を実行する必要がある理由がわかりません。比較すると、Visual Studioでの作業は素晴らしい(またはX-Codeでさえ)-くだらない追加機能は必要ありません。IDEは、Androidビルドプロセスが時々または古いプロジェクトの更新を通じて必要とする設定のためにランダムファイルをいじる必要なしにプロジェクトとソリューションをビルドします。GradleはAndroidエクスペリエンスの最悪の部分です。
csmith 2016年

162

これは、GoogleがAndroidで使用したい新しいビルドツールです。antよりも拡張性があり便利なため、使用されています。開発者のエクスペリエンスを向上させることを目的としています。

Google I / Oで AndroidデベロッパーチームのXavier Ducrohetによる講演を見ることができますこちらでご覧いただけます。

XavierとTor NorbyeによるAndroid Studioに関する別の講演もあり、GoogleのI / Oの間ここで行われます


4
IntelliJは、別のビルドシステムを必要とせずにAndroidプロジェクトをビルドする方法をすでに知っていると思いました。
Arne Evertsson、2015

1
それで、gradleは私が書いたコードをコンパイルするバックグラウンドプロセスだけですか?また、他の多くの答えを見た後、彼らは依存関係について言及しています。それらは何ですか?ダニエル、ありがとう

2
@ user5562706コードはコンパイルされませんが、コードをコンパイルする実行可能ファイルを呼び出す必要があります。コードをコンパイルした後、別のタスクを実行してパッケージ化し、別のタスクを実行して選択したディレクトリにコピーし、別のタスクを実行してサーバーのどこかにアップロードすることができます。Gradleまたはその他のビルドのようなタスクですシステムは、行います。
マイケルベリー

63

Gradleは、Android Studioで実行されるビルドシステムです。

他の言語の例:


23
あなたGradleがに似ていると言ったときmake、私はちょうどその概念を得ました
user3405291

3
PhingのPHP
Yousha Aleayoub

15
不明なツールの機能とパイプラインのどこにあるかを知るために私が見つけた最も速い方法の1つは、ツールの名前と「vs」をGoogleに入力することです。通常、結果には「X vs Y」が表示されます。ここで、Yはあなたがよく知っている他のツールです。
James Kuang

javascriptの
webpack

47

これは何についての詳細な説明です GradleAndroid Studioでの使用方法と使用方法します。

Gradleファイルの探索

  1. Android Studioでプロジェクトを作成すると、ビルドシステムによって必要なGradleビルドファイルがすべて自動的に生成されます。

Gradleビルドファイル

  1. Gradleビルドファイルは、Domain Specific Language or DSLカスタムビルドロジックを定義し、Gradle用AndroidプラグインのAndroid固有の要素とやり取りするためにを使用します。

  2. Android Studioプロジェクトは1つ以上のモジュールで構成されます。これらのモジュールは、個別にビルド、テスト、デバッグできるコンポーネントです。各モジュールには独自のビルドファイルがあるため、すべてのAndroid Studioプロジェクトには2種類のGradleビルドファイルが含まれています。

  3. トップレベルのビルドファイル:ここには、プロジェクトを構成するすべてのモジュールに共通の構成オプションがあります。

  4. モジュールレベルのビルドファイル:各モジュールには、モジュール固有のビルド設定を含む独自のGradleビルドファイルがあります。ほとんどの時間は、プロジェクトの最上位ビルドファイルではなく、モジュールレベルのビルドファイルの編集に費やします。

これらを見てみましょう build.gradleファイル Android Studioのプロジェクトパネルを開き([プロジェクト]タブを選択して)、Gradle Scriptsフォルダーを展開します。Gradle Scriptsフォルダーの最初の2つのアイテムは、プロジェクトレベルとモジュールレベルのGradleビルドファイルです。

トップレベルのGradleビルドファイル

すべてのAndroid Studioプロジェクトには、単一の最上位のGradleビルドファイルが含まれています。このbuild.gradleファイルは、Gradle Scriptsフォルダーに表示される最初のアイテムであり、Projectと明確にマークされています。

ほとんどの場合、このファイルを変更する必要はありませんが、その内容とプロジェクト内での役割を理解しておくと役に立ちます。

モジュールレベルのGradleビルドファイル

プロジェクトレベルのGradleビルドファイルに加えて、各モジュールには独自のGradleビルドファイルがあります。以下は、基本的なモジュールレベルのGradleビルドファイルの注釈付きバージョンです。

その他のGradleファイル

build.gradleファイルに加えて、Gradle Scriptsフォルダーには他のGradleファイルがいくつか含まれています。これらのファイルは、プロジェクトに関連する変更を加えると自動的に更新されるため、ほとんどの場合、手動で編集する必要はありません。ただし、プロジェクト内でこれらのファイルが果たす役割を理解することをお勧めします。

gradle-wrapper.properties(Gradleバージョン)

このファイルを使用すると、Gradleがマシンにインストールされていなくても、他のユーザーがコードをビルドできます。このファイルは、正しいバージョンのGradleがインストールされているかどうかを確認し、必要に応じて必要なバージョンをダウンロードします。

settings.gradle

このファイルは、プロジェクトを構成するすべてのモジュールを参照します。

gradle.properties(プロジェクトプロパティ)

このファイルには、プロジェクト全体の構成情報が含まれています。デフォルトでは空ですが、このファイルに追加することで、プロジェクトにさまざまなプロパティを適用できます。

local.properties(SDKの場所)

このファイルは、Android SDKインストールがどこにあるかをAndroid Gradleプラグインに伝えます。

注意: local.properties Android SDKのローカルインストールに固有の情報が含まれています。つまり、このファイルをソース管理下に置かないでください。

推奨読書-Tutsplusチュートリアル

このことから、g​​radleがよくわかりました。


1
リンクのみの回答は推奨されないことに注意してください。SOの回答は、ソリューションの検索のエンドポイントである必要があります。参照としてリンクを維持しながら、ここにスタンドアロンの概要を追加することを検討してください。
kleopatra

30

Gradleは、プログラムのソースコードをビルドするビルドツールの一種です。したがって、Android Studioの重要な部分であり、アプリケーションの開発を開始する前にインストールする必要があります。

最初のプロジェクトを作成するときにAndroid Studioが代わりにインストールするため、個別にインストールする必要はありません。


4
プログラムのソースコードをビルドするとはどういう意味ですか?それは開発者の仕事ではないですか?
committedandroider

この答えは言い方が全く間違っています。Gradleは、Android Studioにバンドルされているパッケージツールなので、apkをビルドするだけで対応できます。ソースコードは常にコンパイラーによってビルドされ、それ以外のものはありません。
AutomEng 2015年

まだ別の質問から、信頼できるインターネット接続がないとGradleは正しく機能しないようですが、これは修正されるまでAndroid Studioを破棄しなければならないということですか?
Michael

2
@committedandroider:開発者の仕事はしているの書き込みではない、ソースコードをビルドし、それを。システム開発効率向上では、プロセスを意味する単語「ビルド」を使用するパッケージングコンパイル最終的にソースコードを製品パッケージまたは実行
MestreLion

1
@MestreLion笑私は...人々は、私はこのチャットサーバーを構築し、そのprojects-のソースコードを書くことに関連して「建物」を使用しているため、かなりこのアプリはにして、再び混乱していた
committedandroider

26

定義:: Gradleはsmaller in sizetargeting specific requirements特定の構成の特定のデバイス向けのビルドを作成するためにプロジェクトのリソースを管理するためのツールと柔軟性を開発者に提供する構造化された構築メカニズムとして説明できます


基本構成

  1. minimumSdk
  2. maximumSdk
  3. targettedSdk
  4. versionCode
  5. versionName

ライブラリ:: 要件に応じて、Androidライブラリやその他のサードパーティライブラリを簡単に追加できます。これは以前の面倒な作業でした。ライブラリが既存のプロジェクトに適合しない場合、開発者は、ライブラリを追加できるようにプロジェクトに変更を加えるための適切な解決策を見つけることができるログを表示されます。その依存関係の1行のみ


ビルドのバリエーションの生成

ビルドタイプをビルドフレーバーと組み合わせて、さまざまなビルドバリアントを取得する

 ====================                         ====================
|     BuildTypes     |                       |   ProductFlavours  |
 --------------------  ====================== --------------------
|  Debug,Production  |      ||       ||      | Paid,Free,Demo,Mock|
 ====================       ||       ||       ==================== 
                            ||       ||
                            VV       VV
 =================================================================
|           DebugPaid, DebugFree, DebugDemo, DebugMock            |
|  ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
 =================================================================

サイズを小さくする

Gradleは、未使用のリソースと未使用のものを統合ライブラリから削除することにより、生成されたビルドのサイズを削減するのに役立ちます


権限の管理

要件に基づいて特定のシナリオで特定の権限を追加することにより、特定のビルドに特定の権限を指定できます


特定のデバイス向けのビルド

特定の密度と特定のAPIレベルを含む特定のデバイスのビルドの生成を管理できます。これは、複数のタイプのデバイスにわたる要件に応じて、アプリストアでの製品の展開に役立ちます


良い参照

Vogellaチュートリアル


25

Gradleについて知っておくべきことはすべてここにあります: Gradle Plugin User Guide

新しいビルドシステムの目標

新しいビルドシステムの目標は次のとおりです。

  • コードとリソースを簡単に再利用できるようにする
  • multi-apkディストリビューションまたはアプリケーションのさまざまなフレーバーのために、アプリケーションのいくつかのバリアントを簡単に作成できます。
  • ビルドプロセスの構成、拡張、カスタマイズを簡単にする
  • 優れたIDE統合

なぜGradleなのか?

Gradleは高度なビルドシステムであり、プラグインを介してカスタムビルドロジックを作成できる高度なビルドツールキットです。

Gradleを選択させた機能の一部を以下に示します。

  • ビルドロジックを記述および操作するためのドメイン固有言語(DSL)
  • ビルドファイルはGroovyベースであり、DSLを介して宣言要素を混在させ、コードを使用してDSL要素を操作してカスタムロジックを提供できます。
  • Mavenおよび/またはIvyによる組み込みの依存関係管理。
  • 非常に柔軟です。ベストプラクティスの使用を許可しますが、独自の方法を強制しません。
  • プラグインは、使用するビルドファイル用に独自のDSLおよび独自のAPIを公開できます。
  • IDE統合を可能にする優れたツールAPI

25

2つのチュートリアルを参考にして、答えを 1つ2つ記述します

Gradleは、汎用の宣言型ビルドツールです。ビルドスクリプトで実装したいほとんどすべてのものをビルドするために使用できるため、これは汎用です。ビルドファイルに多くのコードを表示したくないので、それは宣言的です。これは、読み取り可能ではなく、メンテナンスも容易ではありません。したがって、Gradleは規則の概念とシンプルで宣言型のビルドを提供すると同時に、ツールを適応可能にし、開発者が拡張できるようにします。また、デフォルトの動作やさまざまなフックをカスタマイズしてサードパーティの機能を追加する簡単な方法も提供します。

Gradleは両方のツールの優れた部分を組み合わせ、追加機能を提供し、Groovyをドメイン固有言語(DSL)として使用します。ビルドライフサイクルや使いやすさなどのMaven機能を備えたAntツールのパワーと柔軟性を備えています。

なぜGradleなのか?なぜ今なのか?

ビルドツールの応答は、非標準の拡張メカニズムを通じてスクリプト機能を追加することです。最終的には、スクリプトコードとXMLを混在させるか、ビルドロジックから外部スクリプトを呼び出します。時間の経過とともにカスタムコードを追加する必要があることは容易に想像できます。その結果、必然的に偶発的な複雑さを招き、保守性が枠を超えてしまいます。

プロジェクトのリリースバージョンをビルドするときに、ファイルを特定の場所にコピーするとします。バージョンを特定するには、プロジェクトを説明するメタデータの文字列を確認します。特定の番号付けスキーム(たとえば、1.0-RELEASE)と一致する場合、ファイルをポイントAからポイントBにコピーします。外部から見ると、これは簡単な作業のように聞こえる場合があります。XMLに依存する必要がある場合、この単純なロジックを表現する多くの従来のツールのビルド言語は、かなり難しくなります。

Javaビルドツールの進化

JavaビルドロジックはXMLで記述する必要があります。XMLは階層データを記述するのに最適ですが、プログラムフローと条件付きロジックの表現には不十分です。ビルドスクリプトが複雑になるにつれて、ビルドコードの維持は悪夢になります。

Antでは、JARターゲットをコンパイルターゲットに依存させる。Antはプロジェクトの構成方法に関するガイダンスを提供していません。Antは最大限の柔軟性を可能にしますが、Antは各ビルドスクリプトを一意にし、理解しにくくします。プロジェクトに必要な外部ライブラリは、中央の場所からプルする自動化メカニズムがないため、通常はバージョン管理にチェックインされます。

2004年7月にリリースされたMaven 1は、そのプロセスを緩和しようとしました。標準化されたプロジェクトとディレクトリ構造、および依存関係管理を提供しました。残念ながら、カスタムロジックの実装は困難です

Gradleはその世代のビルドツールにぴったりと適合し、最新のビルドツールの多くの要件を満たします(図1)。表現力豊かなDSL、コンベンションオーバーコンベンションアプローチ、強力な依存関係管理を提供します。これは、XMLを放棄し、ビルドロジックを定義する動的言語Groovyを導入するための正しい動きです。説得力がありますね。

Gradleは、他のビルドツールの優れた機能を組み合わせています。

ここに画像の説明を入力してください

Gradleの魅力的な機能セット

ここに画像の説明を入力してください

AntやMavenではなくGradleを使用してJavaプロジェクトを構築する理由

Androidのデフォルトのビルドツール(およびJVM上の新しいビルドツールのスター)は、複雑な多言語ビルドのスクリプト作成を容易にするように設計されています。AntまたはMavenを使用している場合は、変更する必要がありますか?

ビルドスクリプト内でGradleのパワー機能をロック解除するための鍵は、下の画像に示すように、ドメインモデルを見つけて適用することです。 ここに画像の説明を入力してください

Gradleは、企業のビルドに固有のすべての要件を知ることはできません。Gradleは、フックをライフサイクルフェーズに公開することで、ビルドスクリプトの実行動作を監視および構成できます。

Gradleは、Groovyに実装されたDSLを公開することにより、そのモデルの語彙を確立します。複雑な問題ドメインを処理する場合、この場合、ソフトウェアを構築するタスク、共通言語を使用してロジックを表現できるタスクは、強力なツールになることがあります。

別の例は、外部ライブラリへの依存関係を表現する方法です。これは、ビルドツールによって解決される非常に一般的な問題です。すぐに使用できるGradleには、ビルドスクリプト用の2つの構成ブロックが用意されており、そこから取得する依存関係とリポジトリを定義できます。標準のDSL要素がニーズに合わない場合は、Gradleの拡張メカニズムを通じて独自の語彙を導入することもできます。

他のビルドツールとの統合

下の画像に示すように、Gradleは前任者のAnt、Maven、Ivyでうまく機能します。

ここに画像の説明を入力してください

ビルドからデプロイメントまでのプロジェクトの自動化

ここに画像の説明を入力してください

画像:デプロイメントパイプラインのステージ。

  • コードをコンパイルする

  • 単体テストと統合テストの実行

  • 静的コード分析の実行とテストカバレッジの生成

  • ディストリビューションを作成する

  • ターゲット環境のプロビジョニング

  • 成果物の展開

  • 煙と自動機能テストの実行

2つのチュートリアルを参考にして、答えを 1つ2つ記述します


1
さらに、ご使用のマシンまたはAndroid Studioがインストールされていないマシン(継続的インテグレーションサーバーなど)のコマンドラインからAndroidアプリをビルドできます。
jettimadhuChowdary 2018年

23

Gradleはビルドシステムです。ビルドシステムは、プログラムのコンパイルプロセスを自動化するように設計されたソフトウェアツールです。ビルドシステムにはさまざまな形式があり、さまざまなソフトウェアビルドタスクに使用されます。その主な目的は、実行可能ファイルを効率的に作成することです。

もう1つの関連用語は、ビルドの自動化です。これは、ソフトウェアビルドの作成を自動化するプロセスと、コンピューターのソースコードをバイナリコードにコンパイルする、バイナリコードをパッケージ化する、自動テストを実行するなどの関連プロセスです。

他の言語向けの同様のビルドシステムはほとんどありません(完全なリストはこちらをご覧ください):

  1. Apache AntとApache Maven-Java
  2. sbt(Simple Build Tool)-Scala(Playフレームワークなど)
  3. AAP-Pythonベースのビルドツール
  4. レイク(Apache Builder)-Ruby
  5. Clojureのライニンゲン

17

私は、議論の余地があるリスクを冒して、Android Studio / Gradleエクスペリエンスがなぜそれほど悪いのかという問題があると思います。

Clojureの典型的な経験:

  • project.cljにリストされている依存関係を持つプロジェクトをダウンロードします。
  • LeiningenはClojarsとMavenのおかげで依存関係を取得しています。
  • プロジェクトがコンパイルされます。

Android Studio / Gradleの典型的なエクスペリエンス:

  • 「Eclipseプロジェクトをインポートする」。
  • OKプロジェクトがインポートされました。
  • Gradleはそれを実行しています...待機...待機...待機... Gradleが終了しました。
  • コンパイル... Xが何なのかわからない/ Yライブラリが見つからないため、コンパイルできません。

これがGradleの責任かどうかはわかりません。しかし、「Eclipseプロジェクトからのインポート」はかなり不安定なようです。Gradleの洗練された機能とビルドシステムの利点のすべてについて、Android Studioは、Eclipseからビルドの依存関係またはビルドプロセスをうまくインポートしていないようです。

完全な依存関係グラフのインポートに失敗した場合は通知されません。Android Studioには、問題の解決方法に関する有用なヘルプやヒントはありません。Eclipseフォルダーを手動で確認できる場所はわかりません。どのライブラリが不足しているように見えるかはわかりません。または、Mavenなどを検索するのに役立ちます。

2016年には、Leiningen / Clojars、ノードのnpm、Pythonのpip、Debian apkg(他の言語やシステム用の同様のパッケージマネージャーがたくさんあるなど)はすべて美しく動作します...依存関係の欠落は過去のものです。

Androidを除く。Android Studioは、今でも依存関係の欠如を経験しているように見える唯一の場所です。

私はこれがグーグルのせいだと言いがちです。彼らは、堅牢な変換プロセスを生成せずにEclipseからAndroid Studio / Gradleにシフトすることをキャバリアで決定したとき、Androidエコシステム(および数千の既存のAndroidプロジェクト/オンラインチュートリアル)を壊しました。プロジェクトがEclipseで動作している人々は、それらをASに適応させていません(おそらくそれが彼らの苦痛のためです)。そして、それらのプロジェクトをASで使用しようとする人々は、同じ問題に直面しています。

とにかく、Gradleがこの超強力なビルドシステムである場合、なぜSDKマネージャーで他の多くの依存関係をまだ管理しているのですか?たとえば、ndkが必要なプロジェクトでGradleファイルにこれを指定して、必要なときに自動的にインストールされてビルドされるようにできないのはなぜですか?NDKはなぜ特別なのですか?ターゲットプラットフォームについても同様ですか?プロジェクトをチェックして、裏で並べ替えるのではなく、IDEに明示的にインストールするのはなぜですか?


4
Gradleはひどいビルドシステムであることに、私は完全に同意します。これは、Android StudioをX-CodeやVisual Studioよりもはるかに劣らせるコンポーネントです。これらは舞台裏でシステムを「構築」する必要があることを理解していますが、私は彼らの内面を知る/ケアする/いじくり回す必要はありません。一方、GradleはAndroid Studioの更新ごとに壊れるようで、クラスを追加するだけでもシステムを停止させます。他のIDEはそれを行いません。
csmith 2016年

14

Gradle プラグインを介してカスタムビルドロジックを作成できる高度なビルドシステムおよび高度なビルドツールキットです。

利点:

  • Dsl-groovyに基づくドメイン固有の言語
  • DAG-有向非巡回グラフ
  • インクリメンタルビルド
  • 拡張可能なドメインモデル
  • Gradleは常に最新です
  • タスクが実行される前に、Gradleはタスクの入力と出力のスナップショットを取得します。
  • スナップショットが変更されたか、存在しない場合、Graldeはこのタスクを再実行します。

マニフェストエントリ

DSLを介して、次のマニフェストエントリを構成できます。

ビルドバリアント

デフォルトでは、Androidプラグインはプロジェクトを自動的にセットアップして、アプリケーションのデバッグバージョンとリリースバージョンの両方をビルドします。

依存関係

  1. ローカルの依存関係:

JARファイルなど、モジュールが依存するローカルファイルシステムにバイナリアーカイブがある場合は、そのモジュールのビルドファイルでこれらの依存関係を宣言できます。

  1. リモートの依存関係:

最初にリポジトリをリストに追加し、次にMavenまたはIvyがアーティファクトを宣言する方法で依存関係を宣言する必要があります。


13

GradleはGroovy JVM言語にとって、Javaにとってのアリです。基本的には、Groovyのビルドツールです。Antとは異なり、完全なGroovy言語に基づいています。たとえば、GradleスクリプトでGroovyスクリプトコードを記述して、特定のドメイン言語に依存するのではなく、何かを行うことができます。

IntelliJの特定の統合はわかりませんが、特定の「ビルド」言語プリミティブを記述してGroovy言語の一部になったようにGroovyを「拡張」できると想像してください。(Groovyのメタプログラミングはそれ自体が全体の議論です。)IntelliJ / GoogleはGradleを使用して非常に高水準のビルド言語を構築できますが、それは拡張可能なオープンスタンダードに基づいた言語ビルドです。


2
「Groovysビルドツール」ではありません-DSLがGroovyの上に構築されている多目的ビルドツールです
martyglaubitz

10

Gradleは、依存関係を管理し、カスタムビルドロジックを定義できるAndroid用の高度なビルドツールキットです。機能は

  • ビルドプロセスをカスタマイズ、構成、および拡張します。

  • 同じプロジェクトを使用して、さまざまな機能を持つアプリの複数のAPKを作成します。

  • コードとリソースを再利用します。

参照する


9

Gradleは、Androidプロジェクトだけでなく、さまざまな環境に統合できる自動ビルドツールキットです。

ここでは、gradleでできることをいくつか紹介します。

  • GradleにはAndroid Studioプロジェクトのデフォルト設定があるため、新しいプロジェクトには最小限の設定が必要です。

  • 依存宣言。ローカルサーバーまたはリモートサーバーでホストされている依存関係jarファイルまたはライブラリファイルを宣言できます。

  • Gradleは、プロジェクトのソースからテストディレクトリとテストAPKを自動的に生成します。

  • keyPasswordand などの必要なすべての情報をkeyAliasGradleビルドファイルに追加すると、Gradleを使用して署名済みAPKを生成できます。

  • Gradleは、単一のモジュールから、パッケージとビルド構成が異なる複数のAPKを生成できます。


8

Android Studioでは、Gradleは依存関係を管理し、カスタムビルドロジックを提供することでAndroidパッケージ(apkファイル)をビルドするために使用されるカスタムビルドツールです。

APKファイル(Androidアプリケーションパッケージ)は、特別にフォーマットされたzipファイルで、

  • バイトコード
  • リソース(画像、UI、xmlなど)
  • マニフェストファイル

apkファイルは署名され、ADB(Android Debug Bridge)を使用してデバイスにプッシュされ、そこで実行されます。


6

Gradleはカスタムのビルドツールで、APKのビルドに使用されるか、アプリケーションパッケージキットとして知られています。


4

@Brianガードナー:

Gradleは、プログラミングプロジェクト用の広範なビルドツールおよび依存関係マネージャーです。Groovyに基づくドメイン固有の言語があります。Gradleは、Java、Android、Scalaを含む多くのタイプのプロジェクトに対して、規約ごとのサポートも提供しています。

Gradleの機能:

  1. 依存関係管理
  2. GradleからAntを使用する
  3. Gradleプラグイン
  4. Javaプラグイン
  5. Androidプラグイン
  6. マルチプロジェクトビルド

3

Gradleは、複数のソース、プロジェクト、ライブラリなどからの数万行のコードを含む複雑なAndroidプロジェクトの構築を自動化することを可能にするものです。条件付きで、多数の構成仕様に基づいて複数の最適化されたAPKを生成できます。興味を持って、他の回答はGradleのこの側面の詳細を提供します。

ただし、Android開発に不慣れな場合は、99%のケースでGradleがプロジェクトのビルドを妨げます。これは不可解で複雑なシステムであり、Androidビルドプロセスを効果的に難読化し、基本的に経験の浅い開発者が利用できないようにします。つまり、単純なエントリレベルのAndroidアプリを構築するために、疑いのない初心者は、彼らが交渉しなかった多くのことを研究して理解する必要があるかもしれませんといった:

  • Android APKの構造とエコシステム
  • Android Studio
  • Javaクラスパスと依存関係
  • グルーヴィー
  • Gradleビルドスクリプト
  • 他の多くの複雑で興味深いテクノロジー

これらすべては、Android開発者が知るのに興味深く有用ですが、それらは簡単ではなく、参入への手ごわい障壁となっています。OPがこの質問をするきっかけとなったのは、シンプルなアプリを作成しようとしてあまりにも長い時間を費やしてGradleによって絶えず妨害された後、新参者の開発者を必然的に襲った欲求不満の感情だと思います。この問題は、これらのすべてのテクノロジーで利用できる非常に技術的なドキュメントが圧倒的に多いため、ひどく悪化しています。また、大量の開発ニーズに対して、Gradleは過剰です。

もう1つの方法は、Android SDKで利用可能なツールを自動化してプロジェクトを構築するシェルスクリプトを記述することです。このアプローチの利点は数多くあります。まず第一に、ビルドプロセスとAndroidエコシステムを調査および理解するためのおそらく最良の方法であり、アプリのビルド方法を完全に制御することができます。ただし、このアプローチは、Androidを試してみる経験の浅い初心者よりも、深く取り替えることができないテックヘッドに適しています。

存在しないことで目立つのは(そのようなものがある場合はお知らせください)エントリーレベルの軽量IDEであり、機能セットが削減されているため、ビルドプロセスを単純化すると同時に(NetBeansやEclipseではなく)、おそらくそれを覆い隠すことはありません。 Gradleを使用します(Antの何が問題でしたか)。いくつかの一般的な構成に準拠したAPKを簡単に生成し、完全にAndroid Studioプロジェクトに展開できるプロジェクト構造を使用することを容易にする必要があります。


1

簡単に言えば、Gradleは、Android Studioが2つの重要なプロセスを実装するために提供するツールです。

  1. プロジェクトを構築する
  2. AndroidManifest.xml、resフォルダー、およびバイナリコードをAPKと呼ばれる特別にフォーマットされたzipファイルにパッケージ化します

1

検索結果Webからの注目のスニペットAndroid | ビルド。グラドル。Gradleはビルドシステム(オープンソース)であり、ビルド、テスト、デプロイメントなどを自動化するために使用されます。たとえば、いくつかのファイルをあるディレクトリから別のディレクトリにコピーする簡単なタスクは、実際のビルドの前にGradleビルドスクリプトで実行できます。プロセスが発生します。


1

Android Studioでは、GradleはAndroidアプリケーションプロジェクトのビルドに使用されるため、ビルドシステムの役割を果たします。Android Studioが登場する前は、Eclipseでコマンドラインツールを使用してアプリケーションをコンパイルおよびビルドしていましたが、すぐにGUIベースの手順に移行し、ANTを使用してEclipseでAndroidアプリケーションをビルドおよび実行していました。すべてのAndroidアプリケーション開発ツールは、リソース、Javaソースコード、外部ライブラリをコンパイルし、それらを組み合わせて最終的なAPKにする必要があります。

Gradleはビルドシステムであり、コードのコンパイル、テスト、デプロイ、およびコードの.dexファイルへの変換を担当し、デバイス上でアプリを実行します。

Android StudioにはGradleシステムがプリインストールされているため、プロジェクトをビルドするために追加のランタイムソフトウェアをインストールする必要はありません。あなたがクリックするたびに走るAndroid Studioでボタンと、gradleタスクが自動的にトリガーされ、プロジェクトのビルドが開始されます。gradleがタスクを完了すると、アプリがAVDまたは接続されたデバイスで実行されます。

Gradleのようなビルドシステムはコンパイラやリンカーなどではありませんが、コンパイル、ファイルのリンク、テストケースの実行、そして最終的にはコードをAndroidアプリケーションのapkファイルにバンドルする操作を制御および監視します。

2つのがありbuild.gradleのあらゆるアンドロイドスタジオプロジェクトのファイルが一つはあるため、アプリケーションや他の用でプロジェクトレベル(モジュールレベル)ビルドファイル。

ビルドプロセスでは、コンパイラはソースコード、リソース、外部ライブラリJARファイル、およびAndroidManifest.xml(アプリケーションに関するメタデータを含む)を取得し、バイトコードを含む.dex(Dalvik実行可能ファイル)ファイルに変換します。そのバイトコードは、アプリを実行するすべてのAndroidデバイスでサポートされています。次に、APKマネージャーは.dexファイルと他のすべてのリソースを単一のapkファイルに結合します。APKパッケージャ兆候デバッグまたはリリースAPK、それぞれのデバッグまたはリリースのキーストアを使用しました。

デバッグ apkは通常、テスト目的で使用されます。または、開発段階でのみ使用されると言えます。アプリに必要な機能が完了し、外部使用のためにアプリを公開する準備ができたら、リリースAPKが必要です、リリースキーストアを使用して署名され。

では、gradleファイルに光を当てましょう。

setting.gradle setting.gradle(Gradle setting)ファイルは、アプリで使用されるすべてのモジュールを指定するために使用されます。

build.gradle(プロジェクトレベル) トップレベル(モジュール)のbuild.gradleファイルは、プロジェクトレベルのビルドファイルであり、プロジェクトレベルでビルド構成を定義します。このファイルは、Androidアプリケーションプロジェクトのすべてのモジュールに構成を適用します。

build.gradle(アプリケーションレベル) アプリケーションレベルのbuild.gradleファイルは、androidプロジェクトの各モジュールにあります。このファイルには、アプリケーションIDとしてのパッケージ名、バージョン名(apkバージョン)、バージョンコード、特定のアプリケーションモジュールの最小およびターゲットSDKが含まれています。外部ライブラリー(jarファイルではない)を含める場合は、それをアプリレベルのGradleファイルで言及して、アプリケーションの依存関係としてプロジェクトに含める必要があります。

注:特定のアプリケーションが、スマートフォン、タブレット、TVなどの個別のモジュールのバリエーションで開発されている場合は、すべてに対して個別のGradleファイルを作成する必要があります。コマンドラインツールを使用してGradleシステムを起動することもできます。次のコマンドを使用します。

./gradlew build-(ビルドプロジェクト)
./gradlew clean build-(ビルドプロジェクトの完全なスクラッチ)
./gradlew clean build-(テストを実行)
./gradlew wrapper-(使用可能なすべてのタスクを表示する)


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.