1. はじめに
少し前に、私のカルト グループで誰かが質問しました。「Android を学んだばかりで、Gradle がわかりません。たくさんの情報を読んだのですが、まだ漠然としか理解していません。チャン兄弟が教えてくれるといいのですが」思いの外、グループには人数が多く、全員が同じ感想を持ち、グループ内で本を勧める人がいて、この本を読めば十分だと言う人もいました。正直に言うと、私は本を読むことに反対はしませんが、私が反対しているのは、知識点を理解するには本を読まなければならず、あまりにも非効率なので、良心を持って何気なく言いました。 「グループで開いてみませんか?」「Gradle の基本的な概念を広めるために講義をしてもいいですか?」 思いがけず、普段潜っている人たちが全員出てきて「666…」と答えました。時間があまりないので、言った瞬間に後悔しましたが、結局、その夜残業から帰宅すると、私はグループに仕事を広め始めました。何の準備もせずに1時間以上授業を続けた後、思いがけず全員が口をそろえて「とても効果があった」と報告し、私が打ち込んだチャット記録をまとめてくれた思慮深い人たちがたくさんいることに本当に満足していました。このトピックは多くの読者にとって役立つと思いますので、メモに基づいていくつかの追加と改善を加えてグループにまとめました。この記事は役に立ちます!
2. ビルド ツールとは何ですか?
Gradle がビルド ツールであることは誰もが知っていますが、ビルド ツールとは何ですか?
多くのテキスト説明を理解するのは難しいと思います。ここでは、Android 開発を例として説明します。
私たちは過去に開発に Eclipse を使用していました。Eclipse が IDE (統合開発環境) であることは誰もが知っています。Eclipse はもともと Java 開発に使用され、Android は Java 言語に基づいているため、当初 Google は Android がそれを可能にすることを期待していました。この需要に応えるために、Google は ADT (Android Developer Tools) というものを開発しました。これは、Eclipse 時代から来た人にとっては、ADT によく知られていると思います。適切なコードをコーディングするだけで済み、コンパイル、実行、署名、パッケージ化などのプロセスを Eclipse 上で直接実行できます。この背後にある作業はすべて ADT の作業です。ある意味、ADT は私たちの構築ツールです。
Google が Android Studio を立ち上げて以来、ビルド ツールとして Gradle をデフォルトで使用することを発表し、その後 ADT の更新を中止しました。それ以来、Gradle は Android 開発者の視野に入り、私も Gradle に触れて学び始めました。 ASのベータ版。
一般的に、ビルド ツールには、上記のコンパイル、実行、署名、パッケージ化などに加えて、依存関係管理機能もあります。Eclipse を例として考えてみましょう。サードパーティのライブラリを使用する必要がある場合、通常は最初に jar ファイルをダウンロードし、次にその jar ファイルを libs ディレクトリに追加すると、プロジェクト内でそのファイルを参照できるようになります。しかし、この管理方法は面倒だと思いませんか? サードパーティのライブラリが更新された場合、最新の Jar ファイルをダウンロードして、参照するライブラリが少なくても問題ありません。参照するサードパーティライブラリが多すぎると面倒ですデス、この方法は依存のみに依存しており、管理はしていないと言えます。
これで、Gradle がサードパーティ ライブラリを参照する方法については誰もがよく知っています:
compile 'com.android.support:support-v4:24.0.1'
このような依存関係メソッド、とても便利ではないでしょうか。バージョン番号を変更するだけで、ソースアドレスを直接確認できます。これはいわゆる依存関係の管理です。
つまり、ビルド ツールは、プロジェクトのコンパイル、実行、署名、パッケージ化、依存関係管理などを行うための関数のコレクションです。従来のビルド ツールには Make、Ant、Maven、Ivy などが含まれますが、Gradle は新世代です。自動ビルドツールの。
3. Gradle とは何ですか?
上で述べたように、Gradle は独立したプロジェクトであり、AS や Android とは何の関係もありません。 /、Ant と同様、Maven や Maven などのビルド ツールはすべて XML に基づいて記述されており、Gradle は Groovy と呼ばれる言語を使用します。構文は Java 構文に非常に似ていますが、動的言語に基づいています。 Java には多くの改良が加えられ、より簡潔かつ柔軟に使用できるようになり、Gradle は Maven および Ivy と完全に互換性があります。これは基本的に、Maven と Ivy が主に Java アプリケーション用に起動されることを宣言します。現在、Android、C、C++ もサポートしています。
4. Gradle と Android Studio の関係
上で述べたように、Gradle は Android Studio とは何の関係もありませんが、Google が AS を立ち上げたとき、Gradle はビルド ツールとして選択されました。 AS 上で Gradle を使用できるようにするために、Google は Android Gradle Plugin と呼ばれる AS 用のプラグインを作成したため、このプラグインのおかげで AS 上で Gradle を完全に使用できるようになります。プロジェクトのルート ディレクトリに build.gradle ファイルがあり、次のコードが含まれています:
classpath 'com.android.tools.build:gradle:2.1.2'
これは Gradle プラグインに依存するコードです。その後ろにあるバージョン番号は Android Gradle プラグインのバージョンを表しており、Gradle のバージョンとは関係ありません。 。 Android gradle プラグインの詳細については、ここでご覧いただけます。android gradle プラグインの各バージョンの特定の変更点と特定の機能のリストは次のとおりです。 Gradle Wrapper
デフォルトでプロジェクトが作成され、「Run on AS」をクリックすると、デフォルトで Gradle が直接インストールされます。ただし、実際には、この Gradle は本物の Gradle ではありません。これは Gradle Wrapper と呼ばれ、Gradle パッケージ化を意味します。これは何を意味しますか? ローカルに複数のプロジェクトがあり、1 つはまだ Gradle 1.0 バージョンを使用している、もう 1 つは Gradle 2.0 を使用しているとします。ただし、両方のプロジェクトを同時に実行したい場合は、Gradle 1.0 のみがインストールされている場合は間違いなく機能しないため、この問題を解決するために、Google は指定されたバージョンを構成する Gradle Wrapper のコンセプトを立ち上げました。これにより、各プロジェクトは異なる Gradle バージョンでのプロジェクトの構築をサポートできます。
Gradle Wrapper の概念を理解すると、次の操作はすべて Gradle Wrapper に基づいて行われます。
AS で初めてプロジェクトを作成すると、デフォルトで Gradle が自動的にダウンロードされます。このプロセスは非常に長く、驚くほど時間がかかりますが、最初の操作後は問題ありません。次のステップでは、使用方法を説明します。コマンドラインでテストしてみてください。ターミナルまたは AS のターミナルでプロジェクトのディレクトリに移動し、「./gradlew -v」と入力します (Win ユーザは直接「gradlew -v」と入力します)。現在のプロジェクトで使用されている gradle のバージョン。gradlew は gradle ラッパーの略称です。初めてコマンド ラインを実行すると、ダウンロード プロンプトが表示され、その後、ドットが 1 つずつ出力されます。ネットワーク速度によって異なりますが、数分から数十分の範囲です。
私の AS はすでにプロジェクトを正常に実行できていますが、なぜコマンドラインから再度ダウンロードする必要があるのでしょうか? 理論的には、このような疑問は常にありました。しかし、実際には、それはバグである可能性があります。
ダウンロードが完了し、 ./gradlew -v と入力して次の結果が表示された場合は、プロジェクトに問題がないことがわかります。それ以外の場合は、プロジェクトの構成に問題があります。
6. Android プロジェクトに含まれる Gradle 設定ファイル完全な Android プロジェクトに含まれる基本的な Gradle 関連の設定ファイルを簡単に紹介するために、GitHub で非常に早い段階でオープンソース化した 9GAG プロジェクトを例に挙げてみましょう。
赤いマークの部分を上から下まで段階的に分析してみましょう:
http://tools.android.com/tech-docs/new-build-system
このファイルは、app フォルダーの下にあるこのモジュールの Gradle 構成ファイルです。これは、このモジュールの最も重要な Gradle 構成ファイルとみなすこともできます。プロジェクト全体の内部の具体的な構成については後ほど説明します。
9GAG/app/build.gradle
9GAG/extras/ShimmerAndroid/build.gradle
Gradle ディレクトリとダウンロード パスがその中で宣言されていることがわかります。また、現在のプロジェクトで使用されている Gradle バージョンも確認できます。通常、これらのデフォルトのパスは変更されません。ここで指定された gradle バージョンが正しくないことも、多くのパッケージのインポートが失敗する理由の 1 つです。
9GAG/build.gradle
このファイルは、プロジェクト全体の gradle 基本設定ファイルです。デフォルトの内容は、android gradle プラグインのバージョンを宣言します。 9GAG/settings.gradle このファイルは、主に gradle に追加する必要があるいくつかのモジュールを宣言します。7.ダウンロードしたオープンソース プロジェクトを正しくインポートするにはどうすればよいですか?
GitHub で優れたオープンソース プロジェクトを見つけて、それをダウンロードして学習したいと思うことがよくありますが、通常、最初のステップはソース コードを AS にインポートしてから実行することです。効果を確認するために実行しますが、操作が失敗することがよくあります。ここでは、オープンソース プロジェクトをインポートする正しい方法を説明します。
下载一个Demo,先打开每个 module下的 gradle 文件,即 app 目录下的 build.gradle 以及各个 library 下的 build.gradle ,首先查看 compileSdkVersion 和 buildToolsVersion,因为有些时候你本地的版本和下载的版本不一致,那么就会导致失败。
然后就是检查 gradle-wrapper ,Google 有些时候要求不同的 AS 支持不同的 gradle 版本。比如 AS 1.0 的时候要求必须使用 gradle 1.x 的版本,等到 AS 2.0 的时候,Google 不支持 gradle1.x 的版本,这个时候你必须手动更新下 android gradle plugin 的版本,然后重新同步下。
检查以上两个地方基本就可以导入并运行了,如果还有其他问题,那可能就是环境或者项目本身的问题了。
8. 认识下几个命令
上面提到了,假设我们没有 IDE ,只有类似 Sublime、Atom、Vim这种轻量编辑器怎么办?那我们就没法开发 Android 了么?然而只要有构建工具,不需要 IDE 我们一样有办法开发,这个时候我们就需要用到几个有用的 Gradle 命令了:
./gradlew -v 版本号 ./gradlew clean 清除9GAG/app目录下的build文件夹 ./gradlew build 检查依赖并编译打包
这里注意的是 ./gradlew build 命令把 debug、release 环境的包都打出来,如果正式发布只需要打 Release 的包,该怎么办呢,下面介绍一个很有用的命令 assemble , 如
./gradlew assembleDebug 编译并打Debug包 ./gradlew assembleRelease 编译并打Release的包